Mobile robots are incredibly popular right now, from large autonomous vehicles and the more conventional Automated Guided Vehicles (AGVs) that see extensive industrial use, such as those for intelligent logistics and automated transport, down to the small smart cars on Taobao. These mobile robots come with various chassis types, including two-wheel, three-wheel, and four-wheel designs. For instance, unmanned vehicles typically use a four-wheel Ackermann steering model, while standard AGVs operate with a two-wheel differential drive system. In college robotics competitions, it's common to see three-wheel omnidirectional and four-wheel omnidirectional wheel chassis. Some AGVs even feature a four-wheel skid-steer chassis, adding to the variety that might seem quite bewildering. This section will introduce the four motion modes of Limo from a kinematic perspective.

Table of Contents

Four-wheel differential motion mode

A four-wheel differential motion robot can be simplified as a model shown in the figure below. Four wheels are driven by four separate motors. The robot can be controlled to move forward, backward, and steer only by controlling the velocity of the four wheels.

https://github.com/agilexrobotics/limo_pro_doc/raw/master/LIMO_image/四轮差速_1.png

Assign a reference coordinate system to the robot, where the positive direction of the X-axis is indicated by a red arrow and the positive direction of the Y-axis is denoted by a blue arrow. The Z-axis extends perpendicularly out, originating from the robot's center of mass. This coordinate system adheres to Ampère's right-hand rule for consistency in orientation.

The robot is designed to execute linear movements along the forward and backward directions when the velocities (both magnitude and direction) of all four wheels are identical. However, if there is a variation in the wheel velocities, the robot will engage in a turning motion.

When a robot turns, it pivots around a central point known as the Instantaneous Center of Rotation (ICR), depicted as point ICR in the figure below. Consider the left front wheel as an example; the relative velocity direction at the contact point A where the wheel meets the ground is illustrated in the figure. The vector representing the resultant velocity is perpendicular to the line segment connecting point A and the ICR. The tire is constrained to rotate only in the direction of the longitudinal component of velocity. The decomposition of the velocity vector reveals that there is also a lateral component of velocity present along the axis of the wheel (or the motor axis).

https://github.com/agilexrobotics/limo_pro_doc/raw/master/LIMO_image_EN/四轮差速_2.png

Due to the varying lateral velocities of the four tires, the robot generates rotational movements, whereas the uniform longitudinal velocities contribute to its forward or backward movements. The combined effect of these components results in the robot executing a circular trajectory around the ICR.

When the robot turns, the angular velocity of the tires on both sides is the same. The inner tire has a smaller turning radius so that the inner linear velocity is smaller. The outer tire has a larger turning radius so that the outer linear velocity is greater. That is, when the velocity on the right side is greater, it will turn left. Similarly, when the velocity on the left side is greater, it will turn right.

Moreover, it can be seen from the figure above that the tires on the same side of the robot have the same Vx (longitudinal component velocity), while the tires at the upper (lower) end have the same Vy (lateral component velocity). To induce a self-rotation of the vehicle, it is needed to maintain equal velocities in both wheels on one side (either left or right) with a consistent direction while ensuring that the wheels on the opposite side (right or left) also have equal velocities but in the reverse direction.

We can try to control limo in four-wheel differential mode.

  1. First, adjust limo to four-wheel differential mode, pull up the two latches, and turn 30 degrees clockwise to make the shorter line on the two latches points to the front of the vehicle body. At this point, it is in insertion state. Fine-tune the tire angle to align the hole so that the latch is inserted. When the vehicle light turns yellow, the switch is successful.

  2. After the mode switch is successful, run the following command, and we can launch the keyboard or handle to control.

  3. Launch chassis control node

    <aside> ⛔ Note: Before running the command, please make sure that the programs in other terminals have been terminated. The termination command is: Ctrl+c.

    </aside>

    roslaunch limo_base limo_base.launch
    
    
  4. Launch keyboard control node.

    roslaunch limo_bringup limo_teletop_keyboard.launch
    
    

Track motion mode

In the track differential mode, a single-sided track can be equivalently regarded as an "infinite number of small wheels", and the "speed" of the single-sided "infinite number of small wheels" is the same. Therefore, the steering mode of the track differential mode is the same as that of the four-wheel differential mode, which is also slide steering.

Specifically, the track differential motion and the four-wheel differential motion are achieved by controlling the relative velocity of the tracks (or wheels) on both sides. But there are also differences between them: the shear and pressure distribution generated by the track on the ground are different from those of the wheels. This difference has little effect when it comes to wheel speed control. When the wheel speeds are inconsistent, we can refer to the following simplified model.

https://github.com/agilexrobotics/limo_pro_doc/raw/master/LIMO_image/履带_2.png