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
First, update the local rosdep database:
rosdep updateClone the ABB robot ROS package into the src folder of a catkin workspace.
git clone [email protected]:RMDLO/abb_dual_arm.git --recurse-submodulesChange 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 noeticUse catkin_tools to build the workspace:
catkin build- 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.
- 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.
- On the desktop computer, in Wired Settings, ensure the ethernet connection to the IRC5 controller is set to "Automatic (DHCP)" in the IPv4 setting.
To set up a docker container for running the robots in hardware and simulation, see the DOCKER.md file.
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.bashLaunch 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:=TrueThe robots can be controlled through click-and-dragging within the RViz interface.
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.
Source the workspace to access the built packages.
source devel/setup.bashLaunch 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:=FalseChange desired joint angle values in abb_control.py first. Then source the workspace.
source devel/setup.bashRun the robot control node.
rosrun abb_control abb_joint_control.pyThis software is released under the MIT License, see LICENSE.