Segway RMP mobile robot. More...
Segway RMP mobile robot.
- Todo:
- Enable advanced functionality (ramp speeds, etc)
The segwayrmp driver provides control of a Segway RMP (Robotic Mobility Platform), which is an experimental robotic version of the Segway HT (Human Transport), a kind of two-wheeled, self-balancing electric scooter. Four wheeled versions are also available, and consist of two independent two-wheeled platforms bolted together. Thus, two instances of this driver should be able to control a four-wheeled version.
The driver has been updated to the 3.0 API to the point that it compiles and runs. Position2d commands and odometry have been tested and work, and both batteries report voltages. Testing has only been done over USB, with a Segway RMP400 platform.
This segwayrmp driver supports a usb interface for the newer RMP UI protocol. It also maintains compatibility for the older CAN interface.
- Compile-time dependencies
- libcanlib (from Kvaser)
- Notes
- Because of its power, weight, height, and dynamics, the Segway RMP is a potentially dangerous machine. Be very careful with it.
- Although the RMP driver does not actually support motor power control from software, for safety you must explicitly enable the motors using a
PLAYER_POSITION2D_REQ_MOTOR_POWER
orPLAYER_POSITION3D_REQ_MOTOR_POWER
(depending on which interface you are using). You must also enable the motors in the command packet, by setting thestate
field to 1.
- For safety, this driver will stop the RMP (i.e., send zero velocities) if no new command has been received from a client in the previous 400ms or so. Thus, even if you want to continue moving at a constant velocity, you must continuously send your desired velocities.
- Most of the configuration requests have not been tested.
- Currently, the only supported type of CAN I/O is "kvaser", which uses Kvaser, Inc.'s CANLIB interface library. This library provides access to CAN cards made by Kvaser, such as the LAPcan II. However, the CAN I/O subsystem within this driver is modular, so that it should be pretty straightforward to add support for other CAN cards.
- This driver uses version 2.0 of the Segway RMP Interface Guide as a reference. It may break compatibility with the older CAN only models, but none were available for testing to verify.
- Provides
- position2d
- This interface returns odometry data, and accepts velocity commands.
- position3d
- This interface returns odometry data (x, y and yaw) from the wheel encoders, and attitude data (pitch and roll) from the IMU. The driver accepts velocity commands (x vel and yaw vel).
- power
- Returns the current battery voltage (72 V when fully charged).
- power
- Returns the current UI battery voltage (12 V when fully charged).
- Configuration requests
- position interface
- PLAYER_POSITION2D_REQ_MOTOR_POWER
- position3d interface
- PLAYER_POSITION3D_REQ_MOTOR_POWER
- Requires
- none
- Configuration file options
- bus (string)
- Default: "canbus"
- Communication Protocol: "usb" or "canbus"
- usb_device (string)
- Default: "/dev/ttyUSB0"
- Device port, when using bus option "usb"
- canio (string)
- Default: "kvaser"
- Type of CANbus driver, when using bus option "canbus"
- max_xspeed (length / sec)
- Default: 0.5 m/s
- Maximum linear speed
- max_yawspeed (angle / sec)
- Default: 40 deg/sec
- Maximum angular speed
- Example
driver ( name "segwayrmp" provides ["position2d:0" "position3d:0" "power:0" "ui:::power:1"] bus "usb" usb_device "/dev/ttyUSB1" max_xspeed 1.5 max_yawspeed 80 )