RoboBrrd’s Interactive Games Interfacing
One of the things that has been bugging me about RoboBrrd the past two days is wondering how it will interact with the software games. When planning this, I was thinking of making the games in Processing (Java). However, Java is getting old, and with new technologies on the rise, like websockets, I wanted to research this more.
You may be wondering, why are the interactive games so important for RoboBrrd anyway? If you are just trying to create an educational robot, who needs the games and software? We want to create a blended reality between the real RoboBrrd and the virtual RoboBrrd for the student, so that it is always accessible and available to the student to learn, hence the prior nickname ‘Learning Pet’. RoboBrrd is more than a robot, it’s a way to actively interact with virtual based learning applications.
One of the cool ideas that is arising in the hardware-software interface realm is driverless and middlewareless communication. The HIDUINO is a really cool implementation of this. Check out the website and the video for more information. http://dimitridiakopoulos.com/hiduino
Here are some ideas of ways of communicating that I was exploring:
- Socket.io on remote server
Sleek, new way of interfacing
Games are in the browser
Hosting for node.js with socket.io…
Would have to run some sort of middleware to communicate between the socket and the Arduino.
- RoboBrrd as a keyboard HID
Easy way to interact with a game on a server
No middleware needed
Only one way communication
- RoboBrrd as an audio or video HID
When researching this I found some ways of communicating to a usb webcam, but it is only for video streams mainly.
- RESTful API with AJAX auto-reload
Still need a fancy server to enable long running ajax processes
- Processing game, RESTful API
It would work.
Here are interesting links that were explored while researching:
Circuits@Home lots of USB Host & HID information here
Garmin communicator did some interesting this with communication
Mozilla Audio Data API
jasmid MIDI synthesis
Device element discussion
Node.js and Socket.io
Ajax periodic refresh
RESTful API with PHP and Apify
Node.js and WebSockets Demo
As you can see, the implementation that would most likely work would be the Processing game with a RESTful API back to the server for storing data. So yes, I did pretty much just go around in a complete circle, but I think that learning about more ways to communicate between software and hardware is really interesting.
So, happy holidays everyone- and there will be a week 2 progress update post later this evening!