Control System Overview

There are two basic types of control systems:
   Open-loop control systems are those in which your controller tells your system to do something, but doesnít use the results of that action to verify the results or modify the commands to see that the job is done properly.
   Closed-loop control continuously monitors the performance of your system and changes the commands as necessary to stay on track.


Examples of open-loop control might be sending a PWM signal to your robot's drive motor which you know will normally cause your robot to go forward at 6 inches per second, but not measuring the actual speed and therefore not knowing that the robot is climbing a slope or ran into a shag rug, and isnít really managing to go 6 inches per second. So you tell the robot to go forward for 10 seconds then turn right, expecting it to go 60 inches and enter a doorway. But it doesnít make it to 60 inches and turns right and crashes into the wall. Another example would be telling the robot to go straight forward for a distance by setting the steering position to center, and the robot slowly veers off to the side and crashes into the wall again because the zero setting of the steering was not EXACTLY right.

The above block diagram shows the components of an open-loop control system. The "input reference" is the signal sent to the controller saying, perhaps, proceed forward at 6 inches per second. The "controller" block represents the calculations done to control some servo or motor or something else on the robot. "Plant" is a control systems term that means everything that is affected by the controller. This may include a servo motor, the steering system of the robot, the motion of the robot in response to the steering and even the resulting position of the robot in its world. The "controlled variable" is whatever part of the plant your input reference is trying to control to. It can be the servo position, a motor speed,  the steering angles or the position in the world. On a robot, the input reference, the controller function and parts of the plant (e.g. a built in PWM generator) may all be done by your microcontroller. From the earlier example, the input reference might be a command to go 6 inches/second, and the controlled variable would be the actual speed achieved which may, or may not be, 6 inches/second.

Open-loop control is what dead reckoning is all about. Unfortunately, no matter how carefully we calibrate our motor and steering and other actuation devices of the robot such that the input reference should provide the desired result, there will always be errors which will cause the result to be different than what was planned. And since errors are often cumulative over time, the longer you run in dead reckoning mode, the farther you will be from what you planned.

But, if open loop operations are short enough (and nothing keeps the robot from operating normally, open loop control may provide adequate performance for many tasks.  An example might be a wall following robot who uses sensors to control its distance from the wall when following it, but performs an open loop turn when the end of the wall is reached knowing that when it resumes wall following after the turn, any errors incurred during the turn will be corrected.


Closed-loop control starts out like open-loop in that you send an input reference to the system, but then feedback is used to monitor the performance resulting from the command; and if the performance is different than desired, changes are made to the command to get back on track. This is done by comparing the input reference to the feedback signal and computing an error from the reference. The controller then has equations which adjust the commands to the plant to reduce the error.  PID equations are the usual method to make these corrections.

Closed loop control is often approximated by doing long dead reckoning actions, then stopping and looking around, or finding a wall or corner in a known location, and using that reference to make corrections to get back on track. True closed loop control is continuously checking on performance (location, speed, whatever) so that the robot never gets significantly off track. For instance, to do wall following, the distance to the wall would be measured continuously and the steering adjusted continuously to maintain that distance. Or, in the speed control example above, if the reference speed is 6 inches per second, and the feedback signal indicates the robot is only moving at 5 Ĺ inches per second, the controller would see the error signal and increase the power to the motor.

Note:  Of course, in a digital microcontroller, "continuously" doesn't exist.  It is approximated by performing the control computations at a high enough rate that the robot can't stray significantly far from its references between calculations.

To pick an example we can all identify with, steering a real car along a road is like a wall or line following exercise for a robot. You are fairly continuously changing the steering to keep the car centered in your lane. Imagine steering by aiming the car then closing your eyes and only opening them for a quick glimpse every 5 seconds or so to make a correction. Itís not only difficult, itís scary. Because youíre afraid you might run into something during your dead reckoning phase. Same thing for a robot.  But, if you open your eyes several times a second (or for a robot, make new calculations at, perhaps, 20 times per second), the tracking task becomes much easier and more accurate.

  Return to the Control law menu to select the next subject