By combining and mixing a lot of great technologies we assembled this rc-car which you remotely can control over the world-wide-web.
The foundation is a classic rc-car (Ferrari of course) with digital steering and speed that we got from our local toy-dealer. We re-built the controller to not accept steering and speed-commands from the levers, but from an interface-board attached to the controller. The interface board was then, through USB, connected to our server.
On the server we ran a controller-application we built using Ruby and libraries like Ruby FFI and LibUSB. On top of this we had a Ruby Sinatra application and API for controlling the actual car.
We now had a car that we could remotly control over the internet by sending requests to our REST-API.
But how about visuals? I don't know about you, but we found it quite hard to steer a car without eye-sight.
With that said, we had to integrate a webcam. Biggest challenge - latency! How could we avoid having the webcam stream pictures too late, causing us to steer in the wrong moment?
At first we mounted a classic Chatroulette-type-of-guy-webcam (you know exactly what we're talking about) to the car, attached it to a wireless usb-hub and then had the server receive the images and broadcast them to our Ruby application.
Massive fail! It was like drunk-driving - totally out of control.
We had another brainstorming session and ended up with attaching an old crappy Android-phone to the car. The phone ran an application which broadcasted an image-stream to our local 5GHz wifi-network.
This stream was then picked up by our Sinatra application which would display the stream as well as let you interact with the car by the API.
We now had an rc-car, controlled - steering and speed - over the internet, with images delivered almost in real-time. Pretty sweet.
But let's push it a bit more, shall we? Why not make the steering a bit more realistic and intuitive?
Said and done. If you were to access the Sinatra application from your iPhone or iPad you got a whole other experience - fullscreen image-stream as on the desktop, but the car was controlled by tilting your phone forward/backward/left/right. Maybe more like a game controller than a real steering wheel, but let's not be that person now.
You can now sit at home in your sofa and steer our rc-car in the studio with an high-quality image-stream just by tilting your iPhone in different angles. Pretty cool, except it sets the alarm off way to often.