This repository demonstrates how to integrate MoveIt with Isaac Sim using ROS2 on the SO-ARM101 dual-arm robot. The SO-ARM101 (and older SO-ARM100) is an open-source dual-arm robot created by TheRobotStudio in collaboration with HuggingFace's LeRobot for robotics research and education.
MoveIt provides robot motion planning, manipulation, and control capabilities in ROS2, enabling control of real robots from simulation. This tutorial focuses on simulation-only implementation, with Sim2Real capabilities planned for future releases.
📺 Full video tutorial available on LycheeAI YouTube Channel
Want the real robot? Get your own SO-ARM101 (or SO-ARM100) from WowRobo using discount code LYCHEEAI5
Make sure to "Add to cart" or choose "More payment options" to apply the discount code!
- Isaac Sim - Installation Guide: Isaac Sim & Isaac Lab
- Linux Ubuntu 22.04 with ROS2 Humble
- ROS2 Humble Installation - Official Guide
- ROS2 Basics Knowledge - Complete the TurtleBot Tutorial
If you want to skip the step-by-step tutorial or encounter issues, use this quick setup:
# Clone the repository
git clone https://github.com/MuammerBay/SO-ARM101_MoveIt_IsaacSim.git
cd SO-ARM101_MoveIt_IsaacSim
# Source ROS 2
source /opt/ros/humble/setup.bash
# Update rosdep database
rosdep update
# Install ALL dependencies automatically
rosdep install --from-paths src --ignore-src -r -y
# Build the workspace
colcon build
# Source the workspace
source install/setup.bash
# Launch MoveIt demo
ros2 launch so_arm_moveit_config demo.launch.py# Source ROS 2
source /opt/ros/humble/setup.bash
# Run Isaac Sim with ROS2 enabled
[ISAAC-SIM-4.5-FOLDER]/isaac-sim.selector.sh- Open the USD file (created from URDF) in Isaac Sim
- Start the simulation (press Play)
- Control the robot in RViz
This tutorial is based on the excellent work by robot mania - highly recommended channel for robotics topics!
Source ROS2 Humble in every terminal:
source /opt/ros/humble/setup.bashCreate ROS workspace:
mkdir -p ~/so-arm_moveit_isaacsim_ws/src
cd ~/so-arm_moveit_isaacsim_wsInstall ROS2 dependencies:
sudo apt update
sudo apt install \
ros-humble-moveit \
ros-humble-ros2-control \
ros-humble-ros2-controllers \
ros-humble-gripper-controllers \
ros-humble-topic-based-ros2-controlCreate package directories:
cd ~/so-arm_moveit_isaacsim_ws/src
mkdir -p so_arm_moveit_config
mkdir -p so_arm_descriptionClone the SO-ARM URDF (adjusted for proper ROS2 format):
cd ~/so-arm_moveit_isaacsim_ws/src/so_arm_description
git clone https://github.com/MuammerBay/SO-ARM_ROS2_URDF.git .Build workspace:
cd ~/so-arm_moveit_isaacsim_ws
colcon buildLaunch MoveIt Setup Assistant:
source ~/so-arm_moveit_isaacsim_ws/install/setup.bash
ros2 launch moveit_setup_assistant setup_assistant.launch.pyAfter setup, rebuild:
cd ~/so-arm_moveit_isaacsim_ws
colcon buildFix joint_limits.yaml: Replace Integer values with Float values
Update moveit_controllers.yaml: Add to arm_controller:
action_ns: follow_joint_trajectory
default: trueRebuild after changes:
colcon buildTest MoveIt without Isaac Sim:
ros2 launch so_arm_moveit_config demo.launch.pyOpen Isaac Sim:
source /opt/ros/humble/setup.bash
[ISAAC-SIM-4.5-FOLDER]/isaac-sim.selector.shImport URDF with these settings:
- Stiffness: 17.8
- Damping: 0.60
- Set articulation root to base mesh (xform)
Create ROS2 Action Graph:
- Tools → Robotics → ROS2 Omnigraphs → Joint States
- Articulation: base mesh (xform)
- Joint States Topic:
/isaac_joint_states - Joint Commands Topic:
/isaac_joint_command
Update src/so_arm_moveit_config/config/so101_new_calib.ros2_control.xacro:
Replace:
<plugin>mock_components/GenericSystem</plugin>With:
<!-- <plugin>mock_components/GenericSystem</plugin> -->
<plugin>topic_based_ros2_control/TopicBasedSystem</plugin>
<param name="joint_states_topic">/isaac_joint_states</param>
<param name="joint_commands_topic">/isaac_joint_command</param>Final rebuild:
cd ~/so-arm_moveit_isaacsim_ws
colcon buildStart MoveIt:
source install/setup.bash
ros2 launch so_arm_moveit_config demo.launch.py- Start Isaac Sim simulation (press Play)
- Control robot in RViz
- Enjoy your SO-ARM MoveIt integration!
Quentin Deyna is working on a Docker setup to solve "works-on-my-machine" problems:
- Tutorial based on robot mania's excellent Isaac Sim + MoveIt guide
- SO-ARM robot by TheRobotStudio
- Integration with HuggingFace LeRobot
- Video tutorial on LycheeAI YouTube Channel
├── src/
│ ├── so_arm_description/ # Robot URDF and meshes
│ ├── so_arm_moveit_config/ # MoveIt configuration
│ └── isaac_sim_usd/ # Isaac Sim USD files
├── README.md
└── .gitignore
This project follows the same license as the original SO-ARM project. Please refer to the original repositories for licensing information.