ROS 1 Open Source Packages
Note
To use any of these packages, you must already have ROS and the X-Series Arm packages installed. If you do not have these installed, follow the steps detailed in the ROS Interface Setup.
Below is a list of all ROS packages meant to be used with the many X-Series robotic arms sold by Trossen Robotics. Packages were tested on Ubuntu 20.04 using ROS 1 Noetic. Additionally, all ROS nodes were written using Python or C++. However, any programming language capable of sending ROS messages can be used to control the robots. The core packages inside this repo are as follows:
- interbotix_xsarm_descriptions - contains the meshes and URDFs (including accurate inertial models for the links) for all arm platforms
- interbotix_xsarm_control - contains the motor configuration files and the ‘root’ launch file that is responsible for launching the robot arm
- interbotix_xsarm_gazebo - contains the config files necessary to launch an arm in Gazebo, including tuned PID gains for the ros_control package
- interbotix_xsarm_ros_control - contains configuration files necessary to set up ROS controllers between MoveIt and the physical robot arm
- interbotix_xsarm_moveit - contains the config files necessary to launch an arm using MoveIt either in Gazebo, on the physical robot, or just in RViz
There are also several packages demonstrating possible applications of the core packages. A list of those packages is below in order of importance:
- Arm Descriptions
- Arm Control
- Gazebo Configuration
- ROS Controllers Configuration
- MoveIt Configuration
- Perception Configuration
- MoveIt Interface and API
- Python Demos
- MATLAB Demos
- Joystick Control
- Record And Playback
- Arm Diagnostic Tool
- Arm Diagnostic Listener
- PID Gains Test Environment
- Arm Puppeteering
- Dual Arm Control
- Dual Arm Joystick Control
OPEN SOURCE DEMOS
-
MoveIt Motion Planning Configuration
Contains the necessary config files to get any of the X-Series arms working with MoveIt, the standard motion planning framework for ROS. This package also provides interfaces to work with the arms in a Gazebo simulation.
-
Gazebo Simulation Configuration
Contains configuration files, launch files, and example worlds to simulate the X-Series arms in Gazebo. Also has position and trajectory controllers with tunable PID gains so that ROS can control the arms.
-
Joystick Control
Control any X-Series arm using a Bluetooth joystick controller. This package can be used to control the movements of any X-Series robotic arm using a SONY PS3/PS4 controller or Microsoft Xbox360 controller (untested) via Bluetooth.
-
Dual Arm Control
Enables the control of multiple X-Series arms using scripts. Configuration files are provided that allow for 2 or more arms to be controlled simultaneously using multithreading techniques.
-
Perception Pipeline Configuration
Contains the necessary config and launch files to get any of the many Interbotix X-Series arms working with the perception pipeline, allowing for the arms to interact with depth cameras such as the RealSense D415.
-
MoveIt Interface and API
Contains a small API that allows a user to command desired end-effector poses to an Interbotix arm. Also has a modified version of the Move Group Python Interface Tutorial script for users to understand the basics of MoveIt Commander.
-
Arm Diagnostic Tool
Analyze the state of one joint or any number of joints over time while running through a script, or while playing back a ROS bag file. Visualize different parameters such as temperature, position, and effort over time.
-
PID Gains Test Environment
A way to test 'pwm' or 'current' PID gains when operating the arm in either 'pwm' or 'current' mode. The package moves the robot through a series of poses as a way to test the effects of different gains and control modes.
-
Dual Arm Joystick Control
Control two X-Series arms using a single joystick controller. Builds on top of the Joystick and Dual Control packages and contains only configuration and launch files, an example of ROS's modularity.
-
Arm Puppeteering
Imagine that you have two (or more) Interbotix arms with the same number of joints. What the xsarm_puppet allows you to do is to manually manipulate one of the arms and watch as the motion is repeated in real time on the second robot.
-
Record and Playback
Untorque your arm and record manual movements to a ROS bag file. Play back the same motions as many times as you want.
-
Python Demos
Showcase of examples for the Interbotix Python Arm Module. We made Python wrappers for the X-Series arm that allow users to control their arm without writing a single line of ROS code Module.
Contributing
To contribute your own custom X-Series arm in this repo, you will need to do the following steps:
- Create a motor config file similar to the YAML files found in xsarm_control/config. To get familiar with the parameter names, checkout the Motor Config Template. Note that the name of this file is what defines your robot_model name, and should be used when naming other files like the URDF.
- Create a URDF similar in structure to the ones found in xsarm_descriptions/urdf. Don’t forget to put all necessary meshes in the xsarm_descriptions/meshes directory! Follow the naming convention for the links, joints, and frame poses as found in the other arm files for consistency.
- Create a set of Gazebo/ROS position controllers.
- Create a set of Gazebo/ROS trajectory controllers.
- Create an SRDF file for Moveit. You should first use the MoveIt Setup Assistant Wizard for this step and then edit the generated SRDF file based on the structure of those files.
- Add the appropriate Screw axes and M matrices to the mr_descriptions.py and mr_descriptions.m modules. For help doing this, refer to Chapter 4 in Modern Robotics and this video, or check out our kinematics_from_description tool.
- Make sure to follow the same naming convention, structure, and documentation procedures as found in the repo before making a PR.