ROS2 driver and simulation support for the SO-100/101 robotic arm — a low-cost, high-capability 6-DOF manipulator perfect for research and education.
- ROS2 Humble native support with standard interfaces
- Gazebo Fortress simulation with accurate physics
- NVIDIA Isaac Sim integration for photorealistic sim and synthetic data
- MoveIt2 motion planning (coming soon)
- BNO085 IMU logging for end-effector tracking
- Simple Python API for quick prototyping
| Component | Spec |
|---|---|
| DOF | 6 axes |
| Reach | ~300mm |
| Payload | ~500g |
| Controller | ESP32 / Serial |
| Feedback | Servo encoders + IMU |
Works with both SO-100 and SO-101 variants.
# ROS2 Humble
sudo apt install ros-humble-desktop
# Dependencies
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers# Clone into your workspace
cd ~/ros2_ws/src
git clone https://github.com/ddlyRabbit/SO100-ROS2.git
# Build
cd ~/ros2_ws
colcon build --packages-select so100_ros2
source install/setup.bash# Gazebo
ros2 launch so100_bringup gazebo.launch.py
# Isaac Sim (requires Isaac Sim installed)
ros2 launch so100_bringup isaac.launch.py# Connect SO-100 via USB, then:
ros2 launch so100_bringup hardware.launch.py port:=/dev/ttyUSB0SO100-ROS2/
├── so100_description/ # URDF, meshes, materials
├── so100_bringup/ # Launch files
├── so100_control/ # ros2_control config
├── so100_moveit/ # MoveIt2 config (WIP)
├── so100_isaac/ # Isaac Sim USD assets
└── scripts/ # Utility scripts
└── BNO85_logger.py # IMU data logger
import rclpy
from so100_interface import SO100Arm
arm = SO100Arm()
arm.home()
arm.move_joint([0, -45, 90, 0, 45, 0]) # degrees
arm.move_cartesian(x=0.2, y=0.0, z=0.15)
arm.gripper(open=True)# Move to home position
ros2 service call /so100/home std_srvs/srv/Trigger
# Joint position command
ros2 topic pub /so100/joint_commands sensor_msgs/msg/JointState "..."- Basic ROS2 driver
- Gazebo simulation
- Isaac Sim integration
- IMU logging
- MoveIt2 motion planning
- Gripper action server
- Camera integration (eye-in-hand)
- Pick & place demos
PRs welcome! Please read CONTRIBUTING.md first.
# Run tests
colcon test --packages-select so100_ros2MIT License - see LICENSE for details.
- SO-ARM100 - Original arm design
- ros2_control - Control framework
- NVIDIA Isaac Sim - Simulation platform
Built with 🤖 by @ddlyRabbit

