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.
