นอกจากการใช้กฎข้อที่สองของนิวตันในการหาสมการพลศาสตร์แล้ว ยังมีอีกหนึ่งวิธีที่ใช้กันบ่อย ก็คือการใช้ Lagrange’s equation เขียนในรูปทั่วไปได้ดังนี้
(1)
L คือ Lagrange function แสดงได้ดังนี้
(2)
T คือฟังชั่นพลังงานจล
V คือฟังชั่นพลังงานศักดิ์
\(Q_{i}\) คือแรงภายนอกที่มากระทำ
Free body diagram ของ Inverted Pendulum แสดงได้ดังนี้
ฟังชั่นพลังงานจลของ Pendulum เขียนเป็นสมการได้ดังนี้
(3)
(4)
ระยะการเคลื่อนที่ของมวล m ได้เป็นสมการได้ดังนี้
(5)
(6)
(7)
(8)
แทนสมการ (5) – (8) ลงใน (3) – (4)
(9)
(10)
ฟังชั่นพลังงานศักดิ์ของระบบ แสดงได้ด้วยสมการ
(11)
แทน (10) และ (11) ลงใน Lagrange function (2)
(12)
จากรูปที่ 1 เรากำหนด coordinate 2 ตำแหน่ง คือ \(y\) และ \(\theta\) ดังนั้นสามารถเขียน Lagrange equation ได้ดังนี้
(13)
(14)
แทน (12) ลงใน (13) และ (14) จะได้
(15)
(16)
(17)
(18)
แทนค่า (15) – (18) ลงใน (13) – (14)
(19)
(20)
ทำการ Linearization รอบจุดสมดุลโดยสมมติว่ามีการเปลี่ยนแปลงเพียงเล็กน้อย \(cos\theta\sim1\) และ \(sin\theta=\theta\) จะได้
(21)
(22)
กำหนดตัวแปรสถานะ (state variable)
(23)
จัดรูป (21) และ (22)
(24)
(25)
(26)
(27)
สมการเสตทจะอยู่ในรูป
(28)
(29)
นำสมการ (28) และ (29) มาเขียนเป้นสคริปบน Matlab ดังนี้
clear;
clc;
close all;
% plant params (physical values)
g = 9.81; % gravity [m/s^2]
cM = 5; % Cart mass [kg]
pL = 0.25; % pendulum length [m]
pm = 1; % pendulum mass [kg]
% model params -- slightly off to account for non-perfect characterization
cM_model = cM+0.2;
pL_model = pL-0.1;
pm_model = pm-0.15;
A = [0 0 1 0
0 0 0 1
0 (-pm_model*g)/cM_model 0 0
0 ((cM_model+pm_model)*g)/(cM_model*pL_model) 0 0];
B = [0 0;
0 0;
1/cM_model -1/cM_model;
-1/(cM_model*pL_model) (cM_model+pm_model)/(cM_model*pm_model*pL_model)];
C = [1 0 0 0
0 1 0 0];
D = 0;
sys_cl = ss(A,B,C,D);
fprintf('\nControllability:\n\trank(ctrb(sys))=%d\n',rank(ctrb(sys_cl)));
จะพบว่าระบบมีคุณสมบัตรควบคุมได้ (Controlable) เราจึงสามารถนำสมการเสตทดังกล่าวไปใช้ในการออกแบบระบบควบคุมต่อไป
ดาวน์โหลด Matlab file ได้ที่นี่