ROS Standard Software Setup

Compatible Models

The ROS 1 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 18.04, 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 that you want to install using the -d flag followed by the distribution’s codename. Alternatively, you can run it without the -d flag and the script will install packages for the ROS 1 distribution supported by the version of Ubuntu, or the latest stable release of ROS 2 if using Ubuntu version 22.04 or later. See the list of currently supported distributions. Note that the script will also install the full desktop version of ROS 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 1 Noetic.

$ 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 noetic

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)

Follow the Raspberry Pi 4B Setup instructions to get your Raspberry Pi properly setup before following the commands below. Note that the script will install the full desktop version of ROS 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 package to start at boot. The commands below demonstrate the process of running the installation script for ROS 1 Noetic.

$ 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 noetic

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]

...

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.

Remote Install

For some robotic projects, you may want to run your robot in a ‘headless’ state on some computer (like a NUC or Raspberry Pi), and monitor the robot’s state (in RViz for example) on your personal (a.k.a remote) computer over a local network. For this to work, run the installation script below on your personal computer running Linux Ubuntu 18.04, 20.04, or 22.04. Note that ROS and RViz must already be installed! As an FYI, the script will prompt you to insert the hostname of the robot (NOT the remote) computer. As an example, if you wanted to monitor the state of-a robot arm purchased with a Raspberry Pi 4B Kit, you would set the hostname to pibot. To find out the hostname of the robot computer, just open a terminal and type hostname.

$ sudo apt install curl
$ curl 'https://raw.githubusercontent.com/Interbotix/interbotix_ros_manipulators/main/interbotix_ros_xsarms/install/xsarm_remote_install.sh' > xsarm_remote_install.sh
$ chmod +x xsarm_remote_install.sh
$ ./xsarm_remote_install.sh

Be aware that the installation script will export the ROS_MASTER_URI environment variable in your personal computer’s ~/.bashrc file to http://<hostname>.local:11311. Make sure to comment out this line when done monitoring or your personal computer will complain about not being able to find its ROS Master.

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/devel/setup.bash
$ rospack list | grep interbotix
...
interbotix_common_modules /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_common_toolbox/interbotix_common_modules
interbotix_landmark_modules /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_common_toolbox/interbotix_landmark_modules
interbotix_moveit_interface /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_common_toolbox/interbotix_moveit_interface
interbotix_perception_modules /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_perception_toolbox/interbotix_perception_modules
interbotix_tf_tools /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_common_toolbox/interbotix_tf_tools
interbotix_xs_modules /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules
interbotix_xs_msgs /home/$USER/interbotix_ws/src/interbotix_ros_core/interbotix_ros_xseries/interbotix_xs_msgs
interbotix_xs_ros_control /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_ros_control
interbotix_xs_rviz /home/$USER/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_rviz
interbotix_xs_sdk /home/$USER/interbotix_ws/src/interbotix_ros_core/interbotix_ros_xseries/interbotix_xs_sdk
interbotix_xsarm_control /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control
interbotix_xsarm_descriptions /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions
interbotix_xsarm_diagnostic_tool /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_diagnostic_tool
interbotix_xsarm_dual /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_dual
interbotix_xsarm_dual_joy /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_dual_joy
interbotix_xsarm_gazebo /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_gazebo
interbotix_xsarm_joy /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_joy
interbotix_xsarm_moveit /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_moveit
interbotix_xsarm_moveit_dual /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_ros_xsarms_dual_moveit
interbotix_xsarm_moveit_interface /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_moveit_interface
interbotix_xsarm_perception /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_perception
interbotix_xsarm_pid /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_pid
interbotix_xsarm_puppet /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/interbotix_xsarm_puppet
interbotix_xsarm_ros_control /home/$USER/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_ros_control
...

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

Next Steps

If the ROS Interface installed properly, you can continue on to the ROS 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.