SLAM car. Possible?

It's a big one. I'll go from the final idea all the way to the initial steps.

Well the main idea is to make a car that will use GPS to navigate from one point to another. It will take a Google Earth (or Google Maps) picture and compare its current location and the destination in order to build a route based on roads only for easier and drivable terrain (image processing in order to find roads in the picture). This sets the route on the macro level.

The car will start moving to the destination based on the route. Because the route won't be obstacle-free, the car will have sensors (distance, optical, contact etc.) in order to maintain the road on the micro level.

The idea of the sensors is mainly based on ultrasonic distance sensor. It will spin like a radar and map the distance of objects around the car. It will remember Distance-Per-Angle. It means it will know at each direction it looked what distance was the reading. This way it maps the "obstacle map" around him. Contact sensor and other stuff will be added in order to tackle more tricky obstacles like high grass (gives close distance reading but can be driven through.

So I'm a beginner in Arduino but have experience in programming and robotics of other kind. Is this thing practical?

Will the basic Arduino board do or it is better to buy improved one from the first place? What item list would you make for this kind of project?

You will need some fairly sophisticated software to do this. Its being done, (Look up the Google Car), but its not something a standard Arduino can handle on its own (at least by itself).

While I am very interested in such a project, its definitely not a simple one. I wish you luck!

mightyaad: What item list would you make for this kind of project?

Item 1: Find a sponsor willing to support a team of a few dozen highly skilled people for several years.

Will the basic Arduino board do or it is better to buy improved one from the first place? What item list would you make for this kind of project?

Start small and start experimenting with each critical part of the project. I would think a laptop pc would be a required component at a minimum.

Check out the compute power in some of these.

http://en.wikipedia.org/wiki/DARPA_Grand_Challenge

Curse you @Jack Christensen! I had that link copied and ready to post. (With a whimsical retort.)

[quote author=Coding Badly link=topic=177001.msg1313289#msg1313289 date=1373591358]

Curse you @Jack Christensen! I had that link copied and ready to post. (With a whimsical retort.) [/quote]

LOL, sorry 'bout that. So go for it, I'm anxious to see the whimsical retort! :D

mightyaad: Is this thing practical?

Practical? Yes - to a certain level. But not the way you are imagining it (for one thing, ultrasonic sensors do not have the accuracy needed - which is why for most of these projects, 2D and 3D LIDAR is used).

mightyaad: Will the basic Arduino board do or it is better to buy improved one from the first place?

The Arduino (in any form - though the Due might be a distant possibility) does not have the memory or processing power needed for most forms of SLAM (Simultaneous Localization and Mapping) - which is only one part of an overall solution:

http://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping

mightyaad: What item list would you make for this kind of project?

The first list item would be to understand what you are attempting to do. To this end, the following free and self-paced course should help you:

https://www.udacity.com/course/cs373

...considering who it is taught by:

http://en.wikipedia.org/wiki/Sebastian_Thrun

Thrun led development of the robotic vehicle Stanley which won the 2005 DARPA Grand Challenge, and which has since been placed on exhibit in the Smithsonian Institution's National Museum of American History. His team also developed a vehicle called Junior, which placed second at the DARPA Urban Challenge in 2007. Thrun led the development of the Google self-driving car.

Yeah - you might want to take some time and learn from a master of the subject...

That said - if you wanted to do something interesting and fun, and involve an Arduino (albeit peripherally) - here's something:

http://blog.davidsingleton.org/nnrccar/

Notice he mentions the 2011 Stanford Machine Learning Course, taught by Andrew Ng. Back in 2011, one of the first experiments in what are now known as MOOCs (Massive Open Online Course) was begun by Stanford - with two courses:

  1. Introduction to Artificial Intelligence (taught by Peter Norvig and Sebastian Thrun - gee, there he is again!)
  2. Machine Learning (taught by Andrew Ng)

The response to these courses by the public was overwhelming. It was really insane - they didn't expect to have as many people as they got sign up; I'm not sure though what the attrition rate was, and how many got to the end. I took both courses, but I had to drop out of the AI class due to personal issues (I did complete the ML class, though).

Because of the massive response, though, both Andrew Ng and Sebastian Thrun went on to found organizations/companies to promote MOOC learning. Professor Ng started "Coursera":

https://www.coursera.org/

...and Professor Thrun started Udacity.

You can still take the ML class at Coursera:

https://www.coursera.org/course/ml

...and you can take the AI class as well at Udacity (some day, I plan on re-taking and completing that course!):

https://www.udacity.com/course/cs271

If you haven't guessed by now - I also took the CS373 course when it was first offered by Udacity in 2012 as well; I completed it, but it wasn't without a struggle. What it (and the other two courses) taught me was that I really needed more study in the area of probability/statistics - which are extremely important areas of knowledge if you want to have any chance of success in your project.

So - make sure you know your probability/stats - as well as have a good understanding of linear algebra - before you attempt any of those courses. As I said, I struggled a bit on all of them, and where I struggled most was with the probabilities and statistics portions; the linear algebra parts were easy to grasp (once I wrapped my head around how to vectorize a serial algorithm).

Hope this helps...

[quote author=Jack Christensen link=topic=177001.msg1313315#msg1313315 date=1373595245]So go for it, I'm anxious to see the whimsical retort! :D[/quote]

I just finished watching Inspector George Gently. Whatever response I had floating in my mind is gone forever. =(

I just finished watching Inspector George Gently.

Do you have to have subtitles? :stuck_out_tongue_closed_eyes:

AWOL:

I just finished watching Inspector George Gently.

Do you have to have subtitles? :stuck_out_tongue_closed_eyes:

Not just me. There was a scene in tonight's episode in which Sergeant Bacchus is trying to decipher just what the heck his fellow Brit is saying. ;)

And don't get me started about British actors trying to do an American accent. Gag me with a spoon. :D

And don't get me started about British actors trying to do an American accent.

I have but three things to say to that - Dick Van Dyke. The prosecution rests.

Anyway - Hugh Laurie, he's still earning a fair whack isn't he? He must be doing something right.

Ok, I really like the SLAM idea, and that’s where my project is aiming.
The GPS and route mapping thing is set aside for now.

So the idea is to make several sonar modules spin like a radar in order to map the indoor or outdoor environment. I know it’s inaccurate to use sonar but I keep the budget low for the first project. I want to achieve at least 20 rpm and sampling every 3-5 degrees. Then storing the data and using it to map the room and the car relative position.
In case of hardware I want to use Arduino with SD card shield, Possible?
What other hardware options do I have?

This is the main idea:

Thoughts?

I want to achieve at least 20 rpm and sampling every 3-5 degrees

Ignoring for the moment a typical beam angle of 20 degrees or wider, do the arithmetic. 20 rpm is one revolution in 3 seconds. Best case (5 degrees), that's 72 samples in 3 seconds or 24 samples per second. That's quite a high rate, and echo rejection is going to be tricky - you won't know if a return is from your most recent pulse, or a more distant echo from an earlier pulse.

Can you suggest what sendor should i use and what board can support this project?

I'm not sure I understand the scope or environment of "this project" to offer a suggestion.

The project is simply to make a car be able to use the SLAM technique in oders to navigate between obstacles. Using sensors to know how far obstacles are from the car at any moment.

something like this as a start: http://1.bp.blogspot.com/-Cy_ABuAH85c/URD9q4FWZ2I/AAAAAAAACvA/bjrw4bbNLek/s1600/readings.jpg

to make a car be able to use the SLAM technique in oders to navigate between obstacles.

Yes, that's why I wrote "scope and environment" in my last post. Your initial post talked about Google maps, so I assumed "real car, outdoors", then you showed a video of a Lego Mindstorms vehicle.

The project is simply

I see no "simply".

The final goal is outdoor environment, most likely to be urban as well. But I will start with more sterile environment like a closed room in order to better control and calibrate the system.

The video is there to give the general idea of the systems operation.

But I will start with more sterile environment like a closed room in order to better control and calibrate the system.

You're going to drive a full-sized car around indoors?

"Better control and calibrate" what? The exact same vehicle, or a model with different capabilities and sensors in a totally different environment?