Simultaneous localisation and mapping (SLAM) with Arduino

Hello Everyone.

I am totally new in robotics and Arduino. But, I have experience with different programming language including C/C++. I have also done 10 to 15 Arduino examples, just trying to learn it for my project.

I am will be working on a Robot project and my main task is navigation. I was thinking about SLAM. The robot takes advantages of Arduino Duemilanove 328, we may replace it we Mega.

Was wondering if it is possible to do Mapping and Localization with Arduino.
I am kind of worried as I heard that the memory limitations may not allow me to do mapping and localization. Can you please suggest any possible way to solve SLAM using Arduino and kind of cheap accessories that are required for this project.

I appreciate your help
Kind regards

I'm not an expert in SLAM; far from it. But I did recently complete the Udacity CS373 online course, which covered a form of SLAM (and the techniques leading up to it - ie, kalman filters, A*, etc). That form of SLAM was something called "graph SLAM".

Anyhow - if I was going to do any form of SLAM on an Arduino, I would likely use a Mega2560 with a memory expansion shield. Even so, it might not be doable because your RAM footprint is really tiny. It might not be anywhere near large enough for SLAM...

Thank you very much for quick reply

What do you think if I use a PC to do SLAM calculations and communicate through Wireless. Is it possible to do SLAM?

or Do you have any other recommendation to do navigation, SLAM in Indoor environment?

Thank you

Farhad:
What do you think if I use a PC to do SLAM calculations and communicate through Wireless. Is it possible to do SLAM?

That would certainly be a better option; SLAM (from what I understand) tends to require a lot of computation that must be done fairly quickly for any scenario of a realistic scope. A PC used in this manner would be ideal.

Farhad:
Do you have any other recommendation to do navigation, SLAM in Indoor environment?

Well - the only other option would be to put the "PC" on board, and treat the Arduino (which could be be whatever you wanted to use, an Uno or a Mega) as a means to interface the PC with the outside world, and/or as a "pre-processor" of data (as needed). The "PC" wouldn't necessarily have to be a full-blown machine, either; you might be able to get away using something like a BeagleBoard, a Raspberry Pi, or maybe even a router running a custom form of OpenWRT.

One of the challenges you'll run into doing SLAM, likely, will be which sensors to use; the more accurate your sensors, the better (but in SLAM, you won't ever have -perfect- sensors, and so you need to take into account noise as well). What you typically see used in SLAM is a 2D or 3D LIDAR system as part of the sensor package, along with one or more cameras. The data from all of these sensors is combined and used for the SLAM algorithm. While cameras are certainly possible to use for a homemade SLAM system, LIDAR is still not at an affordable stage (then again, I don't know what your budget is - if you have $1000.00+ USD to spend on a sensor, go for it!). The cheapest 2D LIDAR sensor on the market currently is incorporated into a Neato XV-11 vacuum cleaning robot (you have to remove the sensor and hack it to make it work with your own design - this hacking has already been done though, and there are a few web sites, etc describing how to do it). This sensor is not a "long range" sensor though, but is OK for smaller robots. Alternatively, Parallax sells an inexpensive 1D Laser Range Finder module, which you could mount on a servo and pan around to gain a 2D LIDAR sensor (it won't be fast, but it might be adequate). You could do the same with an ultrasonic module, and/or a Sharp IR sensor module. There are a few options here, but you are basically looking at a tradeoff between "slow, inexpensive, inaccurate" and "fast, expensive, more accurate".

Using multiple sensors and integrating their output will likely be necessary. Probably the best option would be to use a servo to pan a combination ultrasonic sensor module and the Parallax Laser Range Finder at the same time (use the recently developed NewPing library for the ultrasonic module, provided it is supported - there's a thread on the forums, look for it). Such a sensor "pod" wouldn't be a bad deal, and would cost under $200.00 USD.

Thank you very much indeed

solved most of my questions