This repository provides an integrated management package for ROBOTIS robotic arms, including:
- OpenMANIPULATOR-Y
- OpenMANIPULATOR-X
- Leader-Follower Manipulator System
With this integration, all Robotis manipulators are managed under a unified package to ensure better compatibility and functionality.
This package supports ROS 2 Jazzy and Gazebo Harmonic on Ubuntu 24.04, offering the following functionalities:
- Integration of MoveIt 2 for Enhanced Motion Planning
- Graphical User Interface (GUI) Implementation and Support
- Teleoperation (Teleop) Capabilities
- Leader-Follower Control Mechanism with Gravity Compensation for Imitation Learning
The OpenMANIPULATOR-Y is a 6-DOF robotic arm designed for advanced robotic manipulation tasks. This ROS 2 package provides seamless integration, enhanced control, and versatile functionality for simulation and hardware applications.
You can choose between two installation methods:
This method provides an isolated environment with all dependencies pre-installed.
-
Install Docker and Docker Compose Follow the official Docker installation guide: Install Docker Engine
-
Clone the Repository
git clone https://github.com/ROBOTIS-GIT/open_manipulator.git cd open_manipulator
-
Container Management The repository includes a container management script with the following commands:
# Show help ./docker/container.sh help # Start container with Gazebo support ./docker/container.sh start with_gz # Start container without Gazebo support ./docker/container.sh start without_gz # Enter the running container ./docker/container.sh enter # Stop and remove the container ./docker/container.sh stop
[Note] When stopping the container, you'll be asked for confirmation as this will remove all unsaved data in the container.
-
Data Persistence The container maps the following directories for data persistence:
./docker/workspace:/workspace
- The workspace directory inside the docker folder is mapped to/workspace
inside the container
[Important] Data Persistence Rules:
- Data in
/workspace
inside the container is saved todocker/workspace
on your host - Container restart (using
docker restart
) maintains all data - Container removal (using
container.sh stop
) will remove all data except what's in the mapped/workspace
directory - Always save your work in the
/workspace
directory to ensure it persists after container removal
Follow these steps if you prefer to install directly on your host system:
-
Prerequisites
-
Supported ROS Version
This package is compatible only with ROS 2 Jazzy. Ensure that ROS 2 Jazzy is properly installed.
-
USB Port Permissions To enable communication with the hardware, add your user to the
dialout
group:sudo usermod -aG dialout $USER
A login and logout are required.
-
Environment Configuration Set the robot model based on your system:
om_y_follower
– OpenMANIPULATOR-Y with leader-follower functionality.om_y
– OpenMANIPULATOR-Y as a standalone model.om_x
– OpenMANIPULATOR-X.
[Caution] Make sure to configure it properly before using the desired mode.
ex) Add the configuration to
~/.bashrc
:echo 'export ROBOT_MODEL=om_y' >> ~/.bashrc source ~/.bashrc
-
-
Install Required Packages
sudo apt-get update && sudo apt-get install -y \ libboost-all-dev \ ros-jazzy-hardware-interface \ ros-jazzy-controller-manager \ ros-jazzy-ros2-controllers \ ros-jazzy-tf-transformations \ ros-jazzy-gz* \ ros-jazzy-pal-statistics sudo apt-get install -y ros-jazzy-moveit-* --no-install-recommends
-
Clone the Repository
cd ~/${WORKSPACE}/src git clone -b jazzy https://github.com/ROBOTIS-GIT/DynamixelSDK.git && \ git clone -b jazzy https://github.com/ROBOTIS-GIT/dynamixel_interfaces.git && \ git clone -b jazzy https://github.com/ROBOTIS-GIT/dynamixel_hardware_interface.git
-
Build the Package
cd ~/${WORKSPACE} colcon build --symlink-install
-
Source the Workspace
source ~/${WORKSPACE}/install/setup.bash
-
Create and apply udev rules
ros2 run open_manipulator_bringup x_create_udev_rules # for om_x
For leader-follower functionality, use:
ros2 launch open_manipulator_bringup ai_teleoperation.launch.py
Ensure proper connection and detection of leader and follower devices.
For standalone mode, launch:
ros2 launch open_manipulator_bringup hardware_y.launch.py #for om_y
ros2 launch open_manipulator_bringup hardware_x.launch.py #for om_x
Confirm that hardware is properly connected before execution.
For Gazebo simulation mode, launch:
ros2 launch open_manipulator_bringup gazebo.launch.py #for om_x and om_y
Ensure that Gazebo Harmonic is properly installed and configured before running the simulation.
Control the manipulator (simulation or hardware) using your keyboard:
ros2 run open_manipulator_teleop keyboard_control_y.py # for om_y
ros2 run open_manipulator_teleop keyboard_control_x.py # for om_x
1
/q
- Joint 12
/w
- Joint 23
/e
- Joint 34
/r
- Joint 45
/t
- Joint 56
/y
- Joint 6
o
- Open gripperp
- Close gripper
Enable MoveIt functionality for advanced motion planning in RViz:
ros2 launch open_manipulator_moveit_config moveit_core.launch.py
Move interactive markers to position the robotic arm, then click Plan and Execute.
Launch MoveIt GUI:
ros2 launch open_manipulator_moveit_config move_group.launch.py
Launch the OpenMANIPULATOR GUI:
ros2 launch open_manipulator_gui open_manipulator_y_gui.launch.py # for om_y
ros2 launch open_manipulator_gui open_manipulator_x_gui.launch.py # for om_x
- Start Timer: Activates the system.
- Robot Status: Displays current manipulator state.
- Init Pose: Moves the manipulator to a vertical position.
- Home Pose: Moves the manipulator to a compact, safe position.
- Gripper Open/Close: Opens or closes the gripper.
-
Joint Space Tab: Adjust individual joint angles.
-
Task Space Tab: Control the end-effector position.
-
Task Constructor Tab
- Read Task: View saved poses.
- Save Pose: Save current state.
- Rap: Set task repetition (1–999).
- Play: Execute saved tasks.
- Stop: Halt operations.
- Reset Task: Clear saved tasks.
The OpenMANIPULATOR-X operation method is similar to OpenMANIPULATOR-Y, and the e-Manual is currently being updated.