Robot Raconteur standard robot driver for the Rethink Robotics Baxter Robot
This driver communicates with the Baxter robot using ROS 1 topics and provides a standard Robot Raconteur service with type com.robotraconteur.robotics.robot.Robot
.
This driver uses the ros_csharp_interop
library (https://github.com/johnwason/ros_csharp_interop).
It is highly recommended that the docker image be used. See below for instructions.
Example driver clients are in the examples/
directory. Position control mode is available but there is
not an example. See the SawyerRobotRaconteurDriver for an example of position control.
The default connection information is as follows. These details may be changed using --robotraconteur-*
command
line options when starting the service. Also see the
Robot Raconteur Service Browser to detect
services on the network.
- URL:
rr+tcp://localhost:58660?service=robot
- When
--right-arm
is used,rr+tcp://localhost:58661?service=robot
- When
- Device Name:
baxter_robot
- Node Name:
baxter_robot
- Service Name:
robot
- Root Object Type:
com.robotraconteur.robotics.robot.Robot
The Baxter robot acts as a ROS master on the network. Before starting the driver, the following environmental variables must be configured:
ROS_MASTER_URI
- The ROS master URI. This is typically something likehttp://192.168.1.5:11311
. Replace192.168.1.5
with the actual IP address of the Baxter robot.ROS_IP
- The IP address of the computer running the driver. This must be the ethernet interface on the same network with the Baxter robot. Firewalls must be disabled so that the incoming connections from the robot can be accepted. A typical IP address is192.168.1.6
.
The following command line arguments are available:
--robot-info-file=
- The robot info file. Info files are available in theconfig/
directory. See robot info file documentation--left-arm
- Only control the left arm--right-arm
- Only control the right arm--left-electric-gripper
- A Rethink electric gripper is attached to the left arm.--right-electric-gripper
- A Rethink electric gripper is attached to the left arm.--left-gripper-info-file=
- The gripper info file for the left gripper. Info files are available in theconfig/
directory. See tool info file documentation--right-gripper-info-file=
- The gripper info file for the right gripper.
By default, the driver will control both robot arms. Two kinematic chains will be contained in the robot information
structures. The first seven joints control the left arm, and the right seven joints control the right arm. When
--left-arm
or --right-arm
are used, only one arm is controlled by the driver. Start two driver instances to
control the arms independently. This is useful if the client does not understand two arm robots.
The common Robot Raconteur node options are also available.
Docker is the recommended way to run the driver. Building and running can be complicated due to the dependencies on ROS and C#.
sudo docker run --rm --net=host --privileged -v /var/run/robotraconteur:/var/run/robotraconteur -v /var/lib/robotraconteur:/var/lib/robotraconteur -e ROS_MASTER_URI=http://192.168.1.5:11311 -e ROS_IP=192.168.1.6 wasontech/baxter-robotraconteur-driver /opt/baxter_robotraconteur_driver/bin/BaxterRobotRaconteurDriver --robot-info-file=/config/baxter_both_arm_robot_default_config.yml
Replace ROS_MASTER_URI
and ROS_IP
with the settings from your network. Use the available command line options to configure the gripper and robot info files. It may be necessary to mount a docker "volume" to access configuration yml files that are not included in the docker image. See the docker documentation for instructions on mounting a local directory as a volume so it can be accessed inside the docker.
Start two docker images concurrently in different terminals:
sudo docker run --rm --net=host --privileged -v /var/run/robotraconteur:/var/run/robotraconteur -v /var/lib/robotraconteur:/var/lib/robotraconteur -e ROS_MASTER_URI=http://192.168.1.5:11311 -e ROS_IP=192.168.1.6 wasontech/baxter-robotraconteur-driver /opt/baxter_robotraconteur_driver/bin/BaxterRobotRaconteurDriver --left-arm --robot-info-file=/config/baxter_left_arm_robot_default_config.yml
sudo docker run --rm --net=host --privileged -v /var/run/robotraconteur:/var/run/robotraconteur -v /var/lib/robotraconteur:/var/lib/robotraconteur -e ROS_MASTER_URI=http://192.168.1.5:11311 -e ROS_IP=192.168.1.6 wasontech/baxter-robotraconteur-driver /opt/baxter_robotraconteur_driver/bin/BaxterRobotRaconteurDriver --right-arm --robot-info-file=/config/baxter_right_arm_robot_default_config.yml
Building the driver is complicated and not recommended. Refer to the Dockerfile
for the required commands.
This work was supported in part by the Advanced Robotics for Manufacturing ("ARM") Institute under Agreement Number W911NF-17-3-0004 sponsored by the Office of the Secretary of Defense. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of either ARM or the Office of the Secretary of Defense of the U.S. Government. The U.S. Government is authorized to reproduce and distribute reprints for Government purposes, notwithstanding any copyright notation herein.
This work was supported in part by the New York State Empire State Development Division of Science, Technology and Innovation (NYSTAR) under contract C160142.