Sun, January 29, 2006 4:28 PM
Software Strategy
The controllable inputs are the vehicle's absolute acceleration (more precisely, the current given to the DC motor to drive the wheels) and the magnetic sensor data for tracking the position of the track's magnetic strip relative to the NATCAR (we can extract in software an approximation of velocity relative to the strip from this data as well). We will implement one of two possible controllers to follow the strip, the output being the actuation to the steering axis, since this directly alters the position relative to the strip. First, we could easily construct an open-loop proportional control algorithm that might have the performance we desire. However, this might result in choppy steering. Alternatively, if we can derive a mapping from car velocity and steering angle to position relative to the track, we could use a PD-feedback controller (an integrator term would be unnecessary for the always-changing track). We believe this would result in smoother convergence over the strip, but the practicality is discouraging.
The other output, motor torque, will act as brake control, rather than acceleration. By default the car will run at its highest torque with braking proportional to the track displacement error. If this results in drastic course overshoot, we will cap the torque according to a maximum car speed.
We also are interested in recording track data after one lap and implementing a pattern matching control strategy. If the car knows it is over a straightaway, it can safely accelerate until predictive braking is necessary to avoid overshoot at the coming turn. In order to achieve course learning, the microcontroller will maintain a record of x-y positions, which are updated by integrating the vehicle speed with steering angles. Once the positions overlap with similar velocity vectors (must avoid false-positives from track cross-over), the predictive braking will be enabled.
Block Diagram for Open-Loop Proportional Control:
Block Diagram for PD-Feedback Control:

