Longitudinal Control of a Vehicle

J. Edward Anderson

Generally applicable formulae for the gain constants in a proportional plus integral controller required for stable control of the speed of any vehicle in terms of natural frequency, damping ratio, vehicle mass, and thruster time constant are derived. An example, based on a simulation of the controller and vehicle, is given. The theory shows that only speed and position feedback are needed. Acceleration feedback is unnecessary.

Introduction

There is substantial interest in automatic control of vehicles operating either on an exclusive guideway or on a highway. During the 1970's much work was published on the control of such vehicles, a good summary of which is given by Garrard, Caudill, Kornhauser, MacKinnon, and Brown (1978). During the 1980's, the Boeing Company completed work on a digital control system under the Advanced Group Rapid Transit Program, which was funded by the Urban Mass Transportation Administration. The resulting control system was shown to be extremely reliable and safe and is applicable to a wide range of automated transit systems. This work was published by several authors and is available through the Institute of Electrical and Electronic Engineers in New York [Lang and Freitag, 1978], [Haberman, 1982], [Nishinaga and Colson, 1983], [Lang and Warren, 1983], and [Milnor and Washington, 1984]. In 1997 the National Automated Highway System Consortium tested ten especially equipped Buick LeSabres at speeds over 22 m/s at nose-to-tail spacings of only 1.83 m, corresponding to 0.3 sec headway, on an automated highway near San Diego [Schuon, 1996]. Such an operation requires precise control.

It was found that adequate control response is obtained by using speed and position feedback, and in the Boeing work it was found that both of these signals could be obtained from digital encoders [Lang and Warren, 1983]. Acceleration feedback, which we thought for some time was needed, was found to be unnecessary when it was realized that a jerk limit is important for ride comfort only if the change in acceleration is large. If the change in acceleration is small, such as occurs while overcoming breakout friction when starting from rest, it is not necessary to limit jerk. The controller receives time-varying speed and position commands from computer- generated calculations of maneuver profiles, and it is necessary for the analyst to determine gain settings that work in all circumstances. While working to determine such controller gain constants, the author discovered that it was possible to derive formulae for the speed and position gains in a wholly satisfactory manner, a finding that had not appeared in the literature. The purpose of this paper is to develop these formulae, which involve readily determinable parameters. In simulations of a vehicle and its control system using these gain constants, it was found that speed and position can be controlled precisely. An example, based on a computer simulation, is given. The notation used is summarized in the last section of this paper.

Derivation of the Controller Gains

In general, the drag force D(V) on a vehicle is a quadratic function of its speed V. Thus

(1)

in which a and b are road-resistance coefficients and c is the air-drag parameter

(2)

in which is the air density, CD is the drag coefficient, and A is the frontal area.

If T(t) is the time-varying thrust applied to a vehicle of mass m, the equation of longitudinal motion is

(3)

There is generally a time lag between commanded and actual thrust. If the thruster time constant is, actual thrust T in terms of the commanded thrust Tc is given by the differential equation

(4)

Consider small disturbances around some specific set point denoted by a bar over each variable. Thus, let

(5)

(6)

(7)

in which

(8)

Let the control equation be

(9)

in which is the position gain constant and is the velocity gain constant. Then, assuming the bared values correspond to the command condition, substitute equation (9) and then equations (5) and (6) into equation (4) and differentiate, assuming that the command speed is relatively slowly varying. The result is

(10)

Similarly, substitute equations (5), (6) and (7) into equation (3), let the undisturbed thrust equal the undisturbed drag and divide by The result is

(11)

in which

(12)

is the vehicle time constant. The homogeneous linear differential equations (10) and (11) are satisfied by the functions

(13)

(14)

in which the zero subscript represents an amplitude and is a complex parameter. Substituting equations (13) and (14) into equations (10) and (11) and dividing by

(15)

. (16)

Dividing equation (15) by equation (16)

or

. (17)

In terms of recognizable parameters, the cubic (17) can be written in the form:

(18)

For stability, all three of the parameters in equation (18) must be positive. is the undamped radial frequency of oscillation, is the damping ratio, and is a real root. Since there are two gain constants in control equation (9), two of these three parameters can be selected to obtain the desired response. Comparing equations (17) and (18), using equation (12), and assuming that , which is justified later,

