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.