Let's Make Robots!

What platform / language should I learn?

A little background on me... I'm 30 years old, and have recently decided to return to school in order to study mechanical engineering and robotics. I've always been a tinkerer, and figure its about time to do something with that.

I've played around with a few robot languages and platforms (Arduino / Processing, Basic Stamp, NXT), but there are so many out there, that I'm almost at a loss to start. 

Here's the project I would like to start. I have a spare netbook currently running linux (but I can throw windows on it if necessary), and I would like to basically attach a few motors to it, as well as a camera and ultrasonic range finder and have it roam around and explore.

I have experience with using the arduino board for all my inputs/outputs, but I'd love to find a way to let the netbook itself be the controller for inputs / outputs. I've heard of LabView, Robot Operating System, and others, but I'm at an impasse on how to proceed. 

So, I'm asking advice as to what would be the best thing for me to learn academically, as well as what would work best for interfacing with the computer and hardware / sensors. Also, something that isn't too expensive hopefully. If you need anymore information from me, please let me know, and many thanks!

Comment viewing options

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

...but to have C++ and Java in your pocket you never loose.


Also learn something like CIP that teaches you how to build complex reactive embedded systems.

Familiarize yourself with language workbenches like MPS or ActifSource. Create your own domain specific language(s) to express your problem(s) as exact as needed. Learn how to define coherent semantic models that let you express the problem you try to solve on the right level of abstraction. Don't fly to low with general purpose languages if you do not really need to. Generate code from your domain specific language to the target language like C++.

Keep Arduino as your gate to the physical world. It is good. And there is tons of sensor/actor open source code out there. Learn how to make Arduino libraries out of the code you find and learn how to use them within the generated code.

Thanks for the quick reply. I'll definitely start looking those up and learning what I can. What are options are available as "physical gates" for hardware interface? For example, if I wanted to hook up servos, a camera, a speaker, and an ultrasonic sensor to my netbook, what would I use outside of an Arduino (since I want the processor of the PC to be the controller, not an ATMega or the like). Thanks again!

There is tons of microcontrollers you could use to act as physical gates.

Stick to what you like. As you are familiar with Arduino go ahead using this one. But switch if you like to. There should be no religious debate about the technology you use. Have fun with whatever you use - then you're fine.

Whatever you choose can be a slave of the controller that you want to have on the netbook. Use i.e. serial connection to the microcontroller as a simple start but use another technology stack like bluetooth or WIFI if you have the parts and skills to do that.

Then the master (your controller, the program that runs on the netbook) sends commands to the slave (the microcontroller). A command could be FWD, BWD, STOP or MEASURE DISTANCE. A higher level command could be CRUISE, AVOID, HOME, REMOTE, WANDER or WALL FOLLOW. The slave sends states and actual values to the master.

This closed loop is the ground of a reactive system that has commanded behavior combined with a required behavior problem frame.

The definition system architecture is your creative playground. Having a topology with one netbook and some microcontrollers to interact with the physical world is a good start.