Lab 4 Real-Time Scheduling of Three Inverted Pendulums


Rate this product

University of Toronto
Department of Electrical and Computer Engineering
ECE411S – Real-Time Computer Control
Lab 4
Real-Time Scheduling of Three Inverted Pendulums
1 Purpose
This lab will introduce you to TrueTime, a MATLAB and Simulink based simulation program.
Using TrueTime, you will simulate the responses and task schedules of three inverted pendulums
controlled by one processor. Scheduling algorithms and priority assignments will be investigated
as well.
2 Introduction
Consider the cart-pendulum:
M u
The linearized state equation is
x˙ =

0 1 0 0
0 0 −
0 0 0 1
0 0 (M+m)g
M l 0

x +


M l

The problem is to control three pendulums and carts by a single processor. They have the
following physical parameters:
Name M(kg) m(kg) l(m)
Pendulum A 0.45 0.2 0.3
Pendulum B 0.45 0.26 0.35
Pendulum C 0.45 0.3 0.4
Of course, g = 9.81m/s2
Let the design specifications be the following:
(a) The inverted pendulums are balanced in the upright position.
(b) The carts track a unit step.
(c) Satisfactory transient response.
The state is assumed to be available for feedback control.
You have to learn how to use TrueTime from the manual. You can download the TrueTime
version 2.0 Reference Manual from
You should read the MATLAB-relevant parts of Sections 3-7. It is recommended that you also
download the TrueTime version 2.0 software from the same website, even if you do not have
MATLAB 7 or higher to run the software. By unzipping the file, you will find
the kernel directory and the examples directory. The TrueTime kernel is started as a Simulink
block by truetime.mdl in the kernel directory. The threeservos example in the examples directory
is useful as a guide to building the Simulink diagram for your experiment.
In class we assumed that when a task misses its deadline, it gets terminated and the newly
released task gets executed. However, if you initialize the TrueTime kernel simply based on the
instructions in Sections 3-7 of the TrueTime manual, this will not be the case; i.e., a task that
misses its deadline will continue to run and the newly released task will be queued.
So to terminate tasks that miss their deadline, you need to add a deadline overrun handler to your code. Simply add the following two lines to your TrueTime kernel init file, after
“ttCreatePeriodicTask(’name of pend task x’,0,…)”:
ttCreateHandler(’name of DL handler x’, 1, ’hdlcode’);
ttAttachDLHandler(’name of pend task x’, ’name of DL handler x’);
and download the file hdlcode.m from the course website into the same directory. The hdlcode.m
file can also be found in the overrun sub-directory in the examples directory. For more details,
read Section 11.4 of the manual.
3 Preparation
1. Determine the A and B matrices for the 3 pendulums, A1 corresponding to the A matrix
for pendulum A, etc.
2. Consider pendulum A. The tracking specification can be converted to a simple specification
in the following way. Let r(t) denote the reference step input. Then ˙r = 0, with r(0) = 1.
Define ˜x =
x1 − r x2 x3 x4
. Write down the differential equation that ˜x satisfies.
Express the design specifications in terms of the desired value of ˜x.
3. Since the full state is available, the control law can be taken to be
u = Fx˜
Determine an feedback gain, call it F1, such that the design specifications are met. You
may use pole placement, or lqr if you have already learned lqr design from previous courses.
Build a Simulink diagram for controlling pendulum A in continuous time, with the unit
step as the reference input. Record the simulation on a Simulink scope and print the
trajectories of the pendulum states to show that the design specifications are met.
4 Experiment
4.1 Using TrueTime
1. Using your control design for pendulum A in your preparation as a guide, design state
feedback gains for pendulums B and C to meet design specifications. Note that since the
control law is static, there is no further c2d operation needed to implement the controller.
2. Record the poles you used and the resulting F matrices, for each system.
3. Using TrueTime, build a Simulink model that incorporates the TrueTime kernel block for
controlling pendulum A. The Simulink model should look like this:
The total number of inputs into the TrueTime kernel block A/D should be 4, and the total
number of outputs from the D/A should be 1. Thus, the TrueTime kernel is controlling
only 1 pendulum. Assume execution times (Ci
’s) of 10, 14 and 17ms for pendulums A,
B and C, respectively. Choose appropriate periods for each system (to yield a utilization
factor U of about 70% for each system), and set all initial conditions to zero. Record your
choices of periods and the corresponding utilization factors for the 3 pendulums.
4. Incorporate all the data for real-time control of pendulum A, i.e., the feedback gains,
execution time, and period into the initialization script file for the TrueTime kernel block.
Simulate the response of pendulum A, record it on a Simulink scope, and print the response.
Is the response satisfactory? Sketch the task schedule of pendulum A for several periods,
using the scope connected to the Schedule port. Is the schedule consistent with the period
and execution time?
5. Repeat the above for pendulums B and C.
In the experimental work that follows, you will compare the responses of the scheduled
pendulums to the simulations generated above.
4.2 Fixed-Priority Scheduling
1. Build the system with all three pendulums being controlled by one TrueTime kernel. Now,
the total number of inputs into the TrueTime kernel block A/D should be 12, and the total
number of outputs from the D/A should be 3. Use the rate-monotonic priority assignment.
Set the execution times and periods equal to those used in Part 1 (do not redesign the Ti
from Section 4.1). Set the priority accordingly. Why are the performances not satisfactory?
2. Keep the same execution times, but adjust the periods so that the utilization factor is 75%:
Allow each system to account for 25% of U. Are the responses satisfactory? You can judge
by comparing the graphs to those obtained in Section 4.1. If they are not, explain why.
3. Now adjust the periods (by trial and error) so that the responses of the systems are satisfactory, and all tasks meet their deadlines. What are the new periods, and the corresponding
utilization factor? Print the response of System C, and the task schedule.
4. Use the deadline-monotonic priority assignment (’prioDM’). What is the performance of
System A? Now reverse the priorities: PC = 3, PB = 2, PA = 1 (or PC = 3, PB = 1, PA = 2).
How does this affect the performance of System A? Does System A meet its deadlines?
What does this indicate about the fixed-priority scheduling?
4.3 Earliest-Deadline-First Scheduling
1. Change the scheduling algorithm to EDF. By adjusting the Ti
’s, see how high you can push
U before the performances deteriorate significantly. What are the new periods, and the
corresponding U?
2. Print and label the step responses of the three systems.
4.4 Discussion
1. Briefly discuss what you believe are the advantages and disadvantages of the fixed-priority
and earliest-deadline first scheduling algorithms.

Lab 4 Real-Time Scheduling of Three Inverted Pendulums
Open chat
Need help?
Can we help?