I have a differential drive robot that needs to move along a path stored in its memory as a spline. I am currently trying to understand the mathematics of determining how much power to apply to each wheel so that the net movement conforms to the path in memory.

These papers have been helpful, but I am not sure I fully understand what to do:

If I knew some mapping between wheel power differences and rates of rotation, maybe I could take the derivative of the curve at each point and then apply a rotation to the robot to bring my driving vector into alignment with the tangent vector?


If you have the path you want the robot to stay on, it sounds like you need Pure Pursuit. In this simple algorithm, you steer the robot to some look-ahead point on the path. The gist of it is illustrated by this image.

Geometry of Pure Pursuit

The original paper is framed in terms of ackerman steering angle. But it is easy to adapt to differential drive robots.

You should tune the parameters to the speed of your robot and the types of paths you will be following (i.e. curvy or straight). Choosing the right parameters can make the path follower seem "under damped" or "over damped".

Look ahead distance selection

Original algorithm proposed here: Implementation of the Pure Pursuit Path Tracking Algorithm. R. Craig Coulter, CMU, 1992.

  • $\begingroup$ Looks like pure pursuit is the algorithm I am looking for. I needed to educate myself on how P and PID loops work, which gave me information on how to actually implement a pure pursuit algorithm on my robot. $\endgroup$ – Andrew Carluccio Feb 12 '20 at 4:26

Your Answer

