Odometry is the process of estimating the chassis configuration from wheel motions,

essentially integrating the effect of the wheel velocities.

Since wheel-rotation sensing is available on all mobile robots, odometry is convenient.

Odometry errors tend to accumulate over time, though, due to slipping or skidding of the

wheels and numerical integration error.

For this reason, odometry is usually supplemented with estimation techniques using exteroceptive

sensors, like cameras, range sensors, and GPS.

This video focuses on odometry.

In this video, the 6-dimensional twist of the chassis, expressed in the chassis frame

{b}, is written V_b6.

Since the chassis motion is planar, three of the components are zero.

The remaining three velocities in the plane are collectively written as V_b, a planar

twist.

With this as background, the odometry process consists of the following steps.

First, we measure the wheel rotations Delta theta since the last timestep, typically using

encoders.

Next, we assume that the wheel velocities were constant since the last encoder readings

at time Delta t in the past.

Because it doesn't matter which units we use to measure time, we can assume Delta t is

equal to 1 unit, and therefore theta-dot is equal to Delta theta.

Next, we find the chassis planar twist V_b that corresponds to Delta theta.

Next, we use the matrix exponential to integrate the corresponding 6-dimensional twist V_b6

for time Delta t equal to 1 to find the configuration of the chassis frame at step k-plus-1 relative

to the chassis frame at step k.

Finally we express the new chassis frame relative to the space frame.

Since the other steps are straightforward, let's focus on the third step, finding the

matrix F relating Delta theta to V_b.

For a car or a diff-drive, the chassis frame {b} is midway between the wheels.

The radius of the wheels is r, and positive rotation of the wheels corresponds to forward

motion at those wheels.

A little geometry shows that the planar twist provided by unit velocity of the left wheel

has minus-r over 2d in angular velocity and r over 2 in the x_b direction.

The planar twist for a unit velocity of the right wheel is similar, but with an opposite

angular component.

The 3-by-2 F matrix relates the wheel increments to the chassis twist V_b.

For omnidirectional mobile robots, the wheel speeds theta-dot are related to the chassis

twist V_b by the matrix H of zero, as we learned in a previous video.

We can invert this relationship to get V_b equals H-pseudoinverse times theta-dot, which

we can write equivalently as F theta-dot or F Delta theta.

For the three omniwheel robot, inverting the H matrix we found in an earlier video produces

this 3-by-3 F matrix relating Delta theta to V_b.

For the four mecanum wheel robot, pseudo-inverting the H matrix produces this 3-by-4 matrix.

With the F matrix and the wheel increment Delta theta, we get the planar chassis twist

V_b.

Expressing this as the 6-dimensional twist V_b6, we can use our standard matrix exponential

to calculate the configuration of the chassis frame at step k-plus-1 relative to the configuration

at step k.

To express this in the space frame, we premultiply the matrix exponential by the transformation

matrix representing the chassis frame at step k relative to the space frame.

We can then extract the coordinates q_k-plus-1 from T_{s b_k-plus-1}.

Equivalently, we can convert the matrix exponential to an increment of coordinates expressed in

the chassis frame, rotate the x and y components to an increment in the space frame, and add

the increment to the previous chassis configuration.

In the final video of this chapter, we combine a mobile robot with a manipulator and consider

their coordinated control.