Back Homepage

Industrial Robot Assembly Simulation

Python, OOP, Systems-Engineering, Leadership

Completed: 28 Oct 2025

Repository: https://github.com/marcus-frisch/IRA2

Within 41013 Industrial Robotics, my team members and I were tasked with creating a simulation of multiple 6DOF robots collaborating together to achieve a common goal. Our self-selected goal was to create a simulation of a flexible manufacturing line.

Granted this being a group assignment, I was worried about code quality and contribution from other team members. Therefore, I took the initiative to create a solid foundation for the project. I started by developing a robust object-oriented structure for the project. Each robot (and it's logic) is built from a common class that abstracts all the complicated 'coordination', 'safety' and 'gui' logic.

The IRA2 project is a comprehensive industrial robotics simulation framework designed to model a flexible manufacturing line. The system coordinates multiple autonomous robot stations to process items moving along a simulated conveyor. It serves as a testbed for developing and validating complex multi-robot control logic, trajectory planning, and safety systems in a risk-free virtual environment.

Developed as a modular Python-based platform, the simulation integrates the Robotics Toolbox for Python with a custom PySide6 control interface. This allows for real-time visualization of robot kinematics, concurrent station operations, and the simulation of critical safety events like emergency stops and light curtain breaches.

Key Contributions:

  • Modular Station Framework: Architected an object-oriented design where each "Station" runs its own logic thread, managing independent state machines for engaging, processing, and handing off items.
  • Custom Control Interface: Built a robust PySide6 (Qt) GUI that provides manual joint-level control, automation toggles, and safety monitoring for every robot in the cell.
  • Safety System Simulation: Implemented a "Supervisor" proxy in the GUI to simulate human interaction, triggering virtual Light Curtains and E-Stops to validate safety logic responsiveness.
  • Optimized Trajectory System: Developed a caching system for inverse kinematics solutions, saving calculated trajectories to CSVs to ensure smooth real-time performance without recalculation delays.

Technical Highlights

  • Multithreaded Architecture: Successfully orchestrated independent threads for the rendering loop, individual station logic, conveyor item management, and the GUI event loop.
  • Advanced Kinematics: Leveraged SpatialMath and RoboticsToolbox to solve inverse kinematics (IK) for 6-DOF robots (e.g., UR3), handling approach vectors and tool orientation.
  • Visual Feedback Integration: Created specific visual cues (engage/disengage markers) and "teleportation" logic to abstract complex conveyor physics while maintaining accurate logical flow.
  • Hardware-In-The-Loop Ready: The architecture isolates the logic layer (RoboStation) from the hardware/simulation layer, paving the way for deploying the same code to physical UR3 robots.

Technical skills

  • Robotics & Simulation: Python (Robotics Toolbox, SpatialMath, Swift), Inverse Kinematics, Trajectory Planning.
  • Software: Python (Multithreading, NumPy), PySide6 (Qt GUI Development), Object-Oriented Programming.
  • Systems: State Machine Design, Safety Logic (E-Stop, Light Curtains).
Project image Project image Project image