(19)

(20)

(21)

Practical values of the speed-dependent road-resistance factor are more than an order of magnitude smaller than the air-drag term 2cV of equation (8). Hence, from equations (12) and (8),

(22)

In the right-most expression of equation (22), the first term is ratio of vehicle weight W to air drag. For urban systems this ratio easily in the neighborhood of 50 to 100. For a low urban speed of say 10 meters per second, the second term is half a second. Thus it is seen that is generally much larger than one second, whereas for practical thrusters, sec. Thus,, so from equation (21)

(23)

Substituting equation (23) into equations (19) and (20), the gain constants can be written in the form

(24)

(25)

For stability and must all be positive. Hence, from equation (23),

(26)

Let

(27)

Then equations (24) and (25) become

(28)

(29)

and, from equation (28), since must be selected between 0 and 1, is calculated from the equation

(30)

In equations (28) and (29), a subscript 'c' is added to the mass to emphasize that this is an assumed mass in the control equation, not the actual mass.

It was stated above equation (19) that . To prove this, substitute from equation (30) into equation (29) and divide by from equation (12). Then, if m = mc,

(31)

With = 0.5 and = 0.6, the term containing these two quantities is 0.42. From the analysis related to equation (22), we found that the ratio is very large, which means that is very large, which was to be proved.

Some Results

For a given thruster time constant and damping ratio (0.6 is a good value), it is seen from equation (30) that is proportional to, which must be greater than zero and less than one. A value near one half is a good choice. With these values, it is seen from equations (28) and (29) that the two gains are proportional to vehicle mass. Since the mass of the loaded vehicle varies, the mass used in equations (28) and (29) will not always agree with the actual mass of the vehicle. Thus we must determine the sensitivity of the response to variation in the actual mass from the value of mass used to calculate the gains.

Based on an accurate numerical-integration technique, I developed a computer simulation of a microprocessor-controlled vehicle using equation (9) for the feedback controller and the gain settings given by equations (28) and (29). See the Appendix. Since the vehicle always starts from rest, I let the set-point thrust in equation (9) be zero. I began the simulation with a value of a damping ratio of 0.6, and a thruster time constant of 10 msec, which is appropriate if the vehicle is propelled by linear synchronous or induction motors, or rotary motors used for both propulsion and braking. I took the nominal vehicle mass to be 750 kg, and simulated the case of a power-limited acceleration maneuver from rest to 13 m/s. The maximum acceleration was taken to be 0.22g, the maximum jerk was 0.25g, and I used a limit thrust of 30% of the vehicle weight.

In the simulation, the vehicle was struck by a large, sharp gust half way through the maneuver with a maximum wind speed of 13 m/s. One result is shown in Figure 1 in which the error between commanded and actual speed is shown in millimeters per second. It may be seen that the largest speed error is slightly less than 3 mm/s and occurs at the start of the maneuver where the actual speed lags the commanded speed during the positive-jerk phase of the maneuver. The opposite error occurs in the negative-jerk phase as the vehicle approaches smoothly to line speed. The speed error due to the gust is somewhat less than occurs during the jerk phases of the maneuver. When the actual vehicle speed is superimposed on the commanded speed, the deviation between the two is less than the width of the command-speed line. This is so if the computation update interval is no more than 20 msec. If the update interval is larger, one can begin to see a saw-tooth behavior in the speed-error curve as the control system tries to compensate for late information. The simulation also showed that the acceleration error was not more than 3.5% of the maximum comfort acceleration.

Figure 1. Control of an Automated Transit Vehicle

I had the simulation determine the maximum acceleration error dAmax, the maximum speed error dVmax, and the maximum position error dXmax. I ran three cases in which the actual vehicle mass was 750 kg, and the mass mcassumed in the control system was 600 kg, 750 kg, and 900 kg. The results were as follows:

mc, kg / 100dAmax g's / dVmax, mm/s / dXmax, mm
600 / 0.78 / 3.52 / 2.55
750 / 0.73 / 2.79 / 2.01
900 / 0.68 / 2.33 / 1.65

