An open API service indexing awesome lists of open source software.

https://github.com/robotis-git/open_manipulator

OpenManipulator for controlling in Gazebo and Moveit with ROS
https://github.com/robotis-git/open_manipulator

arduino dynamixel gazebo manipultor moveit openmanipultor package robot robotis ros turtlebot turtlebot3

Last synced: about 1 month ago
JSON representation

OpenManipulator for controlling in Gazebo and Moveit with ROS

Awesome Lists containing this project

README

        

# 🦾 OpenMANIPULATOR

## Overview

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.

## Key Features

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

# **OpenMANIPULATOR User Guide**

## **1. Introduction**

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.

## **2. Prerequisites**

### **Supported ROS Version**

![ROS 2 Jazzy](https://img.shields.io/badge/ROS2-Jazzy-blue)

This package is compatible only with **ROS 2 Jazzy**. Ensure that ROS 2 Jazzy is properly installed.

### **Required Packages**

Install the following dependencies:

```bash
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
```

### **USB Port Permissions**

To enable communication with the hardware, add your user to the `dialout` group:

```bash
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`:

```bash
echo 'export ROBOT_MODEL=om_y' >> ~/.bashrc
source ~/.bashrc
```

## **3. Installation**

### **1. Clone the Repository**

Navigate to your ROS 2 workspace and clone the repository:

```bash
cd ~/${WORKSPACE}/src
```

```bash
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
```

### **2. Build the Package**

Compile the package using `colcon`:

```bash
cd ~/${WORKSPACE}
colcon build --symlink-install
```

### **3. Source the Workspace**

```bash
source ~/${WORKSPACE}/install/setup.bash
```

Create and apply `udev` rules:

```bash
ros2 run open_manipulator_bringup y_create_udev_rules # for om_y
ros2 run open_manipulator_bringup x_create_udev_rules # for om_x
```

## **4. Execution Commands**

### **Step 1: Choose Your Operating Mode**

#### **1️⃣ Leader-Follower Mode**

For **leader-follower functionality**, use:

```bash
ros2 launch open_manipulator_bringup ai_teleoperation.launch.py
```

Ensure proper connection and detection of leader and follower devices.

#### **2️⃣ Standalone Mode**

For **standalone mode**, launch:

```bash
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.

#### **3️⃣ Gazebo Simulation Mode**

For **Gazebo simulation mode**, launch:

```bash
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.

### **Step 2: Extend Functionality**

#### **1. Keyboard Teleoperation**

Control the manipulator (simulation or hardware) using your keyboard:

```bash
ros2 run open_manipulator_teleop keyboard_control_y.py # for om_y
ros2 run open_manipulator_teleop keyboard_control_x.py # for om_x
```

##### **Joint Control**

- `1` / `q` - Joint 1
- `2` / `w` - Joint 2
- `3` / `e` - Joint 3
- `4` / `r` - Joint 4
- `5` / `t` - Joint 5
- `6` / `y` - Joint 6

##### **Gripper Control**

- `o` - Open gripper
- `p` - Close gripper

#### **2. MoveIt! Launch**

Enable MoveIt functionality for advanced motion planning in RViz:

```bash
ros2 launch open_manipulator_moveit_config moveit_core.launch.py
```

Move interactive markers to position the robotic arm, then click **Plan** and **Execute**.

#### **3. GUI Control**

Launch MoveIt GUI:

```bash
ros2 launch open_manipulator_moveit_config move_group.launch.py
```

Launch the OpenMANIPULATOR GUI:

```bash
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
```

### **Step 3: Explore GUI Features**

#### **Basic Controls**

- **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.

#### **Task Execution**

- **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.

## (Legacy) ROBOTIS e-Manual for OpenMANIPULATOR-X

- [ROBOTIS e-Manual](https://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/)

The **OpenMANIPULATOR-X operation method** is similar to **OpenMANIPULATOR-Y**, and the e-Manual is currently being updated.