Rotary Pendulum Work
Rotary Pendulum Work
Rotary Pendulum Work
Course material
complies with:
Topics Covered
Prerequisites
More specifically, the equations that describe the motions of the rotary arm and the pendulum with respect to the
servo motor voltage, i.e. the dynamics, will be obtained using the EulerLagrange equation:
∂2L ∂L
− = Qi
∂t∂ q˙i ∂qi
The variables qi are called generalized coordinates. For this system let
h i
q(t)⊤ = θ(t) α(t) (2.1)
dθ
Note: The dot convention for the time derivative will be used throughout this document, i.e. θ̇ = dt . The time
variable t will also be dropped from θ and α, i.e. θ = θ(t) and α = α(t).
With the generalized coordinates defined, the EulerLagrange equations for the rotary pendulum system are
∂2L ∂L
− = Q1
∂t∂ θ̇ ∂θ
∂2L ∂L
− = Q2
∂t∂ α̇ ∂α
The generalized forces Qi are used to describe the nonconservative forces (e.g. friction) applied to a system with
respect to the generalized coordinates. In this case, the generalized force acting on the rotary arm is
Q1 = τ − Br θ̇
See Rotary Servo User Manual for a description of the corresponding Rotary Servo parameters (e.g. such as the
backemf constant, km ). Our control variable is the input servo motor voltage, Vm . Opposing the applied torque is
the viscous friction torque, or viscous damping, corresponding to the term Br . Since the pendulum is not actuated,
the only force acting on the link is the damping. The viscous damping coefficient of the pendulum is denoted by Bp .
The EulerLagrange equations is a systematic method of finding the equations of motion, i.e. EOMs, of a system.
Once the kinetic and potential energy are obtained and the Lagrangian is found, then the task is to compute various
derivatives to get the EOMs. After going through this process, the nonlinear equations of motion for the Rotary
Pendulum are:
1 1 1
mp Lr + mp Lp − mp Lp cos(α) + Jr θ̈ −
2 2 2 2
mp Lp Lr cos(α) α̈
4 4 2
1 1
+ 2
mp Lp sin(α) cos(α) θ̇α̇ + mp Lp Lr sin(α) α̇2 = τ − Br θ̇ (2.2)
2 2
1 1 1
− mp Lp Lr cos(α)θ̈ + Jp + mp L2p α̈ − mp L2p cos(α) sin(α)θ̇2
2 4 4
1
− mp Lp g sin(α) = −Bp α̇. (2.3)
2
The torque applied at the base of the rotary arm (i.e. at the load gear) is generated by the servo motor as described
by the equation
ηg Kg ηm kt (Vm − Kg km θ̇)
τ= . (2.4)
Rm
See Rotary Servo User Manual for a description of the corresponding Rotary Servo parameters (e.g. such as the
backemf constant, km ).
J ẍ + bẋ + g(x) = τ1
where x is an angular position, J is the moment of inertia, b is the damping, g(x) is the gravitational function, and τ1
is the applied torque (scalar value).
For a generalized coordinate vector q, this can be generalized into the matrix form
where D is the inertial matrix, C is the damping matrix, g(q) is the gravitational vector, and τ is the applied torque
vector.
The nonlinear equations of motion given in Equation 2.2 and Equation 2.3 can be placed into this matrix format.
2.1.3 Linearizing
Here is an example of how to linearize a twovariable nonlinear function called f (z). Variable z is defined
h i
z ⊤ = z1 z2
and h i
y ⊤ = x1 x2 (2.9)
In the output equation, only the position of the servo and link angles are being measured. Based on this, the C and
D matrices in the output equation are
1 0 0 0
C= (2.10)
0 1 0 0
and
0
D = . (2.11)
0
The velocities of the servo and pendulum angles can be computed in the digital controller, e.g. by taking the derivative
and filtering the result though a highpass filter.
3. Fit the two linear equations of motion found in the above exercises into the matrix form shown in Equation 2.5.
Make sure the equation is in terms of θ and α (and its derivatives).
4. Solve for the acceleration terms in the equations of motion. You can either solve this using the two linear
equations or using the matrix form. If you’re doing it in the matrix form, recall that the inverse of a 2x2 matrix is
−1
a b 1 d −b
A−1 = = , (2.12)
c d det(A) −c a
system = ss(A,B,C,D);
The representative C and D matrices have already been included. You need to enter the statespace matrices
A and B that you found in Section 2.2. The actuator dynamics have been added to convert your statespace
matrices to be in terms of voltage. Recall that the input of the statespace model you found in Section 2.2 is
the torque acting at the servo load gear (i.e. the pivot of the pendulum). However, we do not control torque
directly we control the servo input voltage. The above code uses the voltagetorque relationship given in
Equation 2.4 in Section 2.1.2 to transform torque to voltage.
3. Run the ROTPEN_ABCD_eqns_student.m script to load the statespace matrices in the Matlab workspace.
Show the numerical matrices that are displayed in the Matlab prompt.
Before ending this lab... To do the prelab questions in Section 3.3, you need the A and B matrices (numerical
representation) and the openloop poles. Make sure you record these.
The q_rotpen_model_student Simulink diagram shown in Figure 2.2 is used to confirm that the actual system
hardware matches the modeling conventions. It is also a good check that the system is connected properly. The
QUARC blocks are used to interface with encoders of the system. See the QUARC Help documentation for more
information about the QUARCr software. This model outputs the rotary arm and pendulum link angles and can
apply a voltage to the DC motor.
IMPORTANT: Before you can conduct this experiment, you need to make sure that the lab files are configured
according to your system setup. If they have not been configured already, then you need to go to Section 5.1 to
configure the lab files first.
2. In the q_rotpen_model_student Simulink diagram, go to QUARC | Build to build the QUARC controller.
3. Turn ON the power amplifier.
5. Rotate the arm and the pendulum in the counterclockwise direction and examine the direction of their
response. Does the direction of these measurements agree with the modeling conventions given in Section
2.1.1? Explain why or why not.
6. Go to the Rotary Pendulum Interface subsystem block, shown in Figure 2.3.
7. The Source block called u (V) in q_rotpen_mdl_student Simulink diagram is the control input. When you set
u (V) to 1 V, the rotary arm must move according to the model conventions that were defined in Section 2.1.1.
As shown in Figure 2.3, the Direction Convention Gain block is currently set to 0. Change this value such that
the model conventions are adhered to. Plot the rotary arm response and the motor voltage in a Matlab figure
when 1 V is applied.
Note: When the controller stops, the last 10 seconds of data is automatically saved in the Matlab workspace
to the variables data_theta and data_Vm. The time is stored in data_alpha(:,1) vector, the pendulum angle is
Description Value
0 0 1 0
0 0 0 1
StateSpace Matrix A
0 80.3 −45.8 −0.930
0 122 −44.1 −1.40
0
0
StateSpace Matrix B
83.4
80.3
1 0 0 0
StateSpace Matrix C
0 1 0 0
0
StateSpace Matrix D
0
The necessary closedloop poles are found from specifications 1 and 2. The pendulum deflection and control effort
requirements (i.e. specifications 3 and 4) are to be satisfied when the rotary arm is tracking a ±20 degree angle
square wave.
3.2 Background
In Section Section 2, we found a linear statestate space model that represents the inverted rotary pendulum system.
This model is used to investigate the inverted pendulum stability properties in Section 3.2.1. In Section 3.2.2, the
notion of controllabitliy is introduced. The procedure to transform matrices to their companion form is described in
Section 3.2.3. Once in their companion form, it is easier to design a gain according to the poleplacement principles,
which is discussed in Section 3.2.4. Lastly, Section 3.2.6 describes the statefeedback control used to balance the
pendulum.
3.2.1 Stability
The stability of a system can be determined from its poles ([2]):
• Marginally stable systems have one pole on the imaginary axis and the other poles in the lefthand plane.
The poles are the roots of the system’s characteristic equation. From the statespace, the characteristic equation of
the system can be found using
det (sI − A) = 0
where det() is the determinant function, s is the Laplace operator, and I the identity matrix. These are the eigenvalues
of the statespace matrix A.
3.2.2 Controllability
If the control input u of a system can take each state variable, xi where i = 1 . . . n, from an initial state to a final state
then the system is controllable, otherwise it is uncontrollable ([2]).
Rank Test The system is controllable if the rank of its controllability matrix
T = B AB A2 B . . . An B (3.1)
and
0
..
.
B̃ =
(3.3)
0
1
Define
W = T T̃ −1
where T is the controllability matrix defined in Equation 3.1 and
T̃ = [B̃ B̃ Ã . . . B̃ Ãn ].
Then
W −1 AW = Ã
and
W −1 B = B̃.
ẋ = Ax + B(−Kx)
= (A − BK)x
and
0
B = 0 (3.5)
1
Equating the coefficients between Equation 3.7 and the desired polynomial in Equation 3.6
k1 − 3 = 6
k2 + 1 = 11
k3 + 5 = 6
Solving for the gains, we find that a gain of K = [9 10 1] is required to move the poles to their desired location.
We can generalize the procedure to design a gain K for a controllable (A,B) system as follows:
Step 3 Find K = K̃W −1 to get the feedback gain for the original system (A,B).
Remark: It is important to do the K̃ → K conversion. Remember that (A,B) represents the actual system while the
companion matrices à and B̃ do not.
Note that if xd = 0 then u = −Kx, which is the control used in the poleplacement algorithm.
When running this on the actual system, the pendulum begins in the hanging, downward position. We only want the
balance control to be enabled when the pendulum is brought up around its upright vertical position. The controller
is therefore (
K(xd − x) |x2 | < ϵ
u= (3.12)
0 otherwise
where ϵ is the angle about which the controller should engage. For example if ϵ = 10 degrees, then the control will
begin when the pendulum is within ±10 degrees of its upright position, i.e. when |x2 | < 10 degrees.
3. Open the d_pole_placement_student.m script. As shown below, the companion matrices à and B̃ for the
model are automatically found (denoted as Ac and Bc in Matlab).
In order to find the gain K, we need to find the transformation matrix W = T T̃ −1 (note: T̃ is denoted as Tc in
Matlab). Modify the d_pole_placement_student.m script to calculate the controllability matrix T , the companion
controllabilty matrix T c, the inverse of T c, and W . Show your completed script and the resulting T , T c, T c−1 ,
and W matrices.
4. Enter the companion gain, K̃, you found in the prelab as Kc in d_pole_placement_student.m and modify it
to find gain K using the transformation detailed in Section Section 3. Run the script again to calculate the
feedback gain K and record its value in Table 3.1.
5. Evaluate the closedloop poles of the system, i.e. the eigenvalues of A − BK. Record the closedloop poles
of the system when using the gain K calculated above. Have the poles been placed to their desired locations?
If not, then go back and reinvestigate your control design until you find a gain that positions the poles to the
required location.
6. In the previous exercises, gain K was found manually through matrix operations. All that work can instead be
done using a predefined Compensator Design Matlab command. Find gain K using a Matlab poleplacement
command and verify that the gain is the same as generated before.
The s_rotpen_bal Simulink diagram shown in Figure 3.3 is used to simulate the closedloop response of the Rotary
Pendulum using the statefeedback control described in Section Section 3 with the control gain K found in Section
3.4.1.
The Signal Generator block generates a 0.1 Hz square wave (with amplitude of 1). The Amplitude (deg) gain block is
used to change the desired rotary arm position. The statefeedback gain K is set in the Control Gain gain block and
is read from the Matlab workspace. The Simulink StateSpace block reads the A, B, C, and D statespace matrices
that are loaded in the Matlab workspace. The Find State X block contains highpass filters to find the velocity of the
rotary arm and pendulum.
IMPORTANT: Before you can conduct this experiment, you need to make sure that the lab files are configured
according to your system setup. If they have not been configured already, go to Section 5.2 to configure the lab files
first. Make sure the model you found in Section 2.3 is entered in ROTPEN_ABCD_eqns_student.m.
1. Run setup_rotpen.m. Ensure the gain K you found in Section 3.4.1 is loaded.
2. Run the s_rotpen_bal.mdl. The response in the scopes shown in Figure 3.4 were generated using an arbitrary
feedback control gain. Plot the simulated response of rotary arm, pendulum, and motor input voltage obtained
using your obtained gain K in a Matlab figure and attach it to your report.
Note: When the simulation stops, the last 10 seconds of data is automatically saved in the Matlab workspace
to the variables data_theta, data_alpha, and data_Vm. The time is stored in the data_theta(:,1) vector, the
desired and measured rotary arm angles are saved in the data_theta(;,2) and data_theta(;,3) arrays, the pen
dulum angle is stored the data_alpha(:,2) vector, and the control input is in the data_Vm(:,2) structure.
3. Measure the pendulum deflection and voltage used. Are the specifications given in Section 3.1 satisfied?
4. Close the Simulink diagram when you are done.
Experiment Setup
The q_rotpen_bal_student Simulink diagram shown in Figure 3.5 is used to run the statefeedback control on the
Quanser Rotary Pendulum system. The Rotary Pendulum Interface subsystem contains QUARC blocks that interface
with the DC motor and sensors of the system. The feedback developed in Section 3.4.1 is implemented using a
Simulink Gain block.
IMPORTANT: Before you can conduct this experiment, you need to make sure that the lab files are configured
according to your system setup. If they have not been configured already, then go to Section 5.3 to configure the
lab files first.
10. Measure the pendulum deflection and voltage used. Are the specifications given in Section 3.1 satisfied for
the implementation?
11. Shut off the power amplifier.
The pivot accleration, u, is the linear acceleration of the pendulum link base. The acceleration is proportional to the
torque of the rotary arm and is expressed as
τ = mr Lr u (4.2)
where mr is the mass of the rotary arm and Lr is its length, as shown in Section Section 2. The voltagetorque
relationship is given in Equation 2.4.
The pendulum parameters are described in Section Section 2 and their values are given in Rotary Pendulum User
L
Manual. In the potential energy calculation, we assume the center of mass to be in the center of the link, i.e. 2p .
Adding the kinetic and potential energy together give us the total pendulum energy
1 1
E= Jp α̇2 + mp gLp (1 − cos α). (4.4)
2 2
To introduce the pivot acceleration u and eventually, our control variable, solve for sin α in Equation 4.1 to obtain
1
sin(α) = (−2Jp α̈ + mp Lp u cos(α)).
mp gLp
u = (E − Er )α̇ cos α.
By setting the reference energy to the pendulum potential energy, i.e. Er = Ep , the control will swing the link to its
upright position. Notice that the control law is nonlinear because the proportional gain depends on the pendulum
angle, α, and also notice that the control changes sign when α̇ changes sign and when the angle is ±90 degrees.
For energy to change quickly the magnitude of the control signal must be large. As a result, the following swingup
controller is implemented
u = satumax (µ(E − Er )sign(α̇ cos α)) (4.6)
where µ is a tunable control gain and satumax function saturates the control signal at the maximum acceleration of
the pendulum pivot, umax . Taking the sign of α̇ cos α allows for faster switching.
In order to translate the pivot acceleration into servo voltage, first solve for the voltage in Equation 2.4 to get
τ Rm
Vm = + Kg km θ̇.
ηg Kg ηm kt
Then substitute the torqueacceleration relationship given in Equation 4.2 to obtain the following
Rm m r Lr u
Vm = + Kg km θ̇. (4.7)
ηg Kg ηm kt
Basically the same switching used for the balance control in Equation 3.12 is used. Only instead of feeding 0 V
when the balance control is not enabled, the swingup control is engaged. The controller therefore becomes
(
K(xd − x) |x2 | < ϵ
u= (4.8)
satumax (µ(E − Er )sign(α̇ cos α)) otherwise
Experiment Setup
The q_rotpen_swingup_student Simulink diagram shown in Figure 4.1 is used to run the swingup control on the
Quanser Rotary Pendulum system. Similarly with the q_rotpen_balance_student Simulink diagram, the Rotary
Pendulum Interface subsystem contains QUARC blocks that interface with the system hardware and the feedback is
implemented using a Simulink Gain block. The balance and swingup control are not completed.
Figure 4.1: q_rotpen_swingup_student Simulink diagram can be used to run the swingup controller
IMPORTANT: Before you can conduct this experiment, you need to make sure that the lab files are configured
according to your system setup. If they have not been configured already, then go to Section 5.4 to configure the
lab files first.
7. Go into EnergyBased SwingUp Control | Pendulum Energy block. The incomplete diagram is shown in
Figure 4.3. Modify the Pendulum Energy diagram to measure the total energy of the pendulum. Use the
pendulum parameters already loaded in Matlab, i.e. from the config_sp function, and any of the blocks from
the Simulink library you require.
8. Go to QUARC | Build to build the controller.
11. Implement the energybased swingup controller by modifying the EnergyBased SwingUp Control subsystem
shown in Figure 4.4. Use the Source block with the variable Er as well as the inputs u_max (m/s2 ) and mu
that are already included. Make sure you are using the full pendulum angle α, i.e. not the upright based angle
used in the feedback for the inverted pendulum balance control.
12. Add the necessary modifications to convert the acceleration generated by the swingup control to servo voltage.
To do this, edit the SwingUp subsystem shown in Figure 4.2. Use the model parameters that are already
defined in the Matlab workspace, i.e. using the config_servo function, for any of the servobased attributes
you need.
13. Implement the selferecting control in Equation 4.8, which includes both the swingup and balance control. As
in the Balance Control lab, plot the rotary arm, pendulum, and servo voltage response in a Matlab figure.
14. Set the reference energy, maximum acceleration, and proportional gain parameters in q_rotpen_swingup_student
Simulink model to:
Er = Ep
umax = 1 m/s2
µ = 1
Make sure the reference energy is set to the pendulum potential energy. Then go to QUARC | Run to start the
controller.
The pendulum should be moving back and forth slowly. Gradually increase the umax and/or µ until the pendu
lum goes up. Do not increase the umax above the maximum acceleration you found for the servo in Section
4.2. When the pendulum swings up to the vertical upright position, the balance controller should engage and
balance the link. Show the response of the arm and pendulum angles as well as the control voltage and record
the swingup parameters. Did the swingup behave with the parameters you expected?
15. Click on the STOP button to stop running the controller. Be careful, as the pendulum will fall down when the
controller is stopped.
16. Shut off the power amplifier.
Follow these steps to get the system ready for this lab:
1. Setup the Rotary Servo with the Rotary Pendulum module as detailed in Rotary Pendulum User Manual.
2. Load the Matlab software.
3. Browse through the Current Directory window in Matlab and find the folder that contains the QUARC ROTPEN
file q_rotpen_mdl_student.mdl.
4. Open the q_rotpen_mdl_student.mdl Simulink diagram, shown in Figure 2.2.
5. Configure DAQ: Ensure the HIL Initialize block in the Rotary Pendulum Interface subsystem is configured for
the DAQ device that is installed in your system. By default, the block is setup for the Quanser Q2USB DAQ.
See QUARC Documentation for more information on configuring the HIL Initialize block.
6. Open the setup_rotpen.m file. This is the setup script used for the Rotary Pendulum Simulink models.
Follow these steps to get the system ready for this lab:
1. Setup the Rotary Pendulum system as described in the Quick Start Guide and Rotary Pendulum User Manual.
2. Load the MATLABr software.
3. Browse through the Current Directory window in Matlab and find the folder that contains the q_rotpen_bal.mdl
file.
4. Open the q_rotpen_bal_student.mdl Simulink diagram. The student based version is shown in Figure 3.5.
5. Configure DAQ: Ensure the HIL Initialize block in the Rotary Pendulum Interface subsystem is configured for
the DAQ device that is installed in your system. By default, the block is setup for the Quanser Q2USB DAQ.
See QUARC Documentation for more information on configuring the HIL Initialize block.
6. Configure setup script: Set the parameters in the setup_rotpen.m script according to your system setup.
See 5.1 and 5.2 for more details.
7. Run the setup_rotpen.m script.
Follow these steps to get the system ready for this lab:
1. Setup the Rotary Servo with the Rotary Pendulum module as detailed in Rotary Pendulum User Manual.
2. Load the Matlab software.
3. Browse through the Current Directory window in Matlab and find the folder that contains the
q_rotpen_swingup.mdl file.
4. Open the q_rotpen_swingup_student.mdl Simulink diagram. The student based version is shown in Figure 4.1.
5. Configure DAQ: Ensure the HIL Initialize block in the Rotary Pendulum Interface subsystem is configured for
the DAQ device that is installed in your system. By default, the block is setup for the Quanser Q2USB DAQ.
See QUARC Documentation for more information on configuring the HIL Initialize block.
6. Configure setup script: Set the parameters in the setup_rotpen.m script according to your system setup.
See 5.1 and 5.2 for more details.
7. Run the setup_rotpen.m script.
1. Modeling,
2. Balance Control, and
3. SwingUp Control.
When you are writing your lab report, follow the outline corresponding to the experiment you conducted to build the
content of your report. Also, in Section 6.4 you can find some basic tips for the format of your report.
1. Model Analysis
• Briefly describe the main goal of the simulation.
• Briefly describe the simulation procedure in steps 2 and 3 in 2.3.1.
2. Calibration
II. RESULTS
Do not interpret or analyze the data in this section. Just provide the results.
III. ANALYSIS
Provide details of your calculations (methods used) for analysis for each of the following:
IV. CONCLUSIONS
Interpret your results to arrive at logical conclusions for the following:
1. Whether the arm and pendulum angles match the model conventions in Step 5 of 2.3.2, Sensor calibration.
2. Whether the control voltage matches the model conventions in Step 7 of 2.3.2, Actuator calibration.
1. Control Design
• Briefly describe the main goal of the control design.
• Briefly describe the controllability check procedure in Step 2 in 3.4.1.
• Briefly describe the control design procedure in Step 3 in 3.4.1.
2. Simulation
• Briefly describe the main goal of the simulation.
• Briefly describe the simulation procedure in Step 2 in 3.4.2.
3. Implementation
• Briefly describe the main goal of this experiment.
• Briefly describe the experimental procedure in Step 8 in 3.4.3.
II. RESULTS
Do not interpret or analyze the data in this section. Just provide the results.
III. ANALYSIS
Provide details of your calculations (methods used) for analysis for each of the following:
IV. CONCLUSIONS
Interpret your results to arrive at logical conclusions for each of the following:
1. Implementation
• Briefly describe the main goal of this experiment.
• Briefly describe the experimental procedure in Step 7 in 4.3.
• Briefly describe the control states and parameters for the swingup control in Step 11 in 4.3.
• Briefly describe the parameters used to convert torque to voltage in Step 12 in 4.3.
II. RESULTS
Do not interpret or analyze the data in this section. Just provide the results.
3. Response plot from Step 14 in 3.4.3, Selferecting inverted pendulum control implementation response.
4. Provide applicable data collected in this laboratory (from Table 4.1).
III. ANALYSIS
Provide details of your calculations (methods used) for analysis for each of the following:
IV. CONCLUSIONS
Interpret your results to arrive at logical conclusions for each of the following:
• Has cover page with all necessary details (title, course, student name(s), etc.)
• Each of the required sections is completed (Procedure, Results, Analysis and Conclusions).
• Typed.
Quanser Inc.
119 Spy Court
Markham, Ontario
L3R 5H6
Canada
info@quanser.com
Phone: 19059403575
Fax: 19059403576
For more information on the solutions Quanser Inc. offers, please visit the web site at:
http://www.quanser.com
This document and the software described in it are provided subject to a license agreement. Neither the software nor this document may be
used or copied except as specified under the terms of that license agreement. All rights are reserved and no part may be reproduced, stored in
a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior
written permission of Quanser Inc.
This product meets the essential requirements of applicable European Directives as follows:
• 2006/95/EC; LowVoltage Directive (safety)
• 2004/108/EC; Electromagnetic Compatibility Directive (EMC)
[2] Norman S. Nise. Control Systems Engineering. John Wiley & Sons, Inc., 2008.
[3] K. J. Åström and K. Furuta. Swinging up a pendulum by energy control. 13th IFAC World Congress, 1996.
Quanser’s rotary collection allows you to create experiments of varying complexity – from basic to advanced. Your lab
starts with the Rotary Servo Base Unit and is designed to help engineering educators reach a new level of efficiency
and effectiveness in teaching controls in virtually every engineering discipline including electrical, computer, mechanical,
aerospace, civil, robotics and mechatronics. For more information please contact info@quanser.com.
©2012 Quanser Inc. All rights reserved.