A ROS2 implementation for the SO101 follower robotic arm, providing complete integration with LeRobot framework including hardware interface, MoveIt motion planning, and topic-based control.
This repository contains ROS2 packages for controlling the SO101 follower arm robot. It includes:
- Robot Description: URDF/XACRO models with 3D meshes
- MoveIt Integration: Motion planning and execution
- Hardware Interface: Direct motor control via Feetech servos
- Topic-based Control: Flexible control interface
Robot description package containing:
- URDF/XACRO robot model
- 3D mesh files (.stl/.part)
- RViz visualization configuration
- Launch files for robot display
MoveIt configuration package with:
- Kinematic configuration
- Motion planning setup
- Controller configuration
- Collision detection setup
Hardware interface package providing:
- Motor control via Feetech protocol
- Calibration utilities
- Hardware abstraction layer
- LeRobot integration utilities
Generic topic-based control interface for:
- Flexible control architectures
- Custom control strategies
- Integration with external systems
- ROS2 Humble or later
- MoveIt2
- Python 3.8+
- Clone the repository:
git clone https://github.com/AgRoboticsResearch/Lerobot_ros2.git
cd Lerobot_ros2- Install dependencies:
rosdep install --from-paths src --ignore-src -r -y- Build the workspace:
colcon build
source install/setup.bashros2 launch so101_follower_description display.launch.pyros2 launch so101_follower_moveit demo.launch.pyros2 launch so101_hw_interface so101_hw.launch.pyros2 run so101_hw_interface so101_calibrateFor manual joint control and visualization with the hardware interface:
# Terminal 1: Launch robot visualization without GUI
ros2 launch so101_follower_description display.launch.py \
use_gui:=false \
joint_states_topic:=/so101_follower/joint_states
# Terminal 2: Start the motor bridge (hardware interface)
ros2 run so101_hw_interface so101_motor_bridge
# Terminal 3: Launch joint state publisher GUI for manual control
ros2 run joint_state_publisher_gui joint_state_publisher_gui \
--ros-args -r /joint_states:=/so101_follower/joint_commandsThis setup allows you to:
- Visualize the robot in RViz with real joint states from hardware
- Control joint positions manually using the GUI sliders
- Monitor real-time feedback from the Feetech servos
/so101_follower/joint_states: Real joint positions from hardware/so101_follower/joint_commands: Desired joint positions to hardware- Use topic remapping (
-r) to connect different components
- Connect Feetech servos via serial/USB interface
- Update motor IDs in
config/so101_calibration.yaml - Verify communication with
so101_motor_bridge
- Run calibration script:
so101_calibrate - Follow on-screen instructions to move joints
- Calibration data saved automatically
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions and support:
- Open an issue on GitHub
- Check the documentation
- Join our community discussions
- LeRobot - Main LeRobot framework
- SO101 Hardware - Original hardware design
Made with ❤️ for the robotics community