Predicting the Fiducials
(Amin's section)
One element necessary to run the Kalman Filter algorithm
is a prediction on what fiducials should be seen from a
given position. This can be done using the properties of the
projection into the omnicam.
 |
The angle relative to the horizontal base of the omnicam. |
 |
The angle of the pixel relative to the center of the omnicam
(looking down at the omnicam) |
 |
The distance from the focus at which the line of sight intersects the paraboloid |
 |
The x position of the pixel in the image |
 |
The y position of the pixel in the image |
Given the position of the robot and the known layout of the
fiducials in the environment, an image can be generated of
where the robot should see the fidicuals in the omnicam from that
position. Each fiducial has a known (x,y,z) location in the world.
Given a robot position, the fiducial images are rotated and translated
to be robot-centric. Next, using the above equations, the (x,y) locations
of the fiducials in the omni image can be calculated, as well as
the angle from the center. These expected
positions are used in the next step to help optimize using the Kalman Filter.
 |
Predicted fiducials at (450, 30, 0)
No range was set so the position of all the fiducials is
calculated. In use, only fiducials within a range would be
considered.
|
Kalman Filter
Variables
- X - vector of robot pose (x, y, θ)
- P - covariance matrix. Error in position
The Algorithm
- Move robot
- Update X by odometry
- Update P by error model of odometry
- Get image from omnicam
- Find fiducials in image
- Use Least Squares to find x which minimizes
where µ is the current estimated position, E is the expectation
function from the image and z(x) is the prediction fiducial positions
at point x.
- Repeat
When the robot is moved forward, it takes an image with the omnicam. The
fiducial-finding function is called which returns a expectation value at each
angle. The Kalman Filter algorithm begins with an initial estimate of it's
position and a covariance matrix based on the error model of the odometry.
The fiducial-prediction algorithm is called to find the angles at which fiducials
should be seen at the point. The sum of the energies at these angles in the
fiducial-finding expectation function is found. Least Squares is used to iterate and
find the x which minimizes this expectation value. The optimal x should be
the corrected robot position.
Results
For the experiment, fiducials were placed on the walls in a hallway in the MARC
building. They are placed on average 2 meters appart and are staggered
between the left and right walls. Ideally, the robot will be able to
see 2 or 3 fiducials clearly at any time. The positions of these fiducials is recorded.
A robot is then moved down the hallway, turn around, and moved back to the original
starting point. The robot moves in a "meandering" motion (not straight). Images
are recorded as the robot moves.
For our experiments, analysis of the images occurs offline but the system could easily
be implemented and modifying to run online during robot movement.
 |
Odometry-based localization. This is what the robot odometry reported
as the robot position over time. It can be seen how error accumulates, especially
angular error. This is most significant when the robot turns around at the end. |
Unfortunately, we were unable to get the complete system working. The system ran,
but results were not accurate. Least Squares was unable to find a better match than
the initial guess in each case. There are two sources of error.
- Experiment Error - For this project, we gathering all the data to be processed
offline. Images were recorded with on a DV recorder while the odometry was
recorded by the robot. A source of error could be aligning the
odometry readings with the correct image. If this alignment is off, the
algorithm will be using incorrect odometry readings. Ideally, the algorithm
should be able to correct for this error. If this alogrithm
was implemented for actually use online, readings and images could be
processed as they come in and this would not be a problem.
- Implementation Error - A significant source of the problem is in the implementation
of the alogrithm. The Matlab Least Squares function was not behaving as expected.
It was not properly searching the space of potential x.
Back to main page
Last modified: Thu Dec 6 11:02:26 EST 2001