Robotics development tools

Hi Everyone, I am new to field of robotics and I was wondering what tools I should consider studying for development of a robot system that can learn and
make maps from the environmental interaction with sensors(vision etc). I know basic programming languages like c and delphi(lazarus,freepascal). I think c is the language of choice for most people while developing programs embedded systems(although i like pascal a lot). To test certain algorithms for embedded systems on PC, I think c,sdl,opengl,glut mix is good(that will make me less dependant on os).is that enough.
I want suggestion from people with experience about what all should i invest my time in studying.
Currently all i know is that C is the language, but the libraries for doing similar things vary OS to OS. I think I need to understand and implement lot of algorithms instead of learning lot of separate libraries.
please share your views on this
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mandeep wrote:

It all depends on what you're doing.
I like Java for robotic control. However, currently I'm building a Leaf robot (http://www.leafproject.org/) which uses a combination of LISP, C, and C++. This robot has speech recognition, vision, AI, and navigation/mapping.
One interesting thing is that the software runs not only on simple differential drive robots, but also on a couple of R2D2 and B9s (robot from Lost in Space).
I will be using this as a platform to experiment with many things without having to worry about the low-level stuff.
However, if you're just starting out, I would strongly recommend building a small robot first. If you like C you can use the MAVRIC-IIB (http://www.bdmicro.com/) board. If you're willing to try Java, the uVM chip is a PIC with a Java compiler! (http://www.muvium.com /).
If you don't want to worry much about the mechanics, get a base from Budget Robotics (http://www.budgetrobotics.com/).
It's good to learn on a small robot because when a small robot runs over something, nothing is hurt. When a large (PC-based) robot runs over something, there is pain. :( -- D. Jay Newman Author of _Linux Robotics_ http://enerd.ws/robots /
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Hi Mr. Newman, Thanks for the advice and information. I see that using a PC and its devices would be fastest way to implement a robot with vision,sound sensor and outputs. Also it would be the fastest way to test all algorithms. we also need to extend the PC system to add more different sensors and physical motion devices etc. ( so a laptop integrated with initial design is a good idea) I checked out the Leaf robots site and my own idea is roughly along the same path of leaf's inspiration of a creature interacting with environment and learning. I think I would first start out with C. I would like to keep the learning curve lowest in programming language because the aim is to allow system to learn and use rather than be programmed all the time. I would dedicate more learning time to try out algorithms. Could you please tell me why you chose java? i am not familiar with all the advantages it would have over C in building the robot. Hope to be able to discuss with you further after I am more into it. I am going to study robotics and embedded system course from this year in uk.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mandeep wrote:

You're welcome. And it's just "Jay".

A Mini-ITX system will also work.

Good. We can always use another hand.

I strongly suggest starting from a known base. Doing everything on your own can cause you to reinvent the entire wheel. Starting from a working infra-structure can speed the development process. -- D. Jay Newman Author of _Linux Robotics_ http://enerd.ws/robots /
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
mandeep wrote:

If you do use a laptop, you need to keep it protected; I've known people who's laptop hard drive was crashing due to vibrations. They solved this by booting off a live CD and keeping everything in memory.

C/C++ is a good language to learn; it gives you direct access to the hardware, but it also requires you to have a deep understanding to accomplish certain "basic" tasks. Another language in this category is Forth. Java is nice because it isolates you from certain memory allocation issues, offers easy object-orientation and threading, and has a good standard library. Other languages like Lisp, Scheme, and OCaml provide higher abstractions that simplify tasks like AI but tend to complicate direct hardware access. Most languages offer a C binding to allow interaction between them. If software's your thing, be sure to experiment with several different languages; write a simple program in each of them; this will give you some perspective on what their specialties are.

Have fun with your studies. Other fields that may interest you are control theory and mechanics.
Daniel
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Thats right normal harddrive of laptop may have problem due to vibrations. Hope samsung and others release NAND Flash Harddrive which would be great for this. Also could we use the SD memory card and card reader for this?
I have no problem with learning and using more than 1 language for task other than that, then while making programs you have to focus more on language related issues like rules and more libraries thus increasing complexity a little and divert me a little from the task of problem solving. C is very concise language(i dont know about forth) while other languages try to accomodate huge number of features for several types of problem solving. Its a kind of Trade Off to stick to C initially to get the most benefits possible. [I think selection of one language(C) is more because the way i think to solve problems and the type of problems i intend to face rather than being the ideal general case of implementing system]. This actually is a hard decision to make because i have to balance software tool learning curve with algorithms implementation and learning curve(need to examine and weigh from many options). And since time keeps running out I must keep on increasing my skill level for useful output by doing something. Maybe the best way is adapting to requirements along the way as techniques will keep adding on.
Mandeep
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
"I like Java for robotic control. However, currently I'm building a Leaf robot (http://www.leafproject.org/) which uses a combination of LISP, C, and C++. This robot has speech recognition, vision, AI, and navigation/mapping.
One interesting thing is that the software runs not only on simple differential drive robots, but also on a couple of R2D2 and B9s (robot from Lost in Space). "
Jay, could you expand on this?
Links?
Thanks
TMT
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Too_Many_Tools wrote:

The main link is http://www.leafproject.org/
There is an interesting video on that page. And complete instructions for building such a robot.
There is the Yahoo group, Leaf_an_AI_robot that is the main mailing list. -- D. Jay Newman Author of _Linux Robotics_ http://enerd.ws/robots /
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.