It may be seen that it is best to over-estimate the vehicle mass in computing the controller gains. For the case in which mc = 750 kg, I ran the program with a series of values of and found that the values of dAmax and dVmax reached minima close to = 0.74, but the error variations from = 0.5are insignificant. I also varied the thruster time constant and found that doubling it from 10 to 20 msec, causes the speed error to increase by a factor of 3.6, but this is still an extremely small error.

Conclusions

Stable longitudinal control of a vehicle is obtained with extremely small errors by using the proportional plus integral control equation (9) with gain constants given by equations (28) and (29), in which the parameters are related by equation (30) and lies between 0 and 1. The thruster time constant is a property of the motor characteristics, and there is no advantage in increasing it. The damping ratio should first be selected in the range of about 0.5 to 0.7. Then can be selected in the range of 0 to 1 such that the undamped natural frequency is in an acceptable range. It was found in the example that a value of = 0.74 minimized the errors.

It is seen therefore that the problem of selecting a vehicle controller to follow a speed profile is completely solved. Only velocity and position feedback are required. In particular, acceleration feedback is unnecessary. Gain constants based on the derived results were used in a simulated longitudinal controller with excellent results, and it was found that use of the maximum value of the loaded vehicle mass in the gain equations minimized the errors.

This control scheme was used to operate the linear-induction-motor propelled vehicle I exhibited at the 2003 Minnesota State Fair, and which is shown here. Since the jerk error occurs at very low speed, even though the ride was only about 40 feet, this exhibit was a good demonstration of the control system. In each of the thousands of rides given, control was felt to be completely smooth.

Notation

a, bRoad resistance coefficients defined by equation (1).

cAir drag parameter defined by equation (2).

DDrag, N.

dAmaxMaximum acceleration error, g's.

dVmaxMaximum speed error, mm/s.

dXmaxMaximum position error, mm.

GpPosition gain constant, N/m.

GvSpeed gain constant, Ns/m.

mActual vehicle mass, kg

mcValue of vehicle mass used in the gain equations, kg.

TThrust, N.

tTime, s.

VSpeed, m/s.

Dimensionless factor between 0 and 1, defined by equation (27).

Damping ratio.

Negative real root defined by equation (18).

Thruster time constant, s.

Vehicle time constant defined by equation (12), s.

Undamped natural frequency of control system, rad/s.

References

Garrard, W. L., Caudill, R. J., Kornhauser, A. L., MacKinnon, D., and Brown, S. J. 1978.

State-of-the-Art of Longitudinal Control of AGT Vehicles. Proceedings of a Conference

on Advanced Transit and Urban Revitalization - An International Dialogue. Advanced

Transit Association. Indianapolis.

Haberman, D. E. 1982. Fail-Safe Synchronization of Redundant Microprocessor Control

Systems. 32nd Vehicular Technology Conference. IEEE Technical Paper.

Lang, R. P. and Freitag, D. B. 1978. Programmable Digital Vehicle Control System. 28th

Vehicular Technology Conference. IEEE Technical Paper.

Lang, R. P. and Warren, D. J. 1983. Microprocessor Based Speed and Position Measurement

System. 33rd Vehicular Technology Conference. IEEE Technical Paper.

Milnor, R. C. and Washington, R. S. 1984. Effects of System Architecture on Safety and

Reliability of Multiple Microprocessor Control Systems. 34th Vehicular Technology

Conference. IEEE Technical Paper.

Nishinaga, E. I. and Colson, C. W. 1983. A Vehicle Collision Avoidance System Using Time

Multiplexed Hexadecimal FKS (Frequency Shift Keyed). 33rd Vehicular Technology

Conference. IEEE Technical Paper.

Schuon, Marshall. 1996. Still Making 'em Like They Used To. The New York Times, Sunday,

September 1, p. 25A.

Appendix. The Control Program

'This program VEHCONTL.BAS simulates the operation of a PRT vehicle controller

'Steps in program:

' Start with given speed V0 and acceleration A0

' Command Vc(t) and Xc(t) for a maneuver from given V0 and A0

' M0 => Maintain command speed

' M1 => Decelerate to stop in x meters

' M2 => Change speed to x meters/sec in minimum time

' M3 => Slip x meters while going to line speed VL

' Obtain actual distance X(t) and speed V(t) via encoders and subtract to give

