Home

Awesome

Igus Rebel ROS2 Autonomous Control with MoveIt2 and Gazebo Ignition

This repository contains the ROS2 packages for controlling the Igus Rebel robot arm with MoveIt2 and Gazebo Ignition Fortress. The packages contain the ros2 control hardware interfaces for the robot arm control, the MoveIt2 interfaces for the motion planners, and the Gazebo simulation environment for testing the robot control and motion planning capabilities. This repository provides a set of quick and simple demos to command the robot via MoveIt2 MoveGroup C++ APIs, and to control the robot in a completely autonomous way, with the planned joint trajectories and the end effector control.

This repository provides a working and tested environment for controlling the robot via CRI protocol, using the ethernet connection. While the official repository for the robot control provides a working implementation for the ROS2 control interface for CAN protocol, their implementation is not yet working correctly for the CRI (ethernet) protocol. This repository, instead, provides support for the CRI protocol (ethernet) for controlling the robot arm via position and velocity control. The code is tested and working correctly for the real robot control, using the latest version of the motor control firmware.

Contributor: Simone Giampà

Project developed as part of a master's degree thesis project.

Developed at AIRLAB: Artificial Intelligence and Robotics Laboratory, website

Installation

Software Compatibility

Tested on a Linux computer running with:

Currently, the package can only be used by building it from source.

Required ROS2 dependencies

Required Gazebo dependencies

Usage with CRI protocol

This repository provides the necessary packages for controlling the Igus Rebel robot arm using the CRI protocol, via ethernet connection. The robot control is done via position and velocity control, using the joint trajectory controller provided by the ros2_control package. The current configuration uses velocity control but can be easily extended to use position control. The end effector hardware interface is designed for the specific end effector mounted on the robot arm flange, but it can be used as a starting point for implementing other interfaces for different end effectors.

Connection to the robot

The ros2 hardware interface node expects to reach the robot at the static IP address and port 192.168.1.102:3920 via ethernet connection (netmask 255.255.255.0), using the CRI protocol. To connect to the robot, the computer with the ROS2 node must be connected to the same network as the robot, using an ethernet connection. To change the IP address used, it can be changed easily in the igus_rebel_hw_controller package, in the rebel_controller.cpp file. The computer running the ROS2 interface node must use the static IPv4 address 192.168.1.101.

Main launch file

Load URDF models of the robot depending on the desired configuration. To start up the robot, use the following command:

$ ros2 launch igus_rebel_moveit_config demo.launch.py

To correctly use the ROS2 control interface, the parameters to be set are:

Further instructions for the usage are provided in the igus_rebel_moveit_config package, in the README file.

Packages

This repository contains the following ROS2 packages:

  1. igus_rebel_description: XACRO macros for URDF configurations
  2. igus_rebel_moveit_config: MoveIt2 planner and controller
  3. igus_rebel_gazebo_ignition: Gazebo simulation environment for Igus Rebel and multiple sensors
  4. igus_rebel_hw_controller: ROS2 control and hardware interfaces for the Igus Rebel robot
  5. igus_rebel_commander: Command and control demo programs using MoveIt2 MoveGroup C++ API
  6. igus_rebel_gripper_controller: Soft Gripper Pneumatic Pump control interface with ROS2
  7. igus_rebel_servo: Servo control of the robot end effector

1. igus_rebel_description: XACRO macros for URDF configurations

The package contains the XACRO macros for the URDF configurations of the Igus Rebel robot arm, the mobile base, the end effector, the stereo camera and the flange 3D printed mount. The package contains also the URDF description and ros2-control specification files for the robot arm, with the joint limits and optimized collision meshes. The package contains also the URDF description for the "castle", which represents the collision boundaries that the robot arm must avoid when moving on top of the mobile base. The mounts are the URDF exported models from the CAD files of the 3D printed parts, used for mounting the stereo camera and the end effector on the robot arm flange.

2. igus_rebel_moveit_config MoveIt2 planner and controller

Run Rviz2 and MoveIt2 interfaces with ros2 launch igus_rebel_moveit_config demo.launch.py, using the same parameters specified above.

Run the MoveIt2 controller only, without RVIZ2 GUI with ros2 launch igus_rebel_moveit_config moveit_controller.launch.py.

To perform static obstacle avoidance during motion planning, it is required to use the pointcloud data from the stereo camera sensor and produce an Octomap of the environment. This can be done with the load_octomap parameter:

The hardware interfaces to be used is set up in the package igus_rebel_moveit_config:

3. igus_rebel_gazebo_ignition: Gazebo simulation environment for Igus Rebel and multiple sensors

The launch file ignition.launch.py loads the gazebo simulation environment with the robot and the sensors and the visual control interfaces integrated directly into the simulation environment. The package allows also to start-up the default simulation environment for testing purposes. The package contains also the bridge configuration files for bridging the topics across Gazebo and ROS2.

4. igus_rebel_hw_controller: ROS2 control and hardware interfaces for the Igus Rebel robot

The package contains the hardware interface for the robot control, using the CRI ethernet protocol. The package contains also the simulation hardware interfaces, provided for controlling the robot using velocity and position control interfaces.

5. igus_rebel_commander: Command and control demo programs using MoveIt2 MoveGroup C++ API:

The package contains a set of demo programs for controlling the robot using the MoveIt2 MoveGroup C++ API. The programs are used for testing the robot control and the motion planning capabilities of the robot in a variety of scenarios. The programs are used to show the capabilities of the robot while performing autonomous control tasks.

6. igus_rebel_gripper_controller: Soft Gripper Pneumatic Pump control interface with ROS2

This package contains the control interface for the pneumatic pump actuator for the soft gripper end effector, mounted on the robot arm flange. The gripper is controlled via an arduino, which sends the commands to the pneumatic pump to open and close the gripper. The electronic connections are made on a soldered PCB board, which is connected to the Arduino and the pneumatic pump via relays. The relays act as switches for the pneumatic pump, which is powered by a 24V power supply. The relays are controlled by the Arduino digital pins, which receive the commands from the ROS2 control interface via serial communication. The package contains the ROS2 control interface for the gripper control, which acts as a bridge between the ROS2 control interface and the Arduino.

7. igus_rebel_servo Servo control of the robot end effector:

Using MoveIt2 Servo library, the package will allow the control of the robot end effector using servoing techniques. The package is currently under development and is not working correctly at the moment. Currently, this package will compile only with ROS2 Iron. If using ROS2 Humble, the package will not compile correctly, so it is advised to delete the package from the workspace or selectively build the other packages with colcon build --packages-select <package_name>.