Ben Axelrod Microsoft Robotics Developer Studio Extras

Here are some of my RDS 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.
Creative Commons License

Simple Dashboard

Simple Dashboard This is my improved dashboard service. It was written about in the book: Programming Microsoft® Robotics Studio, by Sara Morgan. My improvements over the default dashboard 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.



Tracker This service will record the robot's global position history and draw it. Also works with my Logger / Player services below.


Logger / Player

Logger / Player These services will log to file all the SimplePosition and Sick LRF messages broadcast. 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. New in 2008: XSLT's to set filenames, and start and stop running.


Segway RMP

Segway RMP I used the Segway RMP 200 in one of my classes at Georgia Tech. Here are a bunch of RDS 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

Scribbler I wrote some services to control the Scribbler Robot with MSRS. (These services are released and licensed through IPRE).

Physical Sick LRF

Simulated 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.


Simulated Sick LRF

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

Clean MSRS This simple program (not a RDS service), will scan a directory for unwanted files or folders. I use it for deleting the obj, Proxy, and bin folders that get generated automatically before zipping up my services, or just doing house cleaning. New in 2.0: open directory dialog, delete read only files, and drag in folders.

New Generic Contracts

I think the number of generic contracts supported by RDS needs to be improved. Here are 5 additions: BehaviorVote, GenericParallelGripper, LED1DArray, SimplePosition, and ToneGenerator.


Maze Generator

Maze generator This was the first MSRS add-on I wrote. It has since been improved upon by Trevor Taylor and can be found here.

Not Yet Released

Hough Transform Hough Transform Lines Hough transform for wall finding / localization. (Co-authors: Gaurav Gupta and John Hutchison).

Kuka Kuka robotic arm. Controls a Kuka arm via EKX. (Co-authors: Gaurav Gupta and John Hutchison).