In the summer of 2008 I conducted an internship at Microsoft Research, collaborating with the Institute for Personal Robots in Education (IPRE), to develop parts of Myro 3.0, the upcoming version of IPRE's educational robot software.
The goal of the Myro software is to provide a simple programmatical interface for robot control for introductory Computer Science students. Myro makes robot interfacing nearly transparent and accessible to students without any programming background, so that instructors may teach computer science concepts in the context of robotics. IPRE develops and provides software, a curriculum, a textbook, and inexpensive robots to universities teaching computer science using robots.
Myro 3.0 is implemented on .NET, mainly in C#. A back-end communicates with robots via Microsoft Robotics Developer Studio, and exposes simple middle- and high-level functions to any .NET language, including IronPython, IronRuby and C#. These exposed functions make it very easy for students to script robot behavior, and for GUI's to interact with robots in real-time.
I am no longer working on this project. IPRE's up-to-date information on development of Myro 3.0 and Pyjama is on the IPRE wiki.
Myro 3.0 Back-end
The back-end to Myro 3.0 targets several capabilities, both for end-users (students), and developers writing new robot drivers and front-ends:
- For end-users (students):
- Super-simple robot API
- Almost all communication details handled automatically:
- Synchronous robot access, hiding underlying asyncronous communication
- Automatic, transparent error handling and appearance of a stateless robot connection
- For developers of new robot drivers and front-ends:
- Extensible end-user API
- Create a driver for any MSRDS-accessible robot with little or zero coding
- Exposes multiple abstraction layers
- Utilities and base classes to simplify authoring of new components and services
- Consistent and robust error handling
The Myro 3 Developer Manual gives more details about this work.
Myro 3.0 Reference GUI
On top of the Myro 3.0 back-end, I implemented a graphical front-end demonstrating real-time robot interaction, video streaming, Python scripting, and embedded simulation. Screenshots follow: