ROS 2 Standard Software Setup

Compatible Models

The ROS 2 Interface packages can be used with any of the Interbotix arm kits listed below. Next to each name is the codename used to describe it in software (specifically for the robot_model argument in launch files). There are up to four parts in a name. In general, the first two letters represent model type (ex. wx for ‘WidowX’). The number afterwards corresponds to the length of both the forearm and upper-arm links in millimeters (ex. 200). Finally, the s after some numbers signifies that arm has six degrees of freedom. The mobile before some names means that arm is designed to be mounted on a mobile base.

Models
Model Name and Store Link Robot Documentation Codename
PincherX-100 Robot Arm PincherX-100 Robot Arm Documentation px100
PincherX-150 Robot Arm PincherX-150 Robot Arm Documentation px150
ReactorX-150 Robot Arm ReactorX-150 Robot Arm Documentation rx150
ReactorX-200 Robot Arm ReactorX-200 Robot Arm Documentation rx200
WidowX-200 Robot Arm WidowX-200 Robot Arm Documentation wx200
WidowX-250 Robot Arm WidowX-250 Robot Arm Documentation wx250
WidowX-250 Robot Arm 6DOF WidowX-250 Robot Arm 6DOF Documentation wx250s
ViperX-250 Robot Arm ViperX-250 Robot Arm Documentation vx250
ViperX-300 Robot Arm ViperX-300 Robot Arm Documentation vx300
ViperX-300 Robot Arm 6DOF ViperX-300 Robot Arm 6DOF Documentation vx300s

Requirements

Below is a list of the hardware you will need to get started:

  • One of the X-Series Robot Arm Kits mentioned above
  • Computer running Ubuntu Linux 20.04 or 22.04

Important

Virtual Linux machines have not been tested are not supported.

Software Installation

To get all the code setup, refer to the computer platform types below and run the appropriate installation script. Afterwards, continue with the Installation Checks sub-section.

AMD64 Architecture

If your computer uses an Intel or AMD based processor (which is the case for NUCs, most laptops and desktop computers), follow the commands below to download and run the installation script. Specify the version of ROS 2 that you want to install using the -d flag followed by the distribution’s codename. See the list of currently supported distributions. Note that the script will also install the full desktop version of ROS 2 if it’s not yet on your system, ask you if you want to install the Interbotix Perception packages and ask you if you want to install the MATLAB-ROS API. The commands below demonstrate the process of running the installation script for ROS 2 Galactic.

$ sudo apt install curl
$ curl 'https://raw.githubusercontent.com/Interbotix/interbotix_ros_manipulators/main/interbotix_ros_xsarms/install/amd64/xsarm_amd64_install.sh' > xsarm_amd64_install.sh
$ chmod +x xsarm_amd64_install.sh
$ ./xsarm_amd64_install.sh -d galactic

Note

The install script provides more in-depth control of some installation options. Append the -h flag to see the help document like below:

$ ./xsarm_amd64_install.sh -h
USAGE: ./xsarm_amd64_install.sh [-h][-d DISTRO][-p PATH][-n]

...

Raspberry Pi 4B (ARM64 Architecture)

If you purchased a Raspberry Pi 4B Kit with an arm from our website, there is no need to install anything as the Pi should already come preloaded with all the necessary software. If you purchased your own Raspberry Pi 4B from a third party, feel free to follow the Raspberry Pi 4B Setup instructions to get it properly setup before following the commands below. If you only purchased the stand-alone Raspberry Pi 4B Kit from our store (which comes pre-configured with Ubuntu and ROS 2), and would like to use it with an arm, then follow the commands below to download and run the installation script. Note that the script will install the full desktop version of ROS 2 if it’s not yet on your system, ask you for your desired robot model (ex. wx200), and prompt you about whether or not you’d like the Joystick ROS 2 package to start at boot. The commands below demonstrate the process of running the installation script for ROS 2 Galactic.

$ sudo apt install curl
$ curl 'https://raw.githubusercontent.com/Interbotix/interbotix_ros_manipulators/main/interbotix_ros_xsarms/install/rpi4/xsarm_rpi4_install.sh' > xsarm_rpi4_install.sh
$ chmod +x xsarm_rpi4_install.sh
$ ./xsarm_rpi4_install.sh -d galactic

If you do want to have the Joystick ROS package start at boot, you will first have to pair your PS4 controller with the Pi. Refer to the RPi PS4 Controller Setup Guide for details.

Note

The install script provides more in-depth control of some installation options. Append the -h flag to see the help document like below:

$ ./xsarm_rpi4_install.sh -h
USAGE: ./xsarm_rpi4_install.sh [-h][-d DISTRO][-j ROBOT_MODEL][-p PATH][-n]

...

Installation Checks

After running the installation script on the robot computer, we can verify that the script ran successfully.

udev Rules

Check that the udev rules were configured correctly and that they are triggered by the U2D2. This can be done by checking that the port name shows up as ttyDXL when the U2D2 is plugged into a USB port. The command and the expected output are below:

$ ls /dev | grep ttyDXL
ttyDXL

Interbotix ROS Packages

Check that the Interbotix ROS packages were installed correctly. The command and example output are below:

$ source /opt/ros/$ROS_DISTRO/setup.bash
$ source ~/interbotix_ws/install/setup.bash
$ ros2 pkg list | grep interbotix
...
interbotix_common_modules
interbotix_common_sim
interbotix_common_toolbox
interbotix_perception_modules
interbotix_perception_msgs
interbotix_perception_pipelines
interbotix_perception_toolbox
interbotix_ros_xsarms
interbotix_ros_xsarms_examples
interbotix_ros_xseries
interbotix_tf_tools
interbotix_xs_driver
interbotix_xs_modules
interbotix_xs_msgs
interbotix_xs_ros_control
interbotix_xs_rviz
interbotix_xs_sdk
interbotix_xs_toolbox
interbotix_xsarm_control
interbotix_xsarm_descriptions
interbotix_xsarm_dual
interbotix_xsarm_joy
interbotix_xsarm_moveit
interbotix_xsarm_moveit_interface
interbotix_xsarm_perception
interbotix_xsarm_ros_control
interbotix_xsarm_sim
...

Specific packages you should confirm have been built are interbotix_xs_sdk, interbotix_xs_msgs, interbotix_common_modules, and interbotix_xs_modules. These serve as the fundamental core of the ROS 2 Interface and are required to use it. If these are missing, check the installation script’s output for errors.

Next Steps

If the ROS 2 Interface installed properly, you can continue on to the ROS 2 Interface Quickstart Guide.

Troubleshooting

Refer to the X-Series Troubleshooting guide to try to solve your problem. If you still need help, feel free to open an Issue on the ros_manipulators repo. We strongly recommend the latter option though so that other people who may be facing the same difficulty can benefit. This repository is actively maintained and any open Issues will be addressed as soon as possible.