Ben AxelrodMicrosoft Robotics Developer Studio Extras
Main > Work History > Microsoft

Following an internship at Microsoft Research where I helped launch Robotics Developer Studio, I continued to work with this system in school and elsewhere. Here are some of the things that I have created with Microsoft RDS.

Simple Dashboard

Simple Dashboard

This service was included in RDS. But I improved it in a number of ways. It was actually featured 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

Mapper

This set of services allows a robot with a laser range finder to map a region. The robot must have some way of knowing its global position. Also works with my Logger / Player services below.

Tracker

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.

Segway RMP

Segway RMP

I used the Segway Robotics Mobility Platform 200 in one of my classes at Georgia Tech. Here are a bunch of RDS services for it.

  • 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 RDS for IPRE.

Sick LRF

Sick LMS291

Due to the many bugs in the real Sick Laser Range Finder service, I wrote my own from scratch. It only handles the default settings of the Sick. 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.

Clean MSRS

Clean MSRS

This simple program (not 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 Generic Contracts

I wrote five additional generic contracts: BehaviorVote, GenericParallelGripper, LED1DArray, SimplePosition, and ToneGenerator.

Maze Generator

Maze generator

This was the first RDS add-on I wrote. It has since been improved upon by Trevor Taylor.

Hough Transform

Hough Transform Hough Transform Lines

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

Kuka

Kuka

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