#include <stop_line.h>

| Public Member Functions | |
| result_t | control (pilot_command_t &pcmd, float topspeed=3.0) | 
| void | reset (void) | 
| StopLine (Navigator *navptr, int _verbose) | |
| ~StopLine () | |
| Private Member Functions | |
| void | reset_me (void) | 
| Private Attributes | |
| bool | creeping | 
| double | initial_speed | 
| double | max_creep_distance | 
| bool | stopping | 
Definition at line 15 of file stop_line.h.
| StopLine::StopLine | ( | Navigator * | navptr, | 
| int | _verbose | ||
| ) | 
This is based on the unpublished "Control Tutorial" draft dated January 26, 2004 by Dr. Benjamin Kuypers, section 5: "The Stopping Controller". He recommends a constant deceleration instead of the simpler exponential decay. The dynamical system is:
x_dot = -k * sqrt(x)
Solving analytically with initial condition x(0) = D and v(0) = V yields these equations of motion:
x(t) = (sqrt(D) - V*t/(2*sqrt(D)))**2 (parabolic drop) v(t) = dx/dt = (V**2/2*D)*t + V (linear velocity) a(t) = dv/dt = V**2/(2*D) = A (constant deceleration)
Note that the initial velocity V is negative in these equations, because it represents motion from positive x to zero. The system stops in finite time T = -2*D/V, with x(T) = 0, and v(T) = 0.
For example, when D = 10m from stop line and V = -5m/s, the vehicle stops in 4 seconds at a constant 1.25m/s/s deceleration.
Definition at line 42 of file stop_line.cc.
Definition at line 48 of file stop_line.cc.
| Controller::result_t StopLine::control | ( | pilot_command_t & | pcmd, | 
| float | topspeed = 3.0 | ||
| ) | 
Set speed for steady deceleration to stop way-point
| pcmd | contains desired heading and speed, assuming it is not yet time to stop, updated on exit | 
| topspeed | velocity limit | 
Definition at line 63 of file stop_line.cc.
| void StopLine::reset | ( | void | ) |  [virtual] | 
Reimplemented from Controller.
Definition at line 156 of file stop_line.cc.
| void StopLine::reset_me | ( | void | ) |  [private, virtual] | 
Reimplemented from Controller.
Definition at line 163 of file stop_line.cc.
| bool StopLine::creeping  [private] | 
Definition at line 28 of file stop_line.h.
| double StopLine::initial_speed  [private] | 
Definition at line 29 of file stop_line.h.
| double StopLine::max_creep_distance  [private] | 
Definition at line 30 of file stop_line.h.
| bool StopLine::stopping  [private] | 
Definition at line 27 of file stop_line.h.