Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

SO100-ROS2 🦾

ROS2 Gazebo Isaac Sim License

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.

SO100 in Gazebo SO100 in Isaac Sim

✨ Features

  • 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

📦 Hardware

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.

🚀 Quick Start

Prerequisites

# ROS2 Humble
sudo apt install ros-humble-desktop

# Dependencies
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers

Installation

# 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

Launch Simulation

# Gazebo
ros2 launch so100_bringup gazebo.launch.py

# Isaac Sim (requires Isaac Sim installed)
ros2 launch so100_bringup isaac.launch.py

Real Hardware

# Connect SO-100 via USB, then:
ros2 launch so100_bringup hardware.launch.py port:=/dev/ttyUSB0

📁 Package Structure

SO100-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

🎮 Usage Examples

Python Control

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)

Command Line

# 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 "..."

🛠️ Roadmap

  • Basic ROS2 driver
  • Gazebo simulation
  • Isaac Sim integration
  • IMU logging
  • MoveIt2 motion planning
  • Gripper action server
  • Camera integration (eye-in-hand)
  • Pick & place demos

🤝 Contributing

PRs welcome! Please read CONTRIBUTING.md first.

# Run tests
colcon test --packages-select so100_ros2

📄 License

MIT License - see LICENSE for details.

🙏 Acknowledgments


Built with 🤖 by @ddlyRabbit

About

SO100/101 Arm with ROS2 modules, Gazebo and IsaacSim support

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages