Society of Robots - Robot Forum

Software => Software => Topic started by: m1tch37 on August 05, 2008, 12:57:28 AM

Title: Robot Visual Positioning System
Post by: m1tch37 on August 05, 2008, 12:57:28 AM
I am trying to write software that will be able to locate a robot in a known (but very noisy) environment. My robot has a 36 point point proximity sensor (10 degree separation), rotation sensors on the motors and a compass. The robot is in a field 1.25x2m with high walls.

So it would appear very easy to locate the robot, simply using the proximity sensors to detect the distance to the four walls and use the compass to find the heading. Unfortunately its not that easy... My problem is my robot will not be the only one in the field (max 4). In my algorithm i must assume that any (or all) of the proximity readings could be reporting invalid data due to a blockage and that wheels may slip, making rotation sensors not 100% reliable.

I looked at using a particle filter. However the conventional method works in this way: a command is sent to the motors to move 20cm, and once the action is completed the sensors are used to correct (via a weighting system) any inaccuracies in the motors. However particle filters work well only with small uncontrollable errors in observation. It doesn't react well to a very noisy environment, for example 6/36 proximity readings being way off (due to another robot blocking it) or a collision with another robot that creates wheel slip.

It seams bad, but I am confident I will be able to find a way to fuse all the observations using some sort of filter, and somehow determine which readings are currently not reliable, and determine the position of the robot. This kind of problem solving really interests me, but I just wonder if this is beyond my ability?

Does anyone have any experience with robot positioning? Does anyone have any ideas? (I dont want to add any other sensors if i can avoid it)

Regards,
Mitchell W
Title: Re: Robot Visual Positioning System
Post by: Kohanbash on August 05, 2008, 10:01:20 PM
Hi
You probably dont want a particle filter, you want a kalman filter. Kalman filters are very usefull and are commonly used to fuse date to get an improved position estimate.

As for detecting a wall vs another robot you probably want to compute your motion and than project it to determine if your sensor points have moved.
So:

if ((oldPoint(x,y) + robotMovement(x,y)) == newPoint){
   object=wall;
} else{
   object = robot;
}
Title: Re: Robot Visual Positioning System
Post by: Admin on August 09, 2008, 08:22:30 AM
What is your robot supposed to do? What is the operating environment?

Quote
My problem is my robot will not be the only one in the field (max 4).
You need a sensor that can tell the difference between a robot and the environment. But your sensor is 2D with a *very* poor 10 deg resolution. It just won't happen . . .