' dX = Xc - Xe, dV = Vc - Ve

' Form thrust command Tc = Gp * dX + Gv * dV

' where Gp = mc * Omega.n^2 * (1 - Beta)

' Gv = mc * Omega.n * (.5 * Beta / Zeta + 2 * Zeta * (1 - Beta))

' mc = best estimate of vehicle mass

' Zeta = damping ratio

' Beta = dimensionless factor between 0 and 1

' Tau = motor time constant

' Omega.n = .5 * Beta / (Zeta * Tau) = radial frequency of controller

'

' Model motor via Tau * dTh/dt + Th = Tc, Th = thrust

' Model vehicle via m * dV/dt = Th - Drag

' Model Drag = c.air * V^2 +m * g * (b.road * V + a.road)

'------

DEFDBL A-Z

DIM ManeuverNo AS INTEGER

DECLARE SUB setManeuver1 (Dstop, A0, V0)

DECLARE SUB runManeuver1 (Dstop, t, A0, V0, Ac, Vc, Xc)

DECLARE SUB setManeuver2 (Vfinal, A0, V0)

DECLARE SUB runManeuver2 (Vfinal, t, A0, V0, Ac, Vc, Xc)

DECLARE SUB setManeuver3 (Slip, A0, V0)

DECLARE SUB runManeuver3 (Slip, t, A0, V0, Ac, Vc, Xc)

DECLARE SUB State (Delt, J, Ao, Vo, Xo, a, V, X)

DECLARE FUNCTION Encoder (X, Xstart)

DECLARE FUNCTION SlipBoundary (V1, V4)

DECLARE FUNCTION Brake (V)

DECLARE FUNCTION Drag (V, t)

COMMON SHARED Jcomfort, Acomfort, tJ, VL, Vs, Vc, Ve, Vmin, Lb, Tm, Dm

'Units are MKS

'System constants

Pi = 4 * ATN(1)

CONST g = 9.80665 'acceleration of gravity, m/s^2

Jcomfort = .25# * g 'comfort jerk, m/s^2

Acomfort = .2# * g 'comfort acceleration, m/s^2

tJ = Acomfort / Jcomfort 'jerk time constant, s

VL = 15# 'line speed, m/s

Vs = 8# 'station speed, m/s

Vmin = VL / 2# 'minimum speed for slip maneuvers, m/s

Lb = 3# 'berth length, m

dt = .00001# 'computation-time interval, s

'Vehicle parameters

CONST m = 700 'actual vehicle mass, kg

CONST a.road = .005 'road resistance per unit weight independent of speed

CONST b.road = .0005 'road resistance per unit weight, sec/m

Rho = 1.2 'air density, kg/m^3

CdA = 8 'effective frontal area, m^2

c.air = .5 * Rho * CdA 'air drag per unit speed^2

'Controller parameters

dtc = .005# 'time interval between control updates, s

Tau = .06 'thruster lag time, s

mc = 700 'average vehicle mass used in control system, kg

Zeta = .4 'dimensionless damping constant

Beta = .6 'a dimensionless constant between 0 and 1

Omega.n = .5 * Beta / Zeta / Tau 'controller radial frequency, rad/s

Gp = mc * Omega.n ^ 2 * (1 - Beta) 'position gain

Gv = mc * Omega.n * (.5 * Beta / Zeta + 2 * Zeta * (1 - Beta)) 'speed gain

Dw = 16.25 / 12 * .3048 'encoder wheel diameter, m

dXenc = Pi * Dw / 4096 'encoder step, m

IF VL * dtdXenc THEN PRINT " Need smaller computational time step":

SLEEP: END

'------

KEY(10) ON

SCREEN 9

COLOR 7, 8

Y0 = 240

T0 = 5

Tscale = 45

Ascale = 30

Vscale = 12

Xscale = 1.8

Thscale = .05

CLS

PRINT

PRINT " This program controls a vehicle to follow a commanded maneuver"

PRINT " ------"

PRINT " The line speed is"; VL; "meters per second"

PRINT " Maneuver 0 causes the vehicle to maintain initial speed"

PRINT " Maneuver 1 causes the vehicle to stop in a given distance"

PRINT " Maneuver 2 causes the vehicle to change speed"

