Society of Robots - Robot Forum

Software => Software => Topic started by: david_or_johnny on December 19, 2007, 10:43:30 AM

Title: SLAM
Post by: david_or_johnny on December 19, 2007, 10:43:30 AM
Does anyone have a code sample or a non-phd thesis description of this simultaneous localization and mapping problem and extended Kalman filter solution?

Thanks,
David
Title: Re: SLAM
Post by: DomoArigato on December 19, 2007, 04:20:11 PM
I found "SLAM For Dummies" helpful.  Heres a link. http://ocw.mit.edu/NR/rdonlyres/Aeronautics-and-Astronautics/16-412JSpring-2005/9D8DB59F-24EC-4B75-BA7A-F0916BAB2440/0/1aslam_blas_repo.pdf (http://ocw.mit.edu/NR/rdonlyres/Aeronautics-and-Astronautics/16-412JSpring-2005/9D8DB59F-24EC-4B75-BA7A-F0916BAB2440/0/1aslam_blas_repo.pdf)
Title: Re: SLAM
Post by: david_or_johnny on December 19, 2007, 07:44:25 PM
INVALUABLE! Exactly what I was looking for. My AI Bible thing had a small chapter on its basic underpinnings, but it needed the info from the previous chapters and I really don't have time to go through 25 chapters. Great!
Title: Re: SLAM
Post by: benji on January 07, 2008, 04:25:32 PM
hello guys, is it enough to use just lines(ransac) ass landmarks? is it just horizantal lines or all lines with a thrishold?
Title: Re: SLAM
Post by: Kohanbash on January 07, 2008, 06:29:17 PM
If your just finding horizontal lines than what is your feature, you will probably have to many lines to use.
You need a threshold for ransac...
Title: Re: SLAM
Post by: benji on January 15, 2008, 12:17:32 PM
any of you guys implemented real slam bot?
Title: Re: SLAM
Post by: neo01124 on January 18, 2008, 02:36:16 PM
hey check out www.openslam.org (http://www.openslam.org)
It has many good matlab and GCC tools for SLAM
Title: Re: SLAM
Post by: benji on January 19, 2008, 05:11:47 PM
thanks man,,, that seems lots of info
Title: Re: SLAM
Post by: neo01124 on January 23, 2008, 11:40:21 AM
anyone still reading check out this paper
http://dspace.nitle.org/bitstream/10090/782/1/s10csi2007hieberttreuer.pdf (http://dspace.nitle.org/bitstream/10090/782/1/s10csi2007hieberttreuer.pdf)
Its really easy to understand and all the concepts are given in a lucid and easy to understand way
I gess this one should be really called SLAM for dummies
Title: Re: SLAM
Post by: benji on January 23, 2008, 05:23:23 PM
thanks man , great .. still havnt read it but it looks awesome, thanks
Title: Re: SLAM
Post by: benji on January 25, 2008, 06:18:01 AM
again,.. reached the kalman filter and then blockkk.... anybody can explain how to implement this filter???

is it possible to implement SLAM using one range finder and one compass only?
Title: Re: SLAM
Post by: dunk on January 25, 2008, 11:21:42 AM
Quote
is it possible to implement SLAM using one range finder and one compass only?
hi Benji,
i appreciate your really trying hard to research this but
i think you are missing one of the main problems with implementing SLAM:
it is not a solved problem. there is no way to just "do SLAM".
large teams using many $thousand worth of laser scanners are not able to do it 100% accurately.
look at some of the Darpa Challenge footage for evidence of this.
http://www.youtube.com/results?search_query=darpa+challenge+crash&search=Search (http://www.youtube.com/results?search_query=darpa+challenge+crash&search=Search)

nobody here is going to be able to explain how kalman filters work better than a textbook on the subject.
it's the same for some of the other things you are stuck with.
(if anyone is willing to prove me wrong, maybe they should be writing textbooks for a living. post it here first though...)

i'm not saying it is impossible to do it with a compass and a single range finder but would be *extremely* difficult.
i think your best bet is to limit your robot's operating environment.
i presume you have seen Admin's Wavefront tutorial for an example of this: http://www.societyofrobots.com/programming_wavefront.shtml (http://www.societyofrobots.com/programming_wavefront.shtml)
here Admin has simplified the problem by limiting the environment. every object is assumed to be in one of a set number of grid positions. the grid is large enough that inaccuracies in odometery are not noticed. if enough error was to creep in it would not matter too much as the bot is capable of overwriting it's map if it finds it is incorrect about the occupancy of a location.
maze solving robots use a similar tactic.

so, i don't mean to discourage you but if you find it difficult it is because it is. there are no easy answers.


dunk.
Title: Re: SLAM
Post by: benji on January 25, 2008, 01:22:58 PM
thanks Dunk for this, anyways its not im after SLAM cuz i just want to implement SLAM,
ill tell you what do i want,
i have a robot ,i should get it to map a room (so its indoor environment) and show this map on MATLAB.
the wavefront algorithm is an algorithm to chase a goal navigate the robot to a desginated target, so its not what i exactly want.
the wavefront algorith does not explain enough about how to generate the map of the room its using to navigate,which is what i actually WANT to do.

so, i only found SLAM to be capable of mapping. and im not allowed to use becons ,so any other than SLAM?
Title: Re: SLAM
Post by: neo01124 on January 25, 2008, 02:14:00 PM
Hey dunk, I think admin's wavefront algorithm is a completely different paradigm as compared to a SLAM situation i.e. wavefront algo is basically a shortest path finding algorithm using something called a manhattan heuristic (generally used in A* algorithms in game programming) , so that wont help benji either.

IMO i think discussing a somewhat complicated and textbook oriented topic like a kalman filter on an open forum like this will basically make it easier to understand and implement for less advanced users (like me ;)) and maybe help trigger some grey cells which might actually lead to an optimal and more general solution of the SLAM problem.

