Hey guys, Cycloned here. I am just hoping to start with Robotics. I know nothing, I have an NXT kit and have done some work with that, but nothing at a higher level, and now that Im in engineering I understand I've got to stop using such kits and actually start building robots from parts. I would like to know what microcontroller that I should use. There are some events in my college (robo wars, robo soccer, sumo wars, and an obstacle course) that I wish to participate, so I was wondering what would be well suited for such competitons.
I understand that since Im a beginner, I should probably use an augmented controller, so please do recommend one, and other things I might need to get started. I am going to be reading other articles on this forum, and I would appreciate being linked to guides, tuts, videos, etc so I can learn as much as possible.
If I understand your question correctly, you are following some sort of enginering class, and want to make some sort of robot. You may be a beginner, but if you are doing some sort of enginering course that includes electronics enginering, I’d like to suggest mbed. You could just start with Arduino, like everybody and their grandparents, or if you want some real power, start with something a bit harder. No hard feelings for Arduino, I use it a lot. I am studying Electronics enginering, and we use mbed. On mbed.org they got something called a “cookbook” should be enough to get you started. The community is a lot smaller then the Arduino community, but code is generally of way higher quality.
Choosing a processor is like choosing a religion or an operating system. Everybody has a strong opinion as to which is right but somehow everyone ends up in the same place.
It really comes down to support and help that you can get whether it is the guy down the hall, other folks in your classes, books in the library or online. In my opinion, if you have a good mentor you can work with face to face, that is worth a lot more than all the online resources in the world - assuming the mentor is good. If you don’t have that, then you are stuck with books and online resources. Online, Arduino and Raspberry Pi (RasPi) seem to dominate so either would be a good choice. Adafruit.com has some excellent tutorials on both which I have found invaluable. Here, there is a pickaxe tutorial to get you started. The depth here on Pickaxe, RasPi, Arduino, Propeller is impressive; these folks know their stuff.
I would ask around at your school to find out what supports you can get from your teacher, TAs, robotics groups on campus etc. 15 years as a developer and I can tell you that having someone you can ask questions is invaluable to your learning curve. Otherwise, you end up spending huge amounts of time on silly things instead of getting to the meat of what you really want to do - build cool robots!
How to choose a processor. Here are some rules I’ve learned in 20+ years of working on embedded real time stuff. Not concrete rules but they will make life easier.
I think the processor depends entirely on the complexity of the robot’s behavior. First decide what it is your robot will do. If the robot is only to move in a straight line then stop and turn when it detects a wall then any of the simple controllers (Arduino and the like) will work. But on the other hand if it will do autonomous navigation and respond to natural language commands like "go to the kitchen, find the green tennis ball and bring it here. Well then you’ve seriously outgrown the Arduino.
The next rule is to use what you know. Once you’ve learned the details of one type of controller platform stick with it.
Another rule is to find a development environment that is portable, that can be used on multiple platforms. I like C++ on Eclipse. It can write code that runs native on my iMac or under Linux of ARM or even the Arduino all on the same IDE.
Put all these rules together and I think it means you need to become familiar with maybe three controller platforms and a short list of programming languages and then choose from this small set of stuff that you know how to use.
What happens is at first a robot is just motors, interrupts and sensors. Then after this works the real work beginers because complex behavior is all software. What you need for this is a good programming environment with lots of suport. and abilty to run the required libraries. For example if your robot uses vision you likely need a platform that can run OpenCV.