If you count the box I drew a face on and taped to a (tethered) remote control toy car, I’ve been building robots for almost 50 years. Over the years, I’ve seen interest in robots come and go with changes in technology. I’ve bought books by David Heiserman, Frank Stafford Jr, Martin Weinstein and Gordor McComb. But I’ve never seen so much interest AND progress as we’ve had the past few years.
A few things seem to have come together all at the same time. Interesting robots on film and TV that just beg to be duplicated. Cheap and easy to program micro controllers. Open source software of all sorts. Easy and low cost access to all sorts of electronic and mechanical hardware from all over the world. And mind meets like LMR.
You’ll spend a lot of time agonizing over how to solve specific problems, studying software and searching and collecting parts from all sorts of sources. But if you put enough reasearch and effort into your project, yeah–You can accomplish pretty much anything you can imagine.
That said I think building any kind of AI on a small microcontroller is rather futile. Then you probably should do all your processing on a regular PC and have the robot as a frontend.
Your best bet for a that is to use Linux on a Raspberry Pi, this is what I am going to try with my robot. This will provide you with a whole linux platform to play with and you could say implement the code in Python. Use the Aurdino for the hardware layer to drive, motors, servos, led’s, speakers etc.
As this is sort of a subjective question I will toss in my two cents worth. I think the biggest block to progress is the software, this is true at the hobby level but even for big engineering firms throwing much money at this. Its a fundamental difference in how we and computers perceive the world. As a friend once told me, when a man looks at a newspaper he sees a “pattern” of words. When a computer looks at a newspaper it seens the “dots” that makes up the letters. We see large patterns, robots and computers see small details.
A robot is the merging of three fields, mechanics (the body), electronics (the brains) and software (the mind). Of these the body is ready to go. We can make them move and servos can be positioned with great precision. The electronics is good, some senors are very detailed, our biggest issue is taking what the sensors give us and applying it (the software).
Many of the sensors we use here, sonic, infra-red, do not provide detailed resolution but are excellent for quick robot decisions, (obstacle in my way, yes or no). Cameras can provide more information but then the image must be studied. Years ago DARPA organized a cross desert race between robotic vehicles. The first year they burned, drove off cliffs and got stuck. When you drive to work in the morning and see a shadow from a telephone pole you know its a shadow from experience. The robot doesn’t know if its a shadow or the edge of a cliff.
Saying this I don’t think anyone should be discouraged. There is great progress to be made here and I think it will all come. I believe firmly the day will come that robots will be as normal or as common as seeing the neighbor’s cat walking across the street. There is a lot of fun to be had here, making and improving our robots and if history is to be a judge, sometimes its the amateurs that make the break throughs that the experts miss.
Interesting observations, and I agree with you. That being said, even the bars to software are beginning to come down. It’s possible to take a high level language, find a free implementation of it, install it, and find free tutorials. (Granted–some easier than others.) Not so long ago, it was necessary to buy expensive compilers, books and classes to really get anywhere with a programming language.
Not to mention, there are tiled (what DO you call them?) interfaces for Arduino programming like mini bloq and Ardublock that greatly simplify Arduino programming.
After seeing this response I realize I missed half of BioMeds question. While it IS possible to combine microcontrollers, it’s not a beginners project, and as you pointed out, easier to use a full computer front end.
That being said, the line between controllers and desktop mainboards blurs more with each passing day. It’s almost passe these days to see yet another Arm based dev board running Linux.
I am a hobby robot builder. I have experience with electronics and mechanics but not so much with programming, especially computers. I can program microcontrollers to do simple stuff, but get stuck with more advanced things. I have always thought that even though the microcontrollers have little resources, having a few to work together can eliminate the need to have a computer on board or wirelessly connected. Well, for some stuff anyway. There are cameras with their own processing controllers on board that can be used instead of a webcam for blob and shape recognition. There are speech recognition boards and also text to speech synthesisers. But I have not yet seen a mapping solution even if it involves several microcontrollers to do that. Same for A.I. But it would be interesting to see at lest some pseudo A.I., a behaviour based solution that would make the robot seem more “intelligent”. I wish I had the knowledge to tackle such a project myself…
I am interested in seeing if I can use the infra-red sensor on the robot to recognize rooms in my house. Obviously if you are less than 2 feet tall, the room doesn’t look square but will have some odd shape based on how the beam bounces off the furniture as the robot turns in a circle. I am hoping I can get the robot to circle once, find the center of the area, move to that and then circle around again to try and match the room against one of the nine choices in a table in memory. If the robot can match the room and determine its orientation, then I might be able to give it waypoints that will allow it to drive from one place to another in the house. That would be very neat. Unfortunately I am still working on the “don’t run into the wall” steps, but I have my dreams…LOL.
You are quite correct, I found this website by chance just typing in the word robots into Google. I was oblivous to the power of microcontrollers and have really enjoyed this site. I now have the LMR kit from Solar Robotics and a lot of spare parts and am starting to explore this hobby. There is no doubt that this is remarkably easier to do today than even 10 years ago. Clearly advances are coming quickly.
Getting back to my original question, regarding the AI, I am talking about very basic “AI” as apposed to advanced stuff.
Also, I will be using the PIC32 along with C, the reason being, I have already ordered my PIC32 board, and I am a C programmer.
I would just like to add, if it is possible to combine multiple PIC32 MCU’s, and also, is anyone aware of being able to use either C++ or C# with such 32bit MCUs?
One last note, I have heard of people building robots using Intel Atom CPU’s onboard.
Are we at the stage where we can obtain an old CPU, obtain its data sheet, and set that up and run C or C++ code instead of a PIC based system?
If this is the case, then I cant wait to get into this properly.
You can definitely combine multiple PIC32 micros - there are many many ways of doing this, but I’d suggest you look at the integrated USART modules for some easy micro-to-micro comms.
I don’t know of any C++ or C# compilers for PIC micros, but I suspect that you’d be better off just using one of the standard C compilers anyway.
While you may be able to get the datasheet on a CPU, they need a lot of extra peripheral circuitry to be useful. Anyone building a robot with something like an Intel Atom is almost certainly using a small form factor motherboard with all that peripheral stuff already on it. They’re also likely to have a Windows/Linux/other operating system loaded on it to run their robot program, rather than programming the whole thing directly themselves. If you really need the processing power there are some good single board computers out there - Raspberry Pi, BeagleBoard, Chumby to name a few.
To combine multiple CPU’s is just a matter of the protocol that they can talk to each other.
Regarding to AI, what is the definition of AI. Say, a mapping algorithm is this AI? Learning how the environment is and store this map in memory, later using it to navigate around. Is this already AI, I would say yes.
AI is also if you use sensors for light, combined with e.g. heat sensor. Learning that “cold” light (LED light, daylight etc.) is save and can be navigated to but “hot” light (a flame) is not save so avoid it. This is simple AI too.
As a programmer you should be able to write this down in code. Just start simple with only one CPU and then expand it step by step.
PS: While writing this some ideas popped up. Thanks for asking here and inspiring me ;-)