Thoughts on the Segway RMP Omni
In general, we would not recommend the Segway RMP 50 Omni for use as the mobile base of a robot, unless you plan to use it in an environment with a flat, clear floor.
This realization came from informal testing of the Segway RMP 50 Omni in our lab on simple and common obstacles found in homes and other human environments. Specifically, we stood next to the Segway RMP 50 Omni and used a gamepad to drive it over a power cable, a small throw rug, and a doorway threshold. These informal tests resulted in the following problems:
- power cable got caught in the wheels
- throw rug was bunched up between the wheels
- the robot high-centered on the doorway threshold
If you do choose to use the Segway RMP 50 Omni, you should plan to add additional sensors for odometry, since the wheel encoders are not very informative due to wheel slip. You can learn about our approach to odometry using a light ring and camera that observes the floor from the following paper:
Visual Odometry and Control for an Omnidirectional Mobile Robot with a Downward-Facing Camera, Marc D. Killpack, Travis Deyle, Cressel Anderson, and Charles C. Kemp, IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2010
You can also find some code for the Segway RMP 50 Omni in our open source code repository in the following directory:
The repository can be downloaded from the following website:
Our code communicates with the Segway RMP 50 Omni through USB. The front and back robots that form the Segway RMP 50 Omni each have a usb cable that we connected to a single Mac mini. We used an open Python USB driver to communicate with them. You can find the code for direct velocity control of the Segway RMP 50 Omni at the following location in our repository:
One word of caution is that we rearranged the two robots that form the Segway RMP 50 Omni, so some modification to our code would be required to use it with a stock Segway RMP 50 Omni. We recommend putting the robot on a block so that the wheels aren't touching anything when you start your testing.