neways just my two cents.....

hey benji could you pin point to something specific u dont understand about the filter.....?
Title: Re: SLAM
Post by: benji on January 25, 2008, 04:08:03 PM
i did understand that its inputs are odometry data and landmarks
, i did understand the example(one dimension robot) in the pdf file u recently introduced,in this example it suggests there is 2 sensor readings,
well, then the formula changes to (new sensor reading and its variance) and (previous readings and their calculated variance)
here is where i dont understand, are the filter's input multipe sensor readings of the same location?or readings at different locations?
if you can explain the basic equation i would be glad
Title: Re: SLAM
Post by: neo01124 on January 26, 2008, 03:18:19 AM
About your earlier question regarding a compass and the range finder, of what i have read till now i think SLAM requires atleast one exteroceptive sensor i.e. those sensors trying to observe what is external to it i.e. the world in this case (range finder,sonar,etc) and atleast one proprioceptive sensor i.e. one which tries to detect its own change in location using actuator motion or something (encoder,gps,etc) and i think you dont have a sensors truly belonging to the second category  but i think you could argue that the compass will help u give heading info which is the second category , ya thats correct but it cant tell u everything about robot pose ie (x,y) coordinates,etc.
I might be a bit incorrect here and there but i think u get the idea. ;)

About the second question regarding the filter there are two ways i could give u the answer one is i tell u the answer directly but i think the second way will be more fruitful for you i.e. just go through the paper once again really carefully and you will find the answer to your question, i think what you are asking is answered pretty clearly in the paper if you just read it a bit patiently and carefully.

 
Title: Re: SLAM
Post by: dunk on January 26, 2008, 05:04:20 AM
Quote
IMO i think discussing a somewhat complicated and textbook oriented topic like a kalman filter on an open forum like this will basically make it easier to understand and implement for less advanced users (like me Wink) and maybe help trigger some grey cells which might actually lead to an optimal and more general solution of the SLAM problem.
o, yes. i agree. i was just trying to explain why although Benji had asked similar questions across a few different threads he had not got any real answers.
the more focused a question though the more likely the answer. asking how to implement SLAM or how a kalman filter works is better explained by a reference to a textbook or .pdf.
on the other hand, explaining what you do understand about such a particular point and asking what is wrong with your understanding is far more likely to get a useful answer.

Quote
and atleast one prioceptive sensor i.e. one which tries to detect its own change in location using actuator motion or something (encoder,gps,etc) and i think you dont have a sensors truly belonging to the second category
i think Benji was planning to trust that his bot had gone the distance it was commanded to. you can get acceptable resolution this way as long as you have high build quality and are running on a smooth surface.

Quote
here is where i dont understand, are the filter's input multipe sensor readings of the same location?or readings at different locations?
both are valid.
if you have multiple sensor readings from the same location then you can assume the distance traveled = 0 (with no error) so the maths are far simpler as you only have to work out the correct way to average the sensor readings.
the examples in the paper mostly presume readings at different locations though.

Quote
if you can explain the basic equation i would be glad
this is the bit i feel the paper explains far better than i can. (as the guy writing the paper has a far better understanding of it than me.)

Quote
ill tell you what do i want,
i have a robot ,i should get it to map a room (so its indoor environment) and show this map on MATLAB.
the wavefront algorithm is an algorithm to chase a goal navigate the robot to a desginated target, so its not what i exactly want.
the wavefront algorith does not explain enough about how to generate the map of the room its using to navigate,which is what i actually WANT to do.

so, i only found SLAM to be capable of mapping. and im not allowed to use becons ,so any other than SLAM?
so as i said before, i would simplify the problem.
you want to have the robot map the objects round it so it can navigate it's way round them?
if i were you i would forget about SLAM for now. (make SLAM your next project...)
SLAM is used for taking into account the error you always get as a robot moves.
for the time being i would ignore this error. pretend your robot is exactly where it thinks it is.
now your robot has a map that is pretty accurate for objects it has seen recently but gets less accurate for objects that are further away.
if you command your robot to "move 2 meters north". it has a compass to know with reasonable accuracy which way north is. it can now work out a path round the objects on it's map to reach the destination. the objects close by on the map are probably going to be reasonably accurate but as it moves further it may discover there are objects in different places as where it thought. this doesn't real matter for it's current goal of "move 2 meters north" as it will still be close to a possible path. (presumably things have not moved *too* far since last time it was here...) simply overwrite the map with the new data as it will be more accurate than the old.

what i'm describing here is not SLAM. it's the same way Admin's Wavefront robot builds a map.
while it will allow your bot to take commands like "move 2 meters north" it will not allow you to build an accurate map with no errors.
i would leave that to a future project and first work on the simpler task of recording map data to the best of the robot's ability and making route finding decisions based on them.

if you do need an accurate map of everything the robot has seen the please ignore my ramblings.
it should be possible with the limited sensors you are planning but it will take you a *long* time.
i did see an article about a university robot project that could locate it's self on a predetermined map with multiple readings from only one sonar sensor but i can't seem to find it now...


dunk.
Title: Re: SLAM
Post by: benji on January 26, 2008, 11:16:23 AM
well dunk what you are saying is just to rely on my commands (odometry data), well the problem is that this error builds up and it becomes terribly huge after multiple scans then the MATLAB would not success in catenating(puzzling) this matrixes over each other ,which would give born to cracks in the map,or lets say if you have a long wall on your side and you take a scan then u walk a little and take another scans and then associate these 2 scans to each other then the wall may seem like a cracked wall on the matlab map ,so that would affect your navigation algorithm..
anyways, i would be happy to get away from slam as long as i can handle the accumulating error in a reasonable way(im not saying i want this error to be zero) but also i dont want it to ruin my work.
Title: Re: SLAM
Post by: live4luck on October 07, 2010, 08:33:35 AM
sorry..I want to ask some question.

Is there any software that can make a Simultaneously Localization and Mapping(SLAM) simulation without using a laser scanner and a real robot?
I mean a software that have built in laser and robot,then we just need to change the SLAM algoritm and create a map for robot to explore.