Pick-and-place cycle in simulation
Control HMI (VLA console)
Context
First-year master's (MESI) project in a team of four (Daniel, Theresia, Arnaud, Hashem). The goal was to make a 6-axis igus ReBeL collaborative arm capable of pick-and-place tasks without manually programmed trajectories. The ground was not simple, a low-cost polymer cobot, shipped with an incomplete community ROS 2 driver and controlled through a poorly documented proprietary protocol (CRI). My scope was broad, reverse engineering the CRI protocol, motion planning and execution under MoveIt 2, integrating the SCHUNK gripper, the MATLAB simulation, experimental validation, and the project management (schedule, Gantt and financial summary). I also co-built the support cart with Hashem.
Approach / Solution
I closed the perception, decision, action chain on ROS 2 Humble. An Intel RealSense D435 camera coupled with a YOLO11n model locates the object in 3D, its coordinates are transformed into the robot frame, then MoveIt 2 solves the inverse kinematics and plans a collision-free trajectory. That trajectory runs on the igus controller through the CRI protocol over TCP/IP, down to grasping with a SCHUNK EGP 25 gripper. I first prototyped and validated the kinematics in a MATLAB simulation before porting the logic into a reusable object-oriented Python library with three layers (CRI, gripper, pick-and-place). The main roadblock stayed the CRI protocol. It took real reverse engineering, decoding the frames, telling the output commands apart, and handling the mandatory real-time heartbeat. The cell sits on a mobile cart that we designed in CAD and then assembled from Norcan aluminium profiles.
Results
The full chain works in reactive mode, detection, planning, execution, release, a repeatable cycle with no human intervention. The inverse kinematics converges on 100% of the scenario poses and MoveIt planning stays within a few hundred milliseconds. The arm's mechanical repeatability alone (about ±12 mm on this polymer cobot) is made non-critical by the vision loop, which recomputes the target on every cycle. On the open-source side, we released the first known ROS 2 library for the SCHUNK EGP 25 gripper on igus, and extended the community driver (real-time heartbeat, safety node). The architecture stays arm-agnostic and extensible toward Industry 4.0 assembly. I will not dress up the outcome. Over 20 trials the success rate is 60%, with failures traced to wrist singularities and detection edge cases, each documented with its fix path. The schedule also slipped against the plan. Planned from October 2025 to May 2026, the project eventually ran over into June. Machining the Norcan profiles by hand, drilling and tapping done manually, took about three unplanned days and remains the main source of delay. Without that time, the software was not finalized as intended and the HMI stayed at the functional-prototype stage. My takeaway, outsourcing the standard machining would have cost a few tens of euros more and saved those three days, with better precision. On method, validation criteria set upfront for each subsystem would have spared us repeated tests with no clear protocol. What I could still do, harden the detection on edge cases, avoid singularities through re-planning, and push the HMI to a real level of finish.
Project cost
| Item | Cost |
|---|---|
| Norcan cart (aluminium profiles) | 1,300 € |
| SCHUNK EGP 25 gripper | 2,100 € |
| Electronics (Raspberry Pi, screen, switch) | 300 € |
| Total purchases | 3,700 € |
All the equipment was provided by the Hall de Technologie of the University of Strasbourg.