|
Here are some of my MSRS services and utilities that I have created. You are free to use this code for educational and personal use, but any commercial use requires my explicit permission.

Simple Dashboard
This is my improved dashboard service. Now for MSRS 1.5. My improvements include:
- Improved joystick control. - I used a trigonometric transform to convert the joystick position to robot wheel powers. In my opinion, this gives you much better control of the robot.
- Throttle control for safety. - My improved joystick control actually gives the robot 100% power when you push the joystick all the way forward. (The original dashboard only gave 60%). Because you might not want to drive the robot at 100% power, I added a throttle to scale the joystick commands down.
- Default localhost as machine name. - Less typing.
- Removed drive and stop buttons. - Mostly for space, but also less clicking.
- Robot width shown in LRF cylinder view. - Navigating the robot with the cylinder view can be tricky because you don't have a feel for how wide the robot is. So I added a red color to the cylinder at the width of the robot, projected forward.
- Overhead view of LRF added. - I think both LRF views show useful information and I like to use them both.
- Removed joystick singularity. - When the joystick is pushed all the way left or right, there was a singularity that caused the robot to spin in different directions.
- Keyboard control. - Use the arrow keys to drive your robot. (Note: service directory must have focus).
- Robot width in top view. - Laser hits show up red when in front of the robot.
- Robot width projected forward in cylinder view. - Green dots project robot width forward.
Mapper
This set of services allows a robot with a LRF to map a region. The robot must have some way of knowing its global position. Also works with my Logger / Player services below.
Mapper.zip MSRS 1.5 source code (29 k)
Tracker
This service will record the robot's global position history and draw it. Also works with my Logger / Player services below.
Tracker.zip MSRS 1.5 source code (28 k)
Logger / Player
These services will log to file all the SimplePosition and Sick LRF messages broadcasted. Then the file can be played back in substitute of the original services. Works with either the Mapper or Tracker services above. Please download one of them if you would like to test this out.
LoggerPlayer.zip MSRS 1.5 source code (25 k)
Segway RMP
I used the Segway RMP 200 in one of my classes at Georgia Tech. Here are a bunch of MSRS services for it. Note you must run "RMPInstall.msi" before using these services. This zip file includes:
- A C++ native wrapper for USB communication with the robot
- A SegwayBase service
- A SegwayDrive service that implements the generic differential drive contract. (Also has a nice XSLT).
- ForeAft/Yaw encoders and Left/Right encoders services. I did not use the generic encoders here. I found it too obtuse.
- A SegwayBattery service that will 'say' the battery voltage when you do a get on it. (Will also warn when battery is low.)
- Message overflow bug-fix by Philip Case.
Scribbler Robot
I wrote some services to control the Scribbler Robot with MSRS. (These services are released and licensed through IPRE).
Physical Sick LRF
Due to the many bugs in the real Sick LRF service, I wrote my own from scratch. It only handles the default settings of the Sick: (centimeter mode, 180° scans, 0.5° resolution, 38400 Baud). But if you want to modify it to use some other settings, it should be very easy to modify this service to suit your needs. I also added a flag that will flip the scan. This is useful if you mounted the sick upside-down, or just want it to give you the points in left-to-right order.
NewSick.zip MSRS 1.0 source code (10 k)
Simulated Sick LRF
I wanted the simulated laser range finder to have the same nice xslt and visualization options as the real LRF service. The cylinder view includes my red robot width visualization as well.
Clean MSRS
This simple program (not a MSRS service), will scan a directory for unwanted files or folders. I use it for deleting the obj, Proxy, and Properties folders that get generated automatically. This is handy before zipping up your service, or just doing house cleaning.
New Generic Contracts
I think the number of generic contracts supported by MSRS needs to be improved. Here are 5 additions: BehaviorVote, GenericParallelGripper, LED1DArray, SimplePosition, and ToneGenerator.
Maze Generator
This was the first MSRS add-on I wrote. It has since been improved upon by Trevor Taylor and can be downloaded here.
Not Yet Released
Hough transform for wall finding / localization. (Co-authors: Gaurav Gupta and John Hutchison).
Kuka robotic arm. Controls a Kuka arm via EKX. (Co-authors: Gaurav Gupta and John Hutchison).
Wish List
Here is my wish list for MSRS additions:
- Hokuyo URG-04LX Laser Range Finder - These small LRFs were all over RoboCup 2007. Small enough to be mounted on a pan-tilt base, low power, and accurate. This is the new LRF of robotics.
- Serial Servo Controller - Mini SSC II is a simple (3 byte) standard for hobby servo controller boards. I have seen a number of servo controllers support this standard such as: Pololu, ServoCity, Ozitronics, and of course Scott Edwards Electronics. Just FYI, servo controllers that don't support this standard include: Devantech, Parallax, Lynxmotion, Pontech, BasicX, and Phidgets.
- 3D laser - Just for fun, I want to put a LRF on a revolving base and create a 3D point cloud in the simulator. Partiview is a good 3D point cloud viewer that I have seen.
- More generic contracts - And some community collaboration around this.
|