Let's Make Robots!

How to turn my netbook into a robot "brain"

So I've had some experience with an Arduino and a BOEBot, and was thinking of taking another step forward.

Long story short, I want to build a robot that uses my netbook as a brain. I want to add a camera for motion tracking, which I know could be tricky using an arduino. So, I'd rather use a bigger computer to do the thinking. How would I go about doing this, basically how could I interface with my servos and other sensors? I'm almost hoping to find something that will let me plug in my computer and use the IO pins of a board (like using a netbook instead of an ATMega on the arduino). This way, I put my netbook on a base, add wheels and sensors, and let it go. 

In addition, what language or environment would people recommend I use? I love using the Arduino PDE, but I'm always interested in learning more. I'm studying mechanical engineering, and hoping to get a leg up in my robots. 

Many thanks, and I apologize for the rambling of this email, it's been a long day. 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Just an option, using a servo controller from Pololu or similar gives you servo outputs as well as digital/analog input and digital outputs. You can code the PC in any language you want that can read / write a serial port from JustBasic to anything else but if your talking about camera access you'll need to code in whatever can talk to that sub module. I have a remote control mobile platform that uses a maestro 12 port servo controller driving radio control ESC devices controlling the motors and servos for a camera pan/tilt and servos for IR sensors. Again, just an option Stephen

Most languages have some sort of binding to OpenCV which would be all you need for the camera access (beyond drivers of course)

So, would I go about it this way?

Use the arduino to drive any motors and sensors, and then have the camera image be processed by the processor off the netbook? How would I tie the two of these together. Also, many thanks to all of you, i'm checking out all the links and learning a lot, it's much appreciated!

Really your programming the netbook to look at the webcam information and say "You know what, i need to turn left" and then programming the arduino to recieve a command like "LEFT" and when that command is recieved it makes the motors turn correctly for the bot to turn left.

 

I forgot about the arduino programming cables working as a serial line. If you know the COM number for it you should be able to do a standard serial.writeline() (or language equievelant) to chuck data to the arduino.

Well, you plug the arduino into the usb port of the netbook and they can talk over the (virtual) serial port.

You will need to program the arduino to accept commands for the motors and commands to report sensor readings. It's really simple. A lot of people around here have done just that.

You are of course not limited to using processing. Most bluetooth dongles for computers will expose themselves as a standard serial port. Any programming language capable of communicating with that serial port should suffice. Processing seems to fit into this niche well but I personally have more experience with python, C# and VB.net so I would use one of them (openCV has several .net bindings, dependant on what your tracking you may not even need openCV although openCV might do it better). At the end of the day if yopur just using the arduino for motor output and the odd sensor input then anything that can chuck some commands over bluetooth and recieve some will suffice, everything else can be done on the netbook.

Processing does the job fine but if your more familiar with other languages then why not use them?

To make the interface you can simply use an arduino. I've have been doing that for a while. Processing is a great language to do what you are asking, if you want some inspiration you can have a look at this robot and processing sketches I've done some time ago: http://letsmakerobots.com/node/22906

On my robots I usually like to program the arduino, but, if you prefer to do everything on the computer side, firmata may be a good option for you: http://www.arduino.cc/playground/interfacing/processing

If later you want to do some better image processing have a look at openframeworks: http://www.openframeworks.cc/. It is a bit more complicated than Processing, but OpenCV works very well there.

Another possibiliy is Roborealm.

Grog's robot lab might also be the way to go. It can help you with video recognition and more.

Processing and bluetooth is your answer.

Processing is a programming language that will allow you to code programs that can run on your desktop. There are libraries available for motion tracking, color tracking and much much more. This software can be your netbook brains with the Arduino as a "I/O board". Now, the great news is that if you speak Arduino, you already speak Processing --They are almost identical. I would highly recommend it.

Beyond that, it really is just a matter of getting your computer to talk to your robot brain. An Xbee or a Bluetooth module is the way to go. I personally use a BlueSmirf BT unit from SparkFun and it works great. It even uses the internal BT function of my lappy so I don't have to use an external board or dongle.

I would REALLY check out Processing, it is a fantastic language.