/abb_dual_arm

This repository contains ROS packages and helper functions for planning and executing paths with two ABB IRB120 robotic manipulators.

Primary LanguageC++

ABB Robot Operating System (ROS) Package for Dual-Arm Motion Planning and Execution

This repository contains ROS drivers to perform dual-arm coordinated motion planning for two ABB IRB120 robots in both hardware and simulation. Before getting started, please read the ABB IRB120 product manual which contains important safety information.

Current Development Status:

  • Dual-arm coordinated (synchronous) motion planning and execution with MoveIt - works as expected.
  • Hardware interface - works as expected.
  • Collision checking - works as expected.
dc.mp4

Install the ABB Dual Arm ROS Package

First, update the local rosdep database:

rosdep update

Clone the ABB robot ROS package into the src folder of a catkin workspace.

git clone git@github.com:RMDLO/abb_dual_arm.git

Install ROS Dependencies and Build the Package

Change directories to the root of the ABB catkin workspace and use rosdep to install any missing ROS dependencies.

cd .. && sudo rosdep install --from-paths src --ignore-packages-from-source --rosdistro noetic

Use catkin_tools to build the workspace:

catkin build

Configure the Robot IRC5 controller for ROS Control

  1. Turn on the robot IRC5 controller by turning the top left power switch to on. Wait until the teach pendant is on, and then switch the IRC5 controller to automatic mode from manual mode by turning the key on the cabinet counterclockwise until the white status light turns off. On the robot teach pendant, verify it is okay to switch to automatic mode when prompted. Press the status light on the IRC5 control cabinet again until it turns on.
  2. On the teach pendant, select settings and verify the mode is continuous. Then select PP to Main. Then click the play button on the teach pendant. The play button signals the teach pendant to run the loaded RAPID module.
  3. On the desktop computer, in Wired Settings, ensure the ethernet connection to the IRC5 controller is set to "Automatic (DHCP)" in the IPv4 setting.

Use Docker (Optional)

To set up a docker container for running the robots in hardware and simulation, see the DOCKER.md file.

Move the Robots with RViz

After setting up the hardware for ROS control, open a new terminal. First, navigate into the root of the workspace and source the workspace to access the built packages.

source devel/setup.bash

Launch MoveIt! planning and execution. Make sure to change the robot controller's IP address in moveit_planning_execution.launch and set sim:=False if controlling the real robots.

roslaunch abb_irb120_moveit_config moveit_planning_execution.launch sim:=True

The robots can be controlled through click-and-dragging within the RViz interface.

Move a Robot to Specified Joint Angles

After setting up the robot controller for ROS control, open two new terminals and perform the below commands in the root of the workspace to move the robots to specified joint angles.

Terminal 1:

Source the workspace to access the built packages.

source devel/setup.bash

Launch MoveIt! planning and execution. Make sure to change the robot controller's IP address in abb_control.launch and set sim:=False if controlling the real robots. If using the pointer as the end effector, set pointer:=True on launch.

roslaunch abb_control abb_control.launch sim:=True camera:=False pointer:=False

Terminal 2

Change desired joint angle values in abb_control.py first. Then source the workspace.

source devel/setup.bash

Run the robot control node.

rosrun abb_control abb_joint_control.py

License

This software is released under the MIT License, see LICENSE.