02 / SYSTEM2025–26
Coco Robot — ROS 2 Simulation Platform
ROS 2 differential-drive + manipulator simulation platform
Built on Humble and Gazebo Classic. Then Classic died, and the port became the project.
- Grew out of a Hut Labs internship — a pick-and-place ramp robot built by seven interns across two teams. My part was the manipulator; teammates built the ramp and base and led the ROS 2 / Gazebo integration.
- Mentor: Dr. Rajesh Kannan Megalingam.

THE PROBLEM
Before you trust a robot with hardware, you want its failures to be free. The platform had to prove out a full mobile manipulator — 4-wheel differential drive, 3-DOF arm, gripper — entirely in simulation, with the same control interfaces the real robot would use.
Halfway through its life, Gazebo Classic reached end-of-life. The platform's second act was surviving its own stack being deprecated underneath it.
THE SYSTEM
The robot is described in a URDF authored from CAD-derived meshes — not a downloaded model. ros2_control runs end to end: teleop publishes /cmd_vel, diff_drive_controller turns it into wheel velocities, Gazebo integrates the physics; the arm chain branches off through its own controller. The graph below is the actual message path.
Origin stack: ROS 2 Humble + Gazebo Classic — the version the IEEE paper validated. After Classic's EOL (January 2025), the whole platform was ported to ROS 2 Jazzy + Gazebo Harmonic on the ros_gz_bridge / ros_gz_sim integration pattern. The port is a feature, not a footnote: same robot, new middleware contract.
WHAT I BUILT
- The 3-DOF arm and gripper: URDF from CAD-derived meshes + joint control
- ros2_control and keyboard teleop for the manipulator
- The Humble/Classic → Jazzy/Harmonic port on ros_gz_bridge, after Gazebo Classic's EOL
- The simulation platform the IEEE ICRM 2025 paper is built on
MY SCOPE
- The manipulator — 3-DOF arm and gripper, its URDF from CAD-derived meshes, and joint control
- ros2_control and keyboard teleop for the arm
- The Humble/Classic → Jazzy/Harmonic port after Gazebo Classic's EOL (adapted the ros_gz_bridge stack)
- The simulation work behind the IEEE ICRM 2025 paper
WHAT BROKE
After the OS and ROS upgrade, DDS discovery went quiet — `ros2 topic list` returned nothing at all. The robot was fine; my mental model of the sim–ROS bridge wasn't. The fix was structural, not a flag: adopting the ros_gz_bridge / ros2 launch ros_gz_sim integration pattern that Harmonic actually expects.
Three smaller faults surfaced on the way: passive rear wheels behaving badly, the arm oscillating at spawn, and mixed wheel joint axes from the CAD import. All three were tracked down and fixed — the platform runs clean in simulation.
FIGURES

RESULT
- Peer-reviewed: the platform is the subject of an IEEE ICRM 2025 paper (Xplore & Scopus)
- Differential-drive navigation and 3-DOF manipulation validated fully in simulation
- Survived a middleware generation change: runs on ROS 2 Jazzy + Gazebo Harmonic post-port