Greetings!

If any of the info on this website was useful for your projects or made your head spin with creative ideas, and you would like to share a token of your appreciation- a donation would be massively appreciated!

Your donation will go to my Robotics Fund, straight towards more sensors, actuators, books, and journeys. It takes a lot to continue building these robots, and I’m really thankful of everyone who helps encourage me along the way.


USD


CAD

“A wise robot once said to me through Serial.println- that robots teach us about ourselves.”

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

Benefits:
Sleek, new way of interfacing
Active community
Games are in the browser
Real time

Problems:
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

Benefits:
Easy way to interact with a game on a server
No middleware needed

Problems:
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

Benefits:
Auto refresh
Openable API

Problems:
Still need a fancy server to enable long running ajax processes

- Processing game, RESTful API

Benefits:
It would work.

Problems:
It’s ancient.

Here are interesting links that were explored while researching:
physical-js JavaScript-based physical computing
Circuits@Home lots of USB Host & HID information here
Garmin communicator did some interesting this with communication
Mozilla Audio Data API
jasmid MIDI synthesis
WebRTC
getUserMedia
Device element discussion
Implementing device
WebRTC Group
LUFA
Node.js and Socket.io
Ajax periodic refresh
RESTful API with PHP and Apify
Node.js and WebSockets Demo
Nodejitsu
NodeSocket
Cure
Cloudnode
Webbynode
Nodester
Joyent
Heroku
nowjs

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!

3 CommentsLeave a Comment


  • bhtooefr

    3 years ago

    Just had an idea for using HID.

    HID keyboard actually is NOT unidirectional. If you toggle the state of caps lock, num lock, or scroll lock, you can send data back to the “keyboard”. Also, I forget if repeat rate is handled on the keyboard with HID, but it is with PS/2 – so you may be able to send a repeat rate packet or something similar, too. (The OS probably won’t like that, though.)

    The problem is that you’d have to have something running locally on the client (with more permissions than normal JavaScript has) to do either of those, and toggling the state would be OS-specific. So, it’s not REALLY driverless, but I believe it could run in userland with no special permissions – for that matter, it MIGHT even run in an OS X sandbox.

  • Chris Kraft

    3 years ago

    I am not sure you have defined the problem that you are trying to solve. You’ve defined methods of solving problems.

    What is the end goal in the simplest of terms? Interface the robot to a computer?

    Wouldn’t a HID joystick device work? Its been a bit since I looked at the USB spec but I was programming bi-directional joystick devices on my Atmel AT90USB1287.

    Beyond that calling Java “ancient” is, well, ignoring its potential usefulness. Focus on the best tool, not on what has the most hype. Node.js is interesting but the jury is still out on it and many pro developers are calling it pretty bad. http://teddziuba.com/2011/10/node-js-is-cancer.html

    There are people who promote technologies because they need to sell 1 – themselves, 2 – sell services, 3 – sell books. Don’t get sucked into the hype.

  • bhtooefr

    3 years ago

    Yeah, if you’re running locally, HID joystick works, too – I started writing my comment based on it being a web app, started to include HID joystick, remembered that it wouldn’t really work with a web app, deleted that, then realized there would have to be a local component, and then forgot to put the HID joystick stuff back in.

Leave a CommentPlease be polite. We appreciate that.

Your Comment