Waypoint Seeking

Range Filtering

Since waypoint projection generates a range estimate on every cycle, the location of the actual waypoint becomes overdetermined. More recent projections will tend to be better (or at least no worse) because they will made closer to the actual waypoint. Here's some supporting analysis.

However, the current projection will be somewhat noisy:

Ideally we would use a Kalman filter, but it may be adequate to run the range estimates through a low-pass filter (e.g. an averaging process.) The time constant of the filter is adjusted based on the projected range from the current location to the target so that a step change now will have settled to its new value when have closed a fixed fraction of the currently projected remaining distance (say 50%.)

Basic Concepts

Once each waypoint has had its position estimated, then these locations define a sequence of line segments which we will call the path polyline. The purpose of waypoint seeking is to drive a smooth path which generally follows this polyline. The basic driving algorithm is to find the point which is the lookahead distance down the path polyline from our current location and to steer toward that point.

The lookahead distance implies a scale of desirable turn radius (or acceptable degree of sloppiness.) In practice it seems to work well to make this depend on the current speed:

lookahead time
The lookahead distance is made a function of the speed by specifying a constant lookahead time which is multiplied by the current forward speed to generate a lookahead distance.
minimum lookahead distance
This parameter sets a lower bound on the lookahead distance computed from speed. It will typically be set to a few vehicle lengths to discourage the use of drastic turns to get precisely onto the path polyline.

Driving Tolerances

There are several parameters which don't primarily control the path itself, but are used to determine whether we have arrived, or if we have failed to follow the path.
path tolerance
If the robot strays farther than the path tolerance from the path polyline, then we halt the robot and wait for new instructions from the operator. The path tolerance must be larger than the lookahead distance in order to prevent spurious failure. It may make sense to specify the path tolerance as a multiple of the lookahead distance.
critical point tolerance
If the next waypoint is critical, the lookahead distance is disabled. Instead, we steer toward the waypoint itself until we come within the critical point tolerance distance. We then resume normal waypoint following. This provides a servo deadband which prevents us from circling around hunting for the exact waypoint location. The terminal point is treated as a critical point, so this tolerance also determines how close we must be to the terminal point in order for us to decide that we've arrived.

Steering to the Line

The projected waypoint does not in general lie on the plane of our current orientation. We must take the ray to the projected waypoint, vertically project it down onto our current plane, and head in that direction. If the waypoint happened to be flat-earth projected, then it will lie in the current plane, in which case the projection does not cause any change.

The input format to the arbiter also introduces some issues with steering commands. As implemented in the past, waypoint following outputs turn radii as a way to implement smoothly turning onto the desired path. If the arbiter instead takes a heading as input, and does no smoothing itself, then we'd need to compute the heading that would in one driving cycle take us to where we'd be if we did travel on the desired arc.

Stopping Point Determination

If the next waypoint is terminal, then waypoint seeking uses the range projection to determine if it is time to stop. When we have closed within the critical point tolerance of the projected waypoint location, we stop. This will tend to cause us to stop somewhat short of the point, which may not be a bad thing, see possible user interface issue.

If there is no range projection (line following mode), then stop time is determined according to the maximum travel distance.

Critical Points

[ram: issues: ]

Infinite Waypoints

It may be that we cannot estimate any range to a waypoint. In this case, the waypoint is considered to be at infinity along the designated ray, and is known as an infinite waypoint.

An infinite waypoint that is not the last waypoint designated is still temporarily considered to be terminal until it either acquires a range projection or the maximum travel distance is exceeded.

We will also discard the current infinite waypoint and go on to the next one if we pass within the lookahead distance of the next waypoint (which could only happen if we do have range info for it.


Home | Mail to CMU TMR-members