Only released in EOL distros:  

rmps.png

Supported Hardware

This package provides support for the RMP50, RMP100, and RMP200 Segway mobile bases. For RMP400 support: segway_rmp400 Coming Soon.

API Stability

The ROS API of this driver should be considered experimental.

Theory of Operation

The segway_rmp_node will allow you connect to and control your Segway RMP series mobile robot platform. On startup the node will announce how it is trying to connect to the Segway RMP with a message similar to this:

Connecting to Segway RMP via serial on serial port: /dev/ttyUSB0

or

Connecting to Segway RMP via usb identified by the device serial number: 00000056

If the node is unsuccessful in connecting to the Segway RMP or at any point looses connection to the Segway RMP, it will report the error and try to connect again in 5 seconds. The node is designed this way to make it more robust to temporary E-Stopping of the vehicle.

This package supports two main ways to communicate with the Segway RMP, both happen via the USB cable coming out of the Segway RMP. The difference between communication methods is based on the driver you use in the operating system. FTDI supplies two kind of drivers for this kind of device, VCP and D2XX. The VCP (Virtual COM Port) driver allows the device to show up as a normal serial port in the OS. The D2XX driver allows you to directly communicate to the Segway RMP using the USB protocol. In Linux the default driver is the VCP, and in fact you have to disable the VCP driver for all FTDI devices on the system in order to use the D2XX to communicate with the Segway RMP. This is the main reason both VCP and D2XX (usb) support is supported in this package.

ROS API

segway_rmp_node

segway_rmp_node is a driver for the RMP50, RMP100, and RMP200 series of Segway's Robotic Mobile Platforms. Currently these drivers only support using the mobile bases in "Tractor" mode (with a caster). Support for "Balance" mode with these robots is unsupported because the maintainer cannot test the driver. If you would like to volunteer to test code that would allow for balance mode, email me.

Subscribed Topics

cmd_vel (geometry_msgs/Twist)
  • This is the canonical method for commanding mobile bases in ROS. The two components of this msg used by the segway_rmp_node are the linear/x and angular/z velocities in meters/second and radians/second respectively.

Published Topics

segway_status (segway_rmpX/SegwayStatusStamped)
  • Data from the segway.
odom (geometry_msgs/Odometry)
  • Integrated Odometry of the mobile base.

Parameters

Common Parameters
These parameters always apply, no matter what interface you are using to communicate with the Segway RMP.
interface_type (string, default: serial)
  • This allows you to indicate which interface you would like to use for communicating with the Segway RMP. The default value is 'serial' (VCP), but you may also put 'usb' to interface via the ftd2xx library.
motor_timeout (double, default: 0.5)
  • This allows you set a timeout on the movement of the Segway RMP. If a cmd_vel is not received every 'motor_timeout' seconds, then the Segway RMP is stopped.
frame_id (string, default: base_link)
  • This is the frame_id used when publishing the odometry msg.
invert_linear_vel_cmds (bool, default: false)
  • If this is true then all incoming cmd_vel's will have their linear (x) components inverted.
invert_angular_vel_cmds (bool, default: false)
  • If this is true then all incoming cmd_vel's will have their angualr (z) components inverted.
boadcast_tf (bool, default: true)
  • If true then the node will provide the odom -> 'frame_id' transform.
rmp_type (string, default: 200/400)
  • This allows you to specify the model of RMP you are using. The possible values here are '200/400' and '50/100'.
linear_pos_accel_limit (double, default: 0.0)
  • Software controlled maximum possible positive linear acceleration (m/s^2). A value of 0.0 implies no limit.
linear_neg_accel_limit (double, default: 0.0)
  • Software controlled maximum possible negative linear acceleration (m/s^2). A value of 0.0 implies no limit.
angular_pos_accel_limit (double, default: 0.0)
  • Software controlled maximum possible positive angular acceleration(degrees/s^2). A value of 0.0 implies no limit.
angular_neg_accel_limit (double, default: 0.0)
  • Software controlled maximum possible negative angular acceleration (degrees/s^2). A value of 0.0 implies no limit.
Serial Interface Parameters
These parameters only apply if you are using the VCP interface for communicating with the Segway RMP. (You put 'serial' for the 'interface_type' parameter.)
serial_port (string, default: /dev/ttyUSB0)
  • This is the serial port name to which the node will try to connect.
USB Interface Parameters
These parameters only apply if you are using the USB interface for communicating with the Segway RMP. (You put 'serial' for the 'interface_type' parameter.) There are three ways to select which USB device you want to connect to: index, serial number, or description.
usb_selector (string, default: index)
  • This allows you to specify a method for describing the USB device you want to connect to the Segway RMP through. Possible options are 'index', 'serial_number', and 'description'.
usb_index (int, default: 0)
  • Device index to use when connecting through USB. Only used if the 'usb_selector' parameter is set to 'index'.
usb_serial_number (string, default: 00000000)
  • USB device serial number to use when connecting through USB. Only used if the 'usb_selector' parameter is set to 'serial_number'. It is a string because there _must_ be eight numbers to make a serial number. Example: '00000056' (this is my segway rmp200's serial)
usb_description (string, default: Robotic Mobile Platform)
  • USB description to use when connecting through USB. Only used if the 'usb_selector' parameter is set to 'description'.

Wiki: segway_rmpX (last edited 2012-05-03 18:48:22 by PiyushKhandelwal)