Let's Make Robots!

Getting the internets to talk to my robot.

I swear I did my googling first. The problem actually, is a bit of info overload. Need some simple answers...

I would like to start looking at "connections to the internet", software on the PC and robot-brains. Assuming that the microcontroller part of things would just be a I/O device via say, Bluetooth, I think I am really asking about the connection from "internet" to software on my computer.

I should also add that I am leaning in the direction of Processing or Processing.js. I speak this language and from the searching I have done, it seems it is sorta ready to do what I want to do.

What do I want to do? What DO I want to do? In the end, I want to add more personallity and features to Mr. Walter. Brainstorming on this would include:

  • Control of walter (being able to send it data) via an internet connection
  • Abliltiy to keep an eye on different "feeds"
  • RSS (maybe he can read me updated blog entries)
  • News feeds
  • Weather
  • Posiblility of getting video from Walter and on to the web --I am thinking less "Ustream" here and more "raw video" being dealt with via HTML code on my own site
  • Bottom line --Some kinda data from, or inputed to, the internet and that data coming out of my processing app.

Now, I have a computer and the internet and processing, obviously. I also have a net server module as well. I have also seen many of the "netserver" tutorials. I suppose if I wanted to do a very specific thing, I could probably find a specific tutorial for that one thing. In this case, I think I am looking to start leaning how the whole "web thing" works from the beginning. I have no idea about ip addresses and networks and mac addresses etc. I feel I should really how this all works instead of just typing into some netserver example code and going from there.

Where can I learn this stuff? --or-- What are the correct words to use when I am googling?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Thanks bunches for that link to the java stuff --I have never seen anything so clear! It's almost like I understand!

Now we're talkin'.

Thank you guys, this is what I was looking for. Really, I was just at a point where I didn't know what question to ask. You guys have come through in spades.

Grog --you are exactly right, so many protocalls, so many ways of doing this and thus led to some google-overload. I can't tell you guys how much just the acronyms help. Ahhhhh... now I have something to google that will get me somewhere.

I guess I have to go a start my homework now --but thanks again guys, I am sure there will more questions coming.

Hey CTC,
I know a little bit about moving info on the intertubes.  So here is my 2c..
There are a proverbial metric shit tonne of protocols to move data.  There are the low level protocols like TCP and UDP.  They describe the low level stuff.  Like the - how do I exactly get from Computer A to Computer B, and How do I make sure what I sent is what Computer B gets?

Then there is a Bazillion higher level protocols which rely on TCP & UDP.  They describe the structures of the messages that you send.  Some buzz words (control protocols RPC, RPC-XML) (general "readable message structures" XML, SOAP, AJAX, REST) (more commonly recognized protocols FTP HTTP SMTP SNMP)   I could go on and on, but you get the gist...

I found it an important design aspect to keep all that stuff well contained in a module.  That is what I did in MRL, and it allows me to swap out protocols without destroying other parts of the program.  That way all your code see's send(data) and read(data) without knowing or caring about how the details were handled.

In MRL interprocess communication was initially done with XML over TCP, then I did JSON over TCP, then I did native Java serialization over TCP, and now I'm doing Java serialization over UDP (the fastest).

If you want to communicate with different applications like Web Servers, Twitter, IM Apps, etc.. you still want to keep that stuff from mixing with the input, output or control of your bot...(easy squeezy)

Instant messaging protocols like Jabber or XMPP should give you the answers you need for remote control Walter via internet. You can use exiting applications like Skype, Google Talk or AIM to connect to Walter without thinking about firewall configuration or security leaks.


MAC addresses are hardware addresses for things like network cards. They are like serial numbers for network hardware. You asked about tutorials for networking. I found two. One is for basic networking and looks to be most everything I covered in my 16 week networking course in college and the other is JAVA centered and may help you when it comes to programming.

http://www.techiwarehouse.com/cms/engine.php?page_id=d9e99072 - Networking basics tutorial

http://download.oracle.com/javase/tutorial/networking/overview/networking.html - JAVA and networking

I forgot to mention. I believe you will likely be using UDP for your transmission of data from Walter to the internet, don't worry you will find out what UDP is.