Motor Control
RSS Lecture 3
Monday, 7 Feb 2011
Prof. Daniela Rus
(includes some material by Prof. Seth Teller)
Jones, Flynn & Seiger § 7.8.2
http://courses.csail.mit.edu/6.141/
Today: Control
• Early mechanical examples
• Feed-forward and Feedback control
• Terminology
• Basic controllers:
– Feed-Forward (FF) control
– Bang-Bang control
– Proportional (P) control
– The D term: Proportional-Derivative (PD) control
– The I term: Proportional-Integral (PI) control
– Proportional-Integral-Derivative (PID) control
• Gain selection
• Applications
The Role of Control
• Many tasks in robotics are defined by
achievement goals
– Go to the end of the maze
– Push that box over here
• Other tasks in robotics are defined by
maintenance goals:
– Drive at 0.5m/s
– Balance on one leg
The Role of Control
• Control theory is generally used for low-level
maintenance goals
• General notions:
– output = Controller(input)
– output is control signal to actuator (e.g., motor
voltage/current)
– input is either goal state or goal state error (e.g.,
desired motor velocity)
• Controller is stateless
What is the point of control?
• Consider any mechanism with adjustable DOFs*
(e.g. a valve, furnace, engine, car, robot…)
• Control is purposeful variation of these DOFs
to achieve some specified maintenance state
– Early mechanical examples: float valve, steam governor
www.freshwatersystems.com
*DOFs = Degrees of Freedom
Motor Control: Open Loop
• Give robot task with no concern for the
environment
• Applications: ???
• Open loop: signal to action
• Not checked if correct action was taken
• Example: go forward for 15 secs, then turn
left for 10 secs. Issues?
signal actuator output
Open loop (feed-forward) control
• Open loop controller:
– output = FF(goal)
• Example.: motor speed controller (linear):
– V=k*s
– V is applied voltage on motor
– s is speed
– k is gain term (from calibration)
• Weakness:
– Varying load on motor => motor may not maintain goal
speed
Feed-Forward (FF) Control
• Pass command signal from external environment
directly to the loaded element (e.g., the motor)
• Command signal typically multiplied by a gain K
Command
signal
× Motor RPM
K
• … Where does the gain value K come from?
• Under what conditions will FF control work well?
• You will implement an FF controller in Lab 2
Feed-Forward (FF) Control
• Pass command signal from external environment
directly to the loaded element (e.g., the motor)
• Command signal typically multiplied by a gain K
Command
signal
× Motor RPM
K
• … Where does the gain value K come from?
– Calibration (example: PWM = 0, PWM = 255)
• Under what conditions will FF control work well?
– When the presented load is uniform and known
• You will implement an FF controller in Lab 2
Feedback Control
• Feedback controller:
– output = FB(error)
– error = goal state - measured state
– controller attempts to minimize error
• Feedback control requires sensors:
– Binary (at goal/not at goal)
– Direction (less than/greater than)
– Magnitude (very bad, bad, good)
Example: Wall Following
• How would you use feedback control to
implement a wall-following behavior in a robot?
• What sensors would you use, and would they
provide magnitude and direction of the error?
• What will this robot's behavior look like?
Feedback Control Terminology
• Plant P: process commanded by a Controller
• Process Variable PV: Value of some process
or system quantity of interest (e.g. temperature,
speed, force, …) as measured by a Sensor
• Set Point* SP: Desired value of that quantity
e(t) u(t)
SP - Controller Plant PV
Feedback Sensor
• Error signal e(t) = SP-PV: error in the process
variable at time t, computed via Feedback
• Control signal u(t): controller output (value of
switch, voltage, PWM, throttle, steer angle, …)
*Set point is sometimes called the “Reference”
Bang-bang control
• Discrete on/off
• Furnace: goal
temp = 70
• when temp < 70
BANG! Heat;
• when temp >
70 BANG! Stop
the heat
Example source: Mathworks
Bang-bang control
Desired speed Actual speed
Vd < V? *k motor
0/1
Encoder measurement
O(t) =
O(t) =
Bang-bang control
Desired speed Actual speed
Vd < V? *k motor
0/1
Encoder measurement
O(t) = k if v(t) < Vd
O(t) = 0 otherwise
Example: Home Heating System
• Plant P:
• Process Variable PV:
• Controller: Sensor:
• Set Point SP:
• Control signal:
e(t) u(t)
SP - Thermostat Boiler PV
Temperature Sensor
Example: Home Heating System
• Plant P: Boiler with on-off switch (1 = all on ; 0 = all off)
• Process Variable PV: Current home temperature
• Controller: Thermostat Sensor: Thermometer
• Set Point SP: Thermostat setting (desired temp.)
• Control signal: Boiler on-off switch u(t) ∈ {0, 1}
e(t) u(t)
SP - Thermostat Boiler PV
Temperature Sensor
How could the function u(t) be implemented?
Example: Home Heating System
• Plant P: Boiler with on-off switch (1 = all on ; 0 = all off)
• Process Variable PV: Current home temperature
• Controller: Thermostat Sensor: Thermometer
• Set Point SP: Thermostat setting (desired temp.)
• Control signal: Boiler on-off switch u(t) ∈ {0, 1}
e(t) u(t)
SP - Thermostat Boiler PV
Temperature Sensor
How could the function u(t) be implemented?
u(t) = 1 if e(t) > 0 [i.e., if SP > PV], 0 otherwise
Motor Control: closed loop
• A way of getting a robot to achieve and
maintain a goal state by constantly comparing
current state with goal state.
• Use sensor for feedback
Desired speed Actual speed
motor
test computation
Encoder measurement
Motor Control: PID
• Control theory is the science that studies the
behavior of control systems
• CurrentState - DesiredState = Error
• Main types of simple linear controllers:
– P: proportional control
– PD: proportional derivative control
– PI: proportional integral control
– PID: proportional integral derivative control
Example: driving
• Steer a car in the center of a lane
Example: driving
• Steer a car in the center of it lane
Observed error: distance off from center line
Example: driving
• Steer a car in the center of it lane
Error is zero but how is the car pointed?
What will this do to the car?
P controller is happy on line independent of orientation!
What if respond ~ rate of change ?
• Steer a car in the center of it lane
Example: driving
• Steer a car in the center of it lane
What is the observed rate of error?
Other error?
What if respond ~ rate of change ?
• Steer a car in the center of it lane
D controller is Happy on any parallel line!
What if Road Sloped ?
• Steer a car in the center of its lane
What if Road Sloped ?
• Steer a car in the center of it lane
Slower response uphill
Faster response downhill
Gravity contributes a steady-state error
Proportional Control
• Suppose plant can be commanded by a
continuous, rather than discrete, signal
– Valve position to a pipeline or carburetor
– Throttle to an internal combustion engine
– PWM value to a DC motor
• What’s a natural thing to try?
– Proportional (P) Control: make the command signal
a scalar multiple of the error term: u(t) = KP × e(t)
e(t) u(t)
SP - Controller Plant PV
Sensor
Example: Cruise Control (CC) System
• Plant P:
• Process Variable PV:
• Controller: Sensor:
• Set Point SP:
• Control signal:
e(t) u(t)
Vdesired - C-C System Engine Vactual
Speedometer
Example: Cruise Control (CC) System
• Plant P: Engine with throttle setting u ∈ [0..1]
• Process Variable PV: Current speed Vactual
• Controller: C-C system Sensor: Speedometer
• Set Point SP: Desired speed Vdesired
• Control signal: Continuous throttle value u ∈ [0..1]
e(t) u(t)
Vdesired - C-C System Engine Vactual
Speedometer
Define e(t) = Vdesired-Vactual, u(t) = KP × e(t), clipped to [0..1]
i.e. Throttle = KP × (Vdesired - Vactual)
Does this controller “settle” at the desired speed?
No; it exhibits error (E).
Proportional Control: Why E?
– Suppose e(t) = 0. Then u(t) = KP * e = 0 (Plant inactivated)
– Process Variable deviates from Set Point, activating plant
– But any real physical system has a delayed response
– Deviation, sustained over delay interval, yields error
Set Delay
Point
Error (E)
Process
Variable
PV < SP, u(t) > 0, Plant activates
PV = SP, u(t) = 0, Plant inactive
Time
Why not just introduce constant term, u(t) = A + KP * e(t) ?
Proportional Control Step Response
Notional plot and terminology:
Step
input Error (E)
Set Settle Time
Point
Process
Variable
Time
Is E constant over time? No; it depends on load.
Proportional Control and Error
• Can combat E by increasing KP (“the P gain”)
• This gives a faster response and lower E!
• But increasing the gain too much leads to
overshoot and instability
Higher KP
Step
Set input
Point
Low KP
Process
Variable Time
Combating Overshoot: The D Term
• Note the derivative of error in responses below
• Subtract it from output to counteract overshoot
• Then u(t) = KP × e(t) + KD × d [e(t)] / dt
– KD the “derivative” or “damping” term in PD controller
Higher KP
Step
Set input
Damped response, KD > 0
Point
Low KP
Small derivative
Process Large derivative
Variable Time
• … But still haven’t eliminated steady-state error!
Combating Steady-State Error: I Term
• Idea: apply correction based on integrated error
– If error persists, integrated term will grow in magnitude
– Sum proportional and integral term into control output
e(t) u(t)
SP - × Σ
Plant PV
KP
∫ × KI
Then u(t) = KP × e(t) + KI × ∫ e(t) (where the integral of
the error term is taken over some specified time interval)
This produces a proportional-integral (PI) controller
Incorporating the I term eliminates SSE by modulating
the plant input so that the time-averaged error is zero.
Putting it All Together: PID Control
• Incorporate P, I and D terms in controller output
– Combine as a weighted sum, using gains as weights
d/dt × KD
e(t) u(t)
SP - × Σ
Plant PV
KP
∫ × KI
Then u(t) = KP × e(t) + KI × ∫ e(t) + KD × d [e(t)] / dt
This is a “proportional-integral-derivative” or PID controller
Implementation Issues
• How do we approximate Ki * ∫ err(t) dt to
implement an I controller?
• How do we approximate Kd * derr/dt to
implement a D controller?
PID control
• PID control combines P and D control:
o = Kp * i + Ki * ∫ i(t) dt + Kd * di/dt
o = Kp * err + Ki * ∫ err(t) dt + Kd * derr/dt
• P component combats present error
• I component combats past (cumulative) error
• D component combats future error
• Gains must be tuned together
Ziegler-Nichols Tuning Method
Exploration: set the plant under P control and start increasing
the Kp gain until loop oscillates
Note critical gain KC and oscillation period TC
KP KI KD
P 0.5KC
PI 0.45KC 1.2KP/TC
PID 0.5KC 2KP/TC KPTC/8
Z & N developed rule using Monte Carlo method
Rule useful in the absence of models
Example: Quadrotor Control
Using Ziegler-Nichols Method
Integral and Derivative
gains are set to zero
Proportional gain is
increased until system
oscillates in response to
a step input
This is known as the
critical gain KC, and the
system oscillates with a
period PC
Calculating PID parameters
KP = 0.6*KC
KI = 2*KP / TC
KD = 0.125*KP*TC
TC = 4
The Ziegler-Nichols
Method is a guideline
for experimentally
obtaining 25%
overshoot from a step
response.
What does KI do?
For this system, KI is
crucial in eliminating
steady state error
primarily caused by
gravity.
The PD system
overshoots and
damping is still
reasonable.
What does KD do?
Reasonable KD helps
minimize overshoot
and settling time.
Too much KD leads to
system instability.
P system has
unacceptable
overshoot, settling
time, and steady state
error. However, it is
stable.
Control summary
Control type Feedback Pro/Con
Bang- Simple/
discrete yes
bang Discrete
Simple/may
Open
Control law no be
loop
unrepeatable
Closed Continuous/
P, I, D yes
loop Tune Gains