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.
- An iPad app (NXTDriver) to control the rover using the accelerometer and display the video feed from the iPhone
- An iPhone app to relay video from your rover. Currently is NXTiPhoneCapture which uses a screen scrape method, and NXTiPhoneAVCapture is an experimental version that uses AVFoundation.
- A standalone embedded Cocoa web server for the Mac (NXTServer) that connects to the Lego Mindstorm NXT module over bluetooth to relay commands remotely sent by the iPad.
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).
- 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.
- build the "framework" target in the legonxtremote project. copy the LegoNXT.framework from the build/release folder to your /Library/Frameworks directory
- Build the NXTServer app. Run the server and click "Connect" to pair your server to your NXT unit over bluetooth.
- (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 (firstname.lastname@example.org)
You can download this project in either zip or tar formats.
You can also clone the project with Git by running:
$ git clone git://github.com/zbowling/NXTRover