Two-wheeled differential drive

Contents

Two-wheeled differential drive#

The kinematics of a large class of wheeled ground robots that have two independent motors driving the left and right wheel or track trains. Velocities are restricted have the same orientation \(\theta\) as the robot, i.e.

\[\vec v \proto \vec e(\theta)\]

where \(\vec e(\alpha)\) is the unit vector in direction \(\alpha\). Equivalently, velocities in the relative frame have null lateral components.

This kinematics works on velocities specified relative to the agent. It constrains the lateral speed to be null, while privileging to preserve angular speed. Constraints on linear and angular speed are coupled and defined by the maximal wheel speed.

See also

Read Two-wheeled kinematics to know more about how feasible velocities are computed.

Example#

The video has been recorded using

$ navground_py record_video 2wdiff.yaml 2wdiff.mp4 --factor 1 --grid 1 --area -3 -1 3 1

with the following configuration

steps: 300
time_step: 0.0333
scenario:
  groups:
    - type: thymio
      color: darkcyan
      number: 1
      radius: 0.25
      control_period: 0.1
      orientation: 1
      kinematics:
        type: 2WDiff
        max_speed: 1
        max_angular_speed: 3.14
        wheel_axis: 0.5
      behavior:
        type: Dummy
        heading: target_point
      task:
        type: Waypoints
        waypoints: [[2, 0], [-2, 0]]
        loop: true
        tolerance: 0.5