Version 5, last updated by jlg at January 31, 2010 UTC

We want the robot to be able to sense its environment in several ways. This page describes the sensors that are (will be) used in the robot and their utility.

Movements

First, it is necessary to know where it is in the world, to measure its movements. One of the most widely used solution at Eurobot is the use of separate free wheels with optical encoders, on the same axis as the driving wheels one (for a robot with differential drive train). This works great, I've used this solution on several robots for now and would recommend this solution for anyone wanting to know precisely where their robot is.

Since we don't really have much room for this, we'll have to fall back on the poor man's odometry: directly on the driving wheels ! This is not without drawbacks of course, because we won't be able to distinguish if the robot is running or stopped with its wheel burning the ground... A precise dosage of accelerations will be very useful to avoid this. A very basic system (that showed its worth) is used: an old ball mouse encoding optical disk with appropriate quadrature IR sensor to detect the direction. This system will provide around 1000 ticks per driving wheel revolution, not bad at all :)

Just for fun, two accelerometers will be present in the robot, at the very far ends of the driving train, to measure accelerations and see if we can derive anything useful from such sensors to evaluate the robot's position. In theory, if we have acceleration we can have speed and position by integrating it, but I fear the integration error to be too big for this information to be useful.

I also plan to use a gyrometer to measure rotations along the robot's vertical axis, to enhance the precision of the calculated cap. This is critical, as an error on the angle of the robot leads to a great position error after a while.

Ball detection

The camera will be used to detect the red balls from far away. This will be useful after the first ball is in the container, when all playing elements position will be completely random after the opponent's passage.
For low-range detection, I plan to use little Sharp sensors. I've mainly used IR telemeters (GP2Dxxx), they are reliable even in the cup conditions, provided you shield them a bit. Unfortunately they are too big for the robot, so I'll use the smaller digital IR sensors. Two 10cm on the sides, and one 5cm in the center, looking towards the front of the robot, in the same direction as the camera. This will allow the robot to lock up on the target ball and push it in its center.

Obstacle detection

Several low-profile, IR proximity sensors like the ones under the robot will be on the sides and back to detect if there is an obstacle, and react accordingly.