obstacle avoidance robot

hi, i m new to arduino platform.I m planning to make a obstacle avoiding robot which moves between destination-Room1,room2,room3(The plan of the house is printed on a big cardboard :smiley: and the bot should navigate that 'house').
I m confused on how to implement the navigation.My guide said it wont be possible to use a wheel encoder because an obstacle on the path will make the preloaded program obsolete.Is there anyother method to implement the navigation. =(

Encoders are fine, in fact you'll find it harder to solve the problem without them. All your guide is telling you is that you can't assume that driving from one room to another is a standard, pre-specified operation - you may have to adjust your route on the way to avoid obstacles. You can still use encoders for dead reckoning, but you can't say that to get from room one to room two you turn east and go forward for 20,000 encoder clicks - circumstances may have changed this time.

wildbill:
Encoders are fine, in fact you'll find it harder to solve the problem without them. All your guide is telling you is that you can't assume that driving from one room to another is a standard, pre-specified operation - you may have to adjust your route on the way to avoid obstacles. You can still use encoders for dead reckoning, but you can't say that to get from room one to room two you turn east and go forward for 20,000 encoder clicks - circumstances may have changed this time.

exactly, but how can i adjust the number of turns to suite the situation. Is there any other way ?

You just need to keep track of where you are - at it's simplest, an X and Y offset from a known origin. Direction and encoder clicks will tell you how your current x & y are changing, i.e. dead reckoning. An array of coordinates tells you where the other rooms are so you simply need to drive so that you move to the desired location. If you have to avoid obstacles, you will continue to update your position as you drive around them and then recalculate your course to the destination. You'll probably need to have intermediate waypoints along the routes between rooms to ensure that you go through doorways rather than blindly drive through "walls".

Sounds like an interesting problem - could be a lot more complicated than you think.

What other sensors does the robot have?
Is the house map pre-loaded into the robot.

There are a number of ways this could be implemented.

  1. SLAM: seems a quite popular field at the moment, but it quite complex and non-intuitive to implement. It also requires a lot of memory - more than the arduino has.
  2. You could use a searching mechanism - each room would have a "beacon" of some kind so the robot knows roughly where it is and where it needs to get to. Much simpler to implement - could be done with sonar/infra-red distance sensors maybe a low res-camera driven by an external controller.

AntR:

  1. SLAM: seems a quite popular field at the moment, but it quite complex and non-intuitive to implement. It also requires a lot of memory - more than the arduino has.

Something interesting:

http://cs.krisbeevers.com/thesis/

Note the "ratbot-slam: A fixed point implementation of FastSLAM 1 with multiscans as described in Chapter 7, meant to run on the Ratbot platform with an ATMEGA64 microcontroller as the main CPU."

So - the possibility exists to do SLAM - maybe not on an UNO, but a Mega is a definite (theoretical) possibility...

Check out Loki and the A* navigation video,

Loki Robot 2 – Exploring the House. This shows Loki’s navigational capabilities
using his built-in map and A* navigation.