PRINT " Maneuver 3 causes the vehicle to slip a given amount to line speed"

PRINT

INPUT " The initial speed in meters per second is ", V0

INPUT " The initial acceleration in m/s^2 is ", A0

PRINT

DO

INPUT " Perform maneuver number (0,1,2,3) ", ManeuverNo

LOOP UNTIL ManeuverNo = 0 OR ManeuverNo = 1 OR ManeuverNo = 2 OR ManeuverNo = 3

SELECT CASE ManeuverNo

CASE 0

Tm = 4

CASE 1

INPUT " The distance to stop, m, is ", Dstop

setManeuver1 Dstop, A0, V0

CASE 2

INPUT " The final speed, m/s, is ", Vfinal

setManeuver2 Vfinal, A0, V0

CASE 3

INPUT " The distance to slip, m, is ", Slip

setManeuver3 Slip, A0, V0

END SELECT

'Set initial values

V = V0 'set initial actual speed

Th = A0 * m + Drag(V, t) 'initial actual thrust

Tc = Th 'initial command thrust

dThdt.old = A0 'initial acceleration

tstart = -2# 'allow time for system to settle

t = tstart - dt 'initial running time

tcount = tstart 'tcount increases in increments of dtc

Xstart = V0 * tstart 'initial distance

X = Xstart 'initiate actual distance

Xe = X 'initiate measure distance

Xc = X 'initial commanded distance

Xe.old = Xe - V0 * dtc 'set initial measured speed

CLS

LINE (T0, Y0)-(T0 + 640, Y0)

LINE (T0, Y0 - Vscale * VL)-(T0 + 640, Y0 - Vscale * VL)

LINE (T0, Y0)-(T0, 0)

LOCATE 1, 1: PRINT " Command Accel ": LINE (120, 6)-(150, 6), 12

LOCATE 1, 20: PRINT " Accel ": LINE (270, 6)-(300, 6), 11

LOCATE 1, 40: PRINT " Command Speed ": LINE (430, 6)-(460, 6), 9

LOCATE 2, 1: PRINT " Speed ": LINE (120, 18)-(150, 18), 13

LOCATE 2, 20: PRINT " Distance ": LINE (270, 18)-(300, 18), 14

LOCATE 2, 40: PRINT " Thrust ": LINE (430, 18)-(460, 18), 10

DO

t = t + dt

ON KEY(10) GOSUB Quit

'Simulate digital encoder

Xe = Encoder(X, Xstart) 'measured position

'Enter the on-board computer

IF t >= tcount THEN

tcount = tcount + dtc

SELECT CASE ManeuverNo

CASE 0

Ac = 0: Vc = V0: Xc = V0 * t

CASE 1

IF t < 0 THEN

Ac = A0: Vc = V0 + A0 * t: Xc = t * (V0 + A0 * t / 2)

ELSE

runManeuver1 Dstop, t, A0, V0, Ac, Vc, Xc

END IF

CASE 2

IF t < 0 THEN

Ac = A0: Vc = V0 + A0 * t: Xc = t * (V0 + A0 * t / 2)

ELSE

runManeuver2 Vfinal, t, A0, V0, Ac, Vc, Xc

END IF

CASE 3

IF t < 0 THEN

Ac = A0: Vc = V0 + A0 * t: Xc = t * (V0 + A0 * t / 2)

ELSE

runManeuver3 Slip, t, A0, V0, Ac, Vc, Xc

END IF

END SELECT

Ve = (Xe - Xe.old) / dtc 'differentiate to measure speed

Xe.old = Xe

dX = Xc - Xe 'command position - measured position

dV = Vc - Ve 'command speed - measured speed

Tc = Gp * dX + Gv * dV

IF Vfinal < .0001 AND Vc < .001 THEN Tc = 0

END IF

'Simulate thruster as first-order lag

dThdt = (Tc - Th) / Tau 'time rate of change of thrust

Th = Th + .5 * dt * (3 * dThdt - dThdt.old) 'actual thrust

dThdt.old = dThdt

'Simulate vehicle dynamics

IF Vfinal < .0001 AND Ve < .001 THEN

dVdt = (Th - Drag(V, t) - Brake(V)) / m 'acceleration