Fork me on GitHub

NXTRover by zbowling

Control your Lego Mindstorm robots using your iPad's accelerometer and relay video back from an iPhone for a real first person perspective.

SuperRover (NXTRover) is a project put together over the 48 hour hackathon at iOSDevCamp 2010, where it went on to win Coolest App.

NXTRover has 3 parts.


A Lego Mindstorm robot, a Mac, an iPad, and optionally an iPhone


The code is just meant to illustrate a working prototype. A few things are currently hard coded for the demo (such as the IP address of the web server in the iPad code). I'm hoping to clean this up in the coming days and make them user configurable. The code also assumes that the right rover motor is connected to port A on your NXT module and the left motor is connected to port C and that the launcher motor is connected to port B. (This can be changed in the NXTServer code).

  1. In the NXTDriver project, update the ip address of in the code to point to your Mac. Build and install on to your iPad. Connect your iPad to the same network as your Mac and launch the app.
  2. build the "framework" target in the legonxtremote project. copy the LegoNXT.framework from the build/release folder to your /Library/Frameworks directory
  3. Build the NXTServer app. Run the server and click "Connect" to pair your server to your NXT unit over bluetooth.
  4. (Optional) Build the NXTiPhoneCapture and install it on an iPhone 3GS or newer. Launch the iPad app and the iPhone and bind the two.

If everything is connected and built everything should work. Have fun!!


MIT/X11 (basically BSD modified (2 clause version) )


Zac Bowling -
Max Weisel - Video steaming
Jonathan Wight - Cocoa HTTP Web Server

Special thanks to Charles Du for the legos and inspiration and project management, and our two lego builders and drivers Philip and Kevin. Also iOSDevCamp and PayPal for the venue in order to create this wonderful project.


Zac Bowling (


You can download this project in either zip or tar formats.

You can also clone the project with Git by running:

$ git clone git://