$ show wuphilipp/gello_software
GELLO is a general, low-cost teleoperation framework for robot manipulators. It uses a Dynamixel-based leader device to control various follower robots (Franka FR3, YAM, UR, xArm, Panda) in real-time via ZMQ-based distributed architecture. The system supports both simulation (MuJoCo) and real hardware, includes gravity compensation (FACTR) for YAM robots, and provides data collection pipelines for imitation learning. It also offers ROS2 integration for Franka FR3 with custom joint impedance controllers and gripper managers. The codebase is configuration-driven via YAML files and demonstrates strong engineering practices with pre-commit hooks, CI workflows, and reusable abstractions for robots, agents, and cameras.
The LLM identified 4 files worth highlighting for reuse:
A robust Dynamixel servo driver with automatic port detection, retry logic, and a fake fallback for testing. It encapsulates all hardware communication (sync read/write, torque control) and can be extracted for any Dynamixel-based project.
A standalone gravity compensation system using Pinocchio for real-time inverse dynamics. It includes joint limit barriers, null-space regulation, friction compensation, and teleop smoothing. Designed for the YAM robot but the pattern is reusable for any robot with a URDF.
Implements a ZMQ-based server for robot control and a client for agent commands. This decoupled pattern allows robot, agent, and camera processes to run independently and communicate over the network, enabling flexible distributed teleoperation setups.
A ROS2 joint impedance controller for Franka FR3 with motion generation, safety checks, and parameterized stiffness/damping. It demonstrates clean C++ ROS2 controller patterns and can be adapted for other Franka arms or similar impedance-controlled robots.