KEEPING ONE PRINCIPAL OBJECT IN VIEW Having found the road in the image, we must decide how to control the motors to get and keep the vehicle on it. We evaluated a half-dozen approaches experimentally with our vehicles and analytically. One approach, servoing to keep the road image centered in the forward field of view, excelled in all the measures, by such a margin that we feel it deserves to be considered a fundamental navigational principle. Let x represent the shortest distance between the center of our vehicle and the centerline of a straight road. @G(q) is the angle between the heading of the robot and the road direction, i.e. when @g(q) = 0 the robot is driving parallel to the road. Suppose the vehicle travels at a constant scalar velocity v, and control is achieved by superimposing a steering rate, d@g(q) / dt (where t is time) on top of the forward motion. If there is no slippage, the following kinematic relationship will hold. dx / dt = -v sin @g(q) (1) The general problem for continuous road following is to find a steering function F such that by setting d@g(q) / dt = F(x,@g(q)) the vehicle approaches the road center. We tried several different kinds of function and noticed a number of recurring problems. Estimating @g(q) and x from the image requires both a precise calibration of the camera and accurate determination of the position and orientation of the road edges in the image. Both are difficult to achieve in practice, and the high noise level in these quantities made most of our functions unstable. A second problem led directly to our solution. Our other functions tended to cause the road image to drift out of the field of view from time to time, ruining the vision step. The obvious solution was to servo to keep the road image centered. Experimentally this approach was a stunning success. Besides helping the vision, it seemed to be insensitive to even large calibration errors and misestimates of the road parameters. The theoretical analysis was remarkably sweet also, and bore out the empirical observations. A first order analysis, where we assume the road image is kept perfectly centered, gives the relation x / r = sin @g(q) (2) where r is the distance in front of the robot where a ray through the camera image center intersects the ground (i.e. the range at which we do our road finding). r can be changed by raising or lowering the camera, changing its tilt, or by using a different scanline as the center of the region in which road edges are sought. Equation (2) can be substituted into (1) to give dx / dt = - v x / r (3) which can be solved directly, giving -vt/r x = x e 0 (4) where x is the initial value of x when t = 0, so to first order the vehicle 0 approaches the centerline of the road exponentially with time. A more detailed analysis considers the actual servo loop behavior. The displacement of the road centerline image from the center of the forward field of view is proportional to ( sin @g(q) - x / r ) / cos @g(q) (5) Servoing the steering rate on (5) sets d@g(q) / dt = - g (sin @g(q) - x / r ) / cos @g(q) (6) where g is the servo loop gain. The full behavior of the robot can be found by solving (1) with (6) simultaneously. These equations are made linear and easily solvable by the substitution Q = sin @g(q), giving dx / dt = -v Q dQ / dt = - g ( Q - x / r ) (7) By co-incidence or cosmic significance of all the servo functions we considered, only this one yielded a fully general analytic solution. The solution has three cases distinguished by the sign of the expression g r - 4 v (8) In all cases the solution converges to x = 0, Q (and @g(q)) = 0 exponentially with time. When g < 4v/r the convergence is a decaying oscillation - the sluggish steering causes repeated overshoots of the road center. When g > 4v/r the solution contains a second exponential, and the robot approaches the road more slowly. When g = 4v/r, the critically damped case, we have the fastest convergence and no overshoot, and the behaviour is given by the equations -2vt/r x = e ( vt (2x /r - Q ) + x ) 0 0 0 (9) -2vt/r Q = e (2vt/r (2x /r - Q ) + Q ) 0 0 0 (10) The gain sets the turn rate required of the robot. Note that to retain the critically damped situation while increasing v without changing g, it is necessary only to increase r, i.e. arrange to have the vision look further ahead. The method is successful for several reasons. It keeps the road in view at all times. Because the system always converges, errors in g or camera calibration do not jeopardize performance. Because the parameter being servoed is the most robust direct measurable, namely road position in the image, the noise problems of the other approaches are almost totally eliminated. In particular, @g(q) (or Q) and x though they occupy a central position in the theoretical analysis, need never be calculated in the actual servo loop.