Wheeled mobile robots employ either conventional wheels, like this unicycle wheel, that do

not allow sideways sliding, or wheels that allow sideways sliding through the use of

rollers around the rim of the wheel, such as the omniwheel and the mecanum wheel.

While it's possible to build omnidirectional mobile robots using conventional wheels, by

appropriately steering each wheel, often omnidirectional mobile robots are built using unsteered omniwheels

or mecanum wheels.

I'll focus on robots using omniwheels and mecanum wheels in this video.

This image shows a mobile robot with three omniwheels.

This is a schematic top view of the robot.

Each wheel is controlled by driving the wheel forward or backward, and it is assumed that

the wheels do not slip or skid in the driving direction.

The rollers on the wheel allow free sliding of the wheel in the orthogonal direction.

This mobile base has four mecanum wheels, which do not slip in the driving direction

but allow free sliding at an angle of 45 degrees relative to the driving direction.

The principle behind the omniwheel and the mecanum wheel is the same, but they differ

in the direction they allow free sliding.

This video addresses the following question: given a desired chassis velocity, what should

the driving speeds of the wheels be?

To answer that question, let's focus on a single wheel, and develop a model that applies

to omniwheels or mecanum wheels.

First we define a frame {b} fixed to the robot's chassis.

The center of wheel i is at (x_i,y_i), and its forward driving direction, the direction

it rolls without slipping, is at an angle beta_i relative to the x_b-axis.

The rollers around the rim of the wheel allow free sliding at an angle gamma_i relative

to the direction perpendicular to the driving direction.

gamma_i is 0 degrees for an omniwheel and 45 degrees for a mecanum wheel.

With these definitions, we can calculate the wheel driving speed u_i, which is the rotational

speed of the motor attached to the wheel.

We'll build up to the result.

First, we define the linear velocity at the center of the wheel, as indicated by the vector

shown in green.

This is the sum of the driving velocity and the free-sliding velocity.

This linear velocity is derived from the body twist V_b, and it depends on the position

of the wheel in the {b} frame.

We then transform this linear velocity to a frame fixed to the wheel.

This linear velocity is the vector sum of the driving velocity and the free-sliding

velocity, so we can decompose the wheel velocity into its sliding velocity and driving velocity

components.

A little geometry shows that the driving component can be calculated by taking the dot product

of the wheel velocity with the vector (1, tangent gamma_i).

Finally, to convert the linear driving velocity to a rotational speed for the wheel, we divide

by r_i, where r_i is the radius of the wheel.

The final result is a 1-by-3 row vector times the twist V_b.

We call this row vector h_i, and more specifically h_i of zero, for reasons that will become

clear shortly.

We can stack the h_i row vectors for the m wheels to create an m-by-3 matrix called H

of zero.

Then the vector of wheel velocities for a given chassis twist is calculated as u equals

H-of-zero times V_b.

This procedure only works if H-of-zero is full rank, rank 3.

We can apply this kinematic modeling to a robot with 3 omniwheels at the corners of

a triangle.

The H matrix is 3-by-3, as shown here.

r is the radius of the wheels and d is the distance of the wheels from the center of

the triangle.

We can also apply our modeling to a robot with 4 mecanum wheels.

The wheels are configured so that their sliding directions are not all aligned.

This is necessary for the H matrix to be full rank.

The H matrix is 4-by-3, as shown here.

The length l is the x-distance from the {b} frame to the wheels and the width w is the

y-distance from the {b} frame to the wheels.

The fact that this matrix is not square means that an arbitrary choice of wheel speeds will

cause skidding of the wheels in the drive direction.

To avoid skidding, the wheel speeds must be chosen on a 3-dimensional surface in the 4-dimensional

wheel speed space, as determined by the H matrix.

This is unlike the 3-omniwheel robot, where we can choose the wheel speeds arbitrarily

without causing skidding.

Let's use the H matrix to drive a robot with 4 mecanum wheels.

The H-matrix tells us that forward-backward motion in the body x-direction requires all

wheels to have the same speed, as shown in this animation.

If the desired motion is a pure rotation in the body frame, the wheels on the same side

should have the same speed.

If the desired motion is sideways, in the body y-direction, then wheels on opposite

corners should have the same speed.

In summary, the wheel speeds equal the H-of-zero matrix times the twist V_b, provided H-of-zero

is full rank.

Sometimes it's convenient to calculate the wheel speeds in terms of q-dot, the rate of

change of the coordinates phi, x, and y.

To do this, we replace V_b by a rotation matrix times q-dot, where the rotation matrix transforms

q-dot to V_b.

We call H-of-zero times the rotation matrix the matrix H-of-phi, giving us the relationship

u equals H-of-phi times q-dot.

With our kinematic modeling of omnidirectional robots complete, in the next video I will

address motion planning and control.