Virtual maps

hey guys

so i have recently received my raspberry pi and i have made my arduino work with it which is the first step of many. so i need help with using a arduino the virtually map a room and store it onto a sdcard.(thinking of using the ethernet shield for sdcard storage)

in simplified terms
i need a robot to virtually map a room (with objects on the floor)
and then move around the room using some sort of algorthym to cover ever bit of free space ( unless it is covered by a object).

like i said i have my raspberry pi using the serial ont he arduino so i can use python to code a very complex program to make this work. i just need help on figuring out how i will make the robot map a room and store it on its sdcard.

thnaks for your time, Evo

i just need help on figuring out how i will make the robot map a room

You need to decide your budget.

so how much would you recomend?

What are you planning to use as sensor(s) to enable the robot to determine where it is in the room, and where obstacles are located? How do you intend to keep track of where the robot is in the room? How do you intend to have the robot sense what direction it is facing, and how far it has moved?

If you haven't considered the above questions, or haven't factored them into your design - then you need to go back to the drawing board, so to speak.

The fact that you are asking such questions at all leads me to believe that this project is outside of your current skill level in the study of robotics.

How much have you researched room mapping using a robot? What books or other resources have you consulted? There are tons of articles, white-papers, research projects, web pages, forum posts, books, magazine articles - going back 30-40 years, and many of them (but not all) easily found via a google search. The rest you might have to dig at your local library (or a university research library - if you have access). Also - there's something to be said for used book stores...

Another thing to consider is that not everything in the room is bolted down. Stuff moves. Just try walking through a room you KNOW, in the dark. Every piece of furniture has moved - into your path.

How are you going to deal with that?

And, what it the Pi doing? Running the cheer-leading section?

I am about to embark on a similar journey. I though I would use a "degrading world view". Not sure if its an official pattern or algo but the idea is that you store the location of obstacles you run into. With the passing of time, the weight (truth) of that data is degraded. It is less true that the obstacle is still there, the longer you wait. When the weight has dropped under a certain threshold, the obstacle is removed from the world view.

When an obstacle is found at the expected location (within the initial degrading time) the degrading factor (how fast information degrades) is lessened (it will take longer to degrade). This will make stationary or very slow moving obstacles very "true". If an obstacle is expected but not found, it is removed also.

Navigation decisions can now use fuzzy logic to take 'known' obstacles in mind.

This does require that you can within a decent margin, locate the robot's position on a virtual grid. The current tests I'm running show that a relative grid system is very hard to get accurate - small location errors are introduced with each steering move or over long distances.

Well, that's the idea anyway. I build a beginning of a prototype of the "degrading world view" in a software simulation game once - years ago, but the idea stuck.

Well, that's the idea anyway. I build a beginning of a prototype of the "degrading world view" in a software simulation game once - years ago, but the idea stuck.

What happens when you run into something unexpected? The cat decided to nap on the rug in front of the fireplace instead of in the window? In order to not vacuum up the cat (or whatever it is your robot is doing while wandering around), you still need to determine that there is, or is not, something in the path. If not, go that way. If so, you need to add that object to the map.

While the "degrading world view" sounds interesting, and is a good way to deal with cats, assuming that walls won't be there after a period of time isn't realistic.

People don't operate under that assumption. They assume that walls and other "permanent" fixtures will be there tomorrow, next week, and next month.

Of course, people also rebuild the map constantly, because we see that the wall is still there, the couch is in the same place it was this morning, etc.

Too many people think that they can program a robot to run around building a map, and that once the map is built, nothing ever changes and the robot always knows exactly where it is on the map. I'm glad to see that you realize that neither assumption is true.

Surely all maps are virtual? Or is there a specific technical meaning here?

this is something I thought about doing, my idea was to use a magnetometer to measure my angle, then spin in a circle and record distances at each angle, then store these in an array, then move x inches at y angle and do it again, then move x inches at z angle, repeat, do this a number of times and find a graphical way to show this as a map, possibly using trig to account for my movement, and creating a java program to take this data and put dots on a screen for each distance at each heading from each point of measurment