Saturday, March 13, 2010

Announcing the e4-Rover Mars Challenge

For the last couple of weeks, a few people from the e4 team and NASA JPL have been busy working on a cool programming contest to introduce e4 to the EclipseCon attendees, and to encourage them to try out e4 and learn about it. (See below for acknowledgments.)

The idea is to drive a LEGO rover to collect points - your mission is to align the robot's on-board "instruments" with martian "rocks" in an arena. There are two ways to win - collect the most points to win a Lego Mindstorms NXT 2.0 set, or write the best e4-based client to win a Lego Mindstorms and a trip to the NASA robotics lab in Los Angeles. Other prizes include credits for Amazon Web Services and T-Shirts.

The architecture of the game system is interesting - the Lego robot executes commands that are sent to it from a local machine via bluetooth. The clients won't communicate with this local machine directly though - to make everything scalable, data about the state of the game, and an overhead view of the arena and the rover is made available using Amazon Web Services. We have an Equinox-based server on EC2, and are using S3 for making data available in a scalable way.

We provide a basic e4-based client, with a joystick-like way to control the rover. If you want to win the grand prize, you'll have to improve the client to make it look better and operate the robot more efficiently. We basically want people to hack the client to beat the game. To help you do this, we have started a tutorial (which we'll refine and expand over the next few days) and a FAQ. We will also add some more comments to the client code, and perhaps tweak the code a little bit, so make sure you check if there are newer versions of the source code available.

To give people a head start we are making the current source code for the client available today. You can download the code now, run the client but you can't actually control the robot. You need a hash key to control the robot and those will only be given out at EclipseCon. What you will be able to do is watch us have some fun playing with the robot, erm, I mean, perform more testing, because the client includes a webcam view of the robot. More detailed instructions are available on the contest web pages.

I have been playing with the robot for the last week. For a little while, I was at the top of the high score list, but since then others have gotten much better. I'll have to end the blog post here to do some more testing. ;-)

Driving the rover is a lot of fun! It's only a week or so until you can play too, at EclipseCon.

P.S. Credit for the idea goes to Jeff Norris, who will be presenting a keynote on Wednesday. Khawaja, Victor, and Mark from Jeff's team worked on the hardware and the server side, and Brian de Alwis, Benjamin Cabe and myself wrote the simple e4 based client. Lars Vogel is helping with the documentation. Ian Skerrett from the Eclipse Foundation is coordinating everything, Lynn is going to help run the contest at EclipseCon, and a good number of e4 committers have been recruited as volunteers.