5.4. Steering the Robot¶
Wheel Velocity Equations
-
Forward and Rotational Velocities
-
Point Forward Steering Controller
In this section, we will learn the relationship between the robot’s forward and rotational velocities and the wheel velocities. We will see when discussing The Jacobian that the movement of directional drive systems are constrained. They may move in-line with the wheels and may rotate, but they can not move perpendicular to their wheels. In more formal language, we would say that differential drive systems are non-holonomic systems.
Non-holonomic
Look up the definitions of holonomic and non-holonomic systems. You can probably find the definitions explained in several different ways. For differential drive systems, the non-holonomic constraint means that the robot can not drive straight to a goal that is not in-line with its orientation. It must either rotate to the desired orientation before moving forward or rotate as it moves.
A few different strategies may be used to accomplish the Go To Angle behavior on a differential drive robot.
The robot may pivot in place by turning the left and right wheels at the same speed but in opposite directions until the robot is oriented to the desired angle. The robot is then usually driven straight forward as needed.
- This has the advantage of being very easy to implement. When the robot pivots, it has no forward velocity and thus stays at the same location. So its position does not need to be recalculated. This is the technique usually used when teaching children about robotics.
- A disadvantage is that the robot’s movement is not smooth and it does not make progress towards a goal while rotating. After driving forward some distance, it will likely be discovered that the robot is not driving straight towards the goal, so it might be necessary to pivot several times in a Go To Goal behavior.
Proportional Control (P – regulator) or Linear Time-Invariant Control Theory could be used along with the equations for Calculating Wheel Velocities and Updating the Robot Position to achieve Go To Angle behavior as the robot moves. The rotational velocity,
, would be varied as needed. An issue of this method is that the robot will not go in reverse, which is sometimes needed. Thus, transitions to other behaviors may be required.
A technique that I am particularly impressed with uses The Point Forward Steering Controller. I learned about this controller from the MOOC on the Control of Mobile Robots from Georgia Tech.
The controller turns the robot smoothly and allows the robot to go in reverse when needed. The nature of the controller causes the robot’s forward velocity,
, to be a function of time. The robot slows down when turning rapidly and goes faster when going straight. If the robot needs to turn a significant angle (
), this controller will cause the robot to make what might be called a three-point turn, where it will go backwards as it turns at first and then drive forward as it continues to turn.