Skip to main content
Open In Colab An omnidirectional robot can move its chassis in any direction while rotating. The wheeled robots overview introduces the wheel types, the chassis configuration q=(θ,x,y)q = (\theta, x, y) and the body twist Vb\mathcal{V}_b used below. You will derive the wheel speeds that produce a given body twist, u=H(0) Vbu = H(0)\,\mathcal{V}_b. You will then compare them with a physics simulation of a mecanum robot. This section follows chapter 13, Wheeled Mobile Robots, of Kevin Lynch and Frank Park, Modern Robotics: Mechanics, Planning, and Control (Cambridge University Press, 2017) (Kevin M. Lynch, 2017).

Omnidirectional robots

Place wheel ii at (xi,yi)(x_i, y_i) in {b}\{b\}. Its driving direction is at angle βi\beta_i from x^b\hat{x}_b. Its radius is rir_i, and its free sliding direction is at angle γi\gamma_i from the driving direction. Chassis motion gives the wheel center a linear velocity. The motor must produce only the component along the driving direction. The rollers absorb the remaining component. From this relation, you can express the driving angular speed uiu_i of wheel ii as a linear function of the body twist: ui=hi(0) Vb,hi(0)=1ricos⁡γi[xisin⁡(βi+γi)−yicos⁡(βi+γi)cos⁡(βi+γi)sin⁡(βi+γi)]u_i = h_i(0)\, \mathcal{V}_b, \qquad h_i(0) = \frac{1}{r_i \cos\gamma_i} \begin{bmatrix} x_i \sin(\beta_i + \gamma_i) - y_i \cos(\beta_i + \gamma_i) & \cos(\beta_i + \gamma_i) & \sin(\beta_i + \gamma_i) \end{bmatrix} Stacking one row for each wheel gives u=H(0) Vbu = H(0)\,\mathcal{V}_b. When H(0)H(0) has rank 3, every body twist has a corresponding set of wheel speeds. This property makes the robot omnidirectional. With more than three wheels, H(0)H(0) has more rows than columns. Wheel speeds outside the form H(0)VbH(0)\mathcal{V}_b cause the wheels to fight each other and skid. The code below builds H(0)H(0) from the wheel geometry for two standard designs. The first uses three omniwheels spaced 120°120° apart at distance dd from the center. The second uses four mecanum wheels at (±ℓ,±w)(\pm\ell, \pm w).
When scaled by rr, the second matrix is Lynch and Park’s equation (13.10). Its rows are (−ℓ−w,1,−1)(-\ell - w, 1, -1), (ℓ+w,1,1)(\ell + w, 1, 1), (ℓ+w,1,−1)(\ell + w, 1, -1) and (−ℓ−w,1,1)(-\ell - w, 1, 1). You can read its columns as follows:
  • To move along +x^b+\hat{x}_b, all four wheels drive forward at the same speed.
  • To move along +y^b+\hat{y}_b, wheels 1 and 3 drive backward, while wheels 2 and 4 drive forward.
  • To rotate counterclockwise, wheels 1 and 4 drive backward, while wheels 2 and 3 drive forward.
The chassis can move sideways as fast as it moves forward because the second and third columns have the same magnitude.

Simulating the robot

The simulations use Newton, a robotics physics engine built on NVIDIA Warp (Data Curation for Machine Lear, n.d.). The robot consists of rigid links connected by joints. Its collision shapes have a friction coefficient μ\mu. Each wheel is a link on a revolute joint, and its motor tracks a commanded angular speed. The floor is a plane. The simulation has no built-in knowledge of H(0)H(0) or the no-slip condition. Friction at each contact pushes on the wheels and moves the chassis. The helpers below run a simulation at 60 frames per second. They command the wheel speeds at each frame and record the chassis pose (θ,x,y)(\theta, x, y) and the wheel angles. The body twist is measured from the recorded poses using the definition above. You can also record each run for the Rerun viewer. It displays the robot, logged paths and signals on a single timeline that you can scrub.

The mecanum robot in simulation

The simulated robot has four mecanum wheels, each with twelve passive rollers, at ℓ=0.32\ell = 0.32 m and w=0.40w = 0.40 m. You command the chassis through four phases of three seconds each: forward, sideways, turning in place, and a combination of all three. At every frame, the wheel speeds come from u=H(0) Vbu = H(0)\,\mathcal{V}_b with the commanded twist.
Output from cell 6 The measured twist follows the command in all four phases. This includes pure sideways motion, which a robot with conventional wheels cannot produce. Small differences arise from the rollers. They are separate rigid bodies that touch the floor one or two at a time. As each wheel turns, its effective rolling radius varies slightly.
The mecanum robot driven by u=H(0)Vbu = H(0)\mathcal{V}_b. Scrub the timeline to follow the four phases; the right-hand panels show the commanded and measured components of the body twist.

References

  • Kevin M. Lynch, F. (2017). Modern Robotics.
  • (n.d.). Data Curation for Machine Learning.

Found an error on this page? Report an issue.