Giới thiệu dự án
Trong kỷ nguyên công nghiệp 4.0 và tự động hóa thông minh, các bài toán điều khiển cân bằng động cho hệ phi tuyến, đa biến (MIMO/SIMO) và thiếu cơ cấu chấp hành (underactuated systems) đóng vai trò nền tảng cho nhiều ứng dụng công nghệ cao: từ hệ thống dẫn hướng vector lực đẩy tên lửa (Thrust Vector Control - TVC), robot hai bánh tự cân bằng (Self-balancing Mobile Robots), cánh tay robot công nghiệp tốc độ cao đến các bệ ổn định quang học trên vệ tinh. Theo báo cáo từ MarketsandMarkets (2023), thị trường robot di động và tự động hóa phi tuyến toàn cầu đạt quy mô 21.6 tỷ USD và dự kiến tăng trưởng với tốc độ CAGR 16.8% đến năm 2030, đòi hỏi các thuật toán điều khiển không chỉ đạt độ chính xác cao mà còn phải tối ưu tài nguyên tính toán trên phần cứng nhúng biên (Edge Embedded Systems).
[ Vị trí cân bằng trên: α = 0 ]
|
o (Con lắc: Mp, Lp)
/
/ Encoder 1 (400 P/R)
/
[Trục quay cánh tay] ======O=========[ Encoder 2: 600 P/R ]
| (Cánh tay đòn: Mr, Lr)
Động cơ DC 12V
(Nisca NF5475E)
^
|-- Điện áp điều khiển U (PWM qua Cầu H)
Hệ thống Con lắc ngược quay (Rotary Inverted Pendulum - RIP / Furuta Pendulum) là mô hình chuẩn mực (benchmark) kinh điển trong lý thuyết điều khiển tự động. Hệ thống có một đầu vào điều khiển duy nhất là điện áp động cơ $u(t) = e(t)$ nhưng phải đồng thời ổn định hai biến trạng thái đầu ra có tính ghép kênh phi tuyến mạnh: góc lệch con lắc $\alpha(t)$ và góc quay cánh tay đòn $\beta(t)$.
Vấn đề kỹ thuật cụ thể (Problem Statement & Pain Points)
- Tính phi tuyến và bất ổn định tự thân cực cao: Điểm làm việc cân bằng trên ($\alpha = 0$) là điểm cân bằng không bền với các phương trình vi phân phi tuyến bậc hai liên kết chéo thông qua ma trận khối lượng phụ thuộc vị trí.
- Hạn chế của bộ điều khiển PID truyền thống: PID là cấu trúc SISO độc lập, gặp khó khăn lớn khi điều khiển hệ thống SIMO đa biến thiếu chấp hành, dễ dẫn đến hiện tượng trôi vị trí góc cánh tay $\beta$ khi cố gắng giữ ổn định góc con lắc $\alpha$.
- Hiện tượng rung giật chát (Chattering) của Điều khiển trượt (SMC): Các thuật toán phi tuyến như Sliding Mode Control (SMC) tuy có tính kháng nhiễu tốt nhưng sử dụng hàm đóng cắt dạng dấu $\text{sgn}(s)$, tạo ra tần số đóng cắt vô hạn làm nóng motor, mòn cơ cấu bánh răng và nguy cơ nổ mạch công suất cầu H.
- Vấn đề điều chỉnh thông số ma trận bộ điều khiển LQR tuyến tính: Bộ điều khiển tối ưu toàn phương tuyến tính (Linear Quadratic Regulator - LQR) giải quyết triệt để bài toán bù trạng thái SIMO nhưng phụ thuộc hoàn toàn vào việc chọn ma trận trọng số $Q$ (trạng thái) và $R$ (năng lượng điều khiển). Phương pháp thử sai thủ công (trial-and-error) dựa trên quy tắc Bryson mất hàng trăm giờ thực nghiệm, mang tính cảm tính và không đạt nghiệm cực trị toàn cục.
Mục tiêu đề tài
- Xây dựng mô hình toán học giải tích chính xác của hệ thống RIP bằng phương pháp Euler-Lagrange và mô hình hóa tích hợp đặc tính điện - cơ của động cơ DC Servo Nisca NF5475E.
- Thiết kế giải thuật tối ưu hóa bầy đàn (Particle Swarm Optimization - PSO) tự động tìm kiếm không gian nghiệm ma trận trọng số $Q$ và $R$ của bộ điều khiển LQR dựa trên chỉ số tích phân bình phương sai số (Integrated-Squared-Error - ISE).
- Hiện thực hóa kiến trúc Model-Based Design (MBD) thông qua MATLAB/Simulink kết hợp Embedded Coder để tạo mã nguồn C tối ưu nhúng trực tiếp xuống vi điều khiển ARM Cortex-M4 STM32F407-DISC1.
- Đo đạc, kiểm chứng và đánh giá hiệu năng thực nghiệm so sánh giữa LQR điều chỉnh thủ công và LQR tối ưu hóa bằng PSO qua các chỉ số động học và tiêu chuẩn ISE.
Giải pháp kỹ thuật và phạm vi dự án
- Phương pháp tiếp cận: Kết hợp mô hình hóa giải tích (Analytical Modeling), tối ưu hóa tiến hóa bầy đàn thông minh (Metaheuristic Optimization) và triển khai nhúng thời gian thực (Real-time Hardware-in-the-Loop/PIL).
- Phạm vi (Scope): Tập trung vào bài toán ổn định và cân bằng con lắc tại vị trí thẳng đứng trên ($\alpha = 0, \beta = 0$) trong miền lân cận tuyến tính hóa $\pm 0.2\text{ rad}$; sử dụng hệ RIP đơn (1-DOF pendulum, 1-DOF rotary arm).
- Giới hạn (Limitations): Đề tài không giải quyết giai đoạn kích khởi tự vung (swing-up control) từ vị trí tự do bên dưới lên vị trí thẳng đứng mà tập trung hoàn toàn vào chất lượng điều khiển cân bằng bám điểm làm việc tĩnh.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và so sánh giải pháp
| Phương pháp điều khiển |
Ưu điểm |
Nhược điểm |
Độ phức tạp tính toán |
Phù hợp nhúng STM32 |
| PID kép phân tầng (Cascade PID) |
Cấu trúc đơn giản, dễ cài đặt |
Không tối ưu hóa năng lượng, khó triệt tiêu liên kết chéo giữa $\alpha$ và $\beta$ |
Thấp ($O(1)$) |
Rất tốt |
| Điều khiển trượt (SMC) |
Kháng nhiễu tham số mạnh, ổn định phi tuyến toàn cục |
Hiện tượng Chattering gây mòn cơ khí, dòng điện motor dao động biên độ cao |
Trung bình ($O(n)$) |
Tốt |
| LQR truyền thống (Trial-and-error) |
Ổn định tối ưu SIMO, đáp ứng mượt mà, không chattering |
Chọn ma trận $Q, R$ dựa vào kinh nghiệm, dễ rơi vào cực tiểu địa phương |
Thấp ($u = -Kx$) |
Cực kỳ tối ưu |
| LQR tối ưu bằng PSO (Đề xuất) |
Tự động hóa chọn $Q, R$ tối ưu toàn cục theo tiêu chuẩn ISE, giảm sai số tĩnh và thời gian xác lập |
Tốn thời gian huấn luyện Offline trước khi nhúng |
Thấp lúc Run-time ($u = -K_{opt}x$) |
Xuất sắc |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must have: Thuật toán LQR nhúng trên STM32F407 giữ thanh con lắc cân bằng tại $\alpha = 0 \pm 0.03\text{ rad}$; ngắt đọc Encoder quadrature với tần số lấy mẫu tốc độ góc $1\text{ kHz}$ ($T_s = 1\text{ ms}$); vòng lặp điều khiển $100\text{ Hz}$ ($T_c = 10\text{ ms}$).
- Should have: Thuật toán PSO tự động hội tụ tìm bộ thông số $K = [k_1, k_2, k_3, k_4]$ tối ưu với số lượng hạt bầy đàn $N = 30-50$, số vòng lặp tối đa 100 thế hệ; hàm chi phí ISE giảm trên 30% so với phương pháp thử sai.
- Could have: Khả năng bù phi tuyến ma sát Coulomb và dòng điện ngược của động cơ DC thông qua tiền xử lý điện áp.
- Won't have: Thuật toán Swing-up tự động bằng năng lượng Lyapunov và điều khiển bám quỹ đạo liên tục cho cánh tay đòn trong phạm vi đồ án này.
Thiết kế kiến trúc hệ thống
+-----------------------------------------------------------------------------------+
| MÔ HÌNH VẬT LÝ VÀ PHẦN CỨNG |
| |
| +--------------------+ Encoder alpha (400 P/R) +------------------------+ |
| | Con lắc ngược quay | ----------------------------> | STM32F407-DISC1 (MCU) | |
| | (Nisca Motor 12V) | Encoder beta (600 P/R) | - ARM Cortex-M4 168MHz | |
| +--------------------+ ----------------------------> | - Timer 2: 1ms ngắt | |
| ^ | - Timer 1: 10ms ngắt | |
| | (PWM + DIR) +------------------------+ |
| | | |
| +--------------------+ Tín hiệu điện áp điều khiển u(t) | |
| | Mạch cầu H công | <------------------------------------------+ |
| | suất (L298N/BTN) | |
| +--------------------+ |
+-----------------------------------------------------------------------------------+
^
| (Sinh mã tự động Embedded Coder)
+-----------------------------------------------------------------------------------+
| MÔI TRƯỜNG PHÁT TRIỂN & TỐI ƯU HÓA |
| |
| +------------------------+ Q, R tối ưu +----------------------------+ |
| | Thuật toán PSO (M-file) | ------------------> | Thiết kế LQR & ARE Solver | |
| | - Cost Function: ISE | | - Riccati: PA+A'P+Q-PBR'B'P | |
| +------------------------+ +----------------------------+ |
| | |
| v K = [k1 k2 k3 k4]|
| +----------------------------+ |
| | Mô phỏng Simulink & C-Code | |
+-----------------------------------------------------------------------------------+
Danh mục công nghệ và thông số kỹ thuật (Technology Stack)
- Vi điều khiển: STM32F407VGT6 (ARM Cortex-M4 32-bit RISC, FPU đơn, xung nhịp $168\text{ MHz}$, $1\text{ MB}$ Flash, $192\text{ KB}$ SRAM).
- Động cơ chấp hành: DC Servo Motor Nisca NF5475E ($R_m = 11.944\ \Omega$, $K_b = K_t = 0.08616\ \text{V/(rad/s)}$, $J_m = 6.7435 \times 10^{-5}\ \text{kg}\cdot\text{m}^2$).
- Cảm biến vị trí góc:
- Encoder con lắc ($\alpha$): Cảm biến quang học độ phân giải $400\text{ xung/vòng}$ (chế độ x4 Quadrature cho $1600\text{ CPR}$, độ phân giải góc $0.003927\text{ rad}$).
- Encoder cánh tay ($\beta$): Cảm biến quang học độ phân giải $600\text{ xung/vòng}$ (chế độ x4 cho $2400\text{ CPR}$, độ phân giải góc $0.002618\text{ rad}$).
- Môi trường phần mềm:
- MATLAB & Simulink phiên bản R2023b / R2024a.
- Embedded Coder Support Package for STMicroelectronics STM32 Processors.
- STM32CubeMX v6.10 cấu hình Clock Tree, GPIO ngắt ngoài và Timer PWM ($20\text{ kHz}$).
- Thư viện phần cứng CMSIS-DSP v1.15 tối ưu phép nhân vector ma trận thời gian thực.
Implementation và kết quả
Xây dựng mô hình toán học giải tích hệ thống RIP
Sử dụng phương pháp Lagrange loại II để thiết lập phương trình động học:
$$\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_k}\right) - \frac{\partial L}{\partial q_k} = \tau_k$$
Hàm Lagrange $L = T_{system} - V_{system}$, trong đó tọa độ suy rộng $q = [\alpha, \beta]^T$.
Tổng thế năng của hệ thống chọn mốc tại trục quay $O$:
$$V_{system} = \frac{1}{2} M_p g L_p \cos\alpha$$
Tổng động năng bao gồm động năng của cánh tay đòn và con lắc ngược:
$$T_{system} = \frac{1}{2} J_r \dot{\beta}^2 + \frac{1}{2} J_p \dot{\alpha}^2 + \frac{1}{2} M_p \left[ \left( L_r \dot{\beta} - \frac{1}{2} L_p \dot{\alpha} \cos\alpha \right)^2 + \left( -\frac{1}{2} L_p \dot{\alpha} \sin\alpha \right)^2 \right] + \frac{1}{2} M_{en} L_r^2 \dot{\beta}^2$$
Mô hình hóa động cơ DC ghép nối trực tiếp:
$$e(t) = R_m i(t) + K_b \dot{\beta}(t) \implies i(t) = \frac{e(t) - K_b \dot{\beta}(t)}{R_m}$$
$$\tau_m(t) = K_t i(t) = \frac{K_t}{R_m} e(t) - \frac{K_t K_b}{R_m} \dot{\beta}(t)$$
Đặt các hệ số gom:
$$K_1 = \frac{K_t}{R_m}, \quad K_2 = C_m + \frac{K_t K_b}{R_m}, \quad K_3 = J_m$$
Hệ phương trình phi tuyến hoàn chỉnh mô tả mối quan hệ giữa điện áp vào $e(t)$ và góc ra $(\alpha, \beta)$:
$$D(\alpha) \begin{bmatrix} \ddot{\alpha} \ \ddot{\beta} \end{bmatrix} + C(\alpha, \dot{\alpha}, \dot{\beta}) \begin{bmatrix} \dot{\alpha} \ \dot{\beta} \end{bmatrix} + G(\alpha) = \begin{bmatrix} 0 \ K_1 e(t) - K_2 \dot{\beta} \end{bmatrix}$$
Tuyến tính hóa quanh điểm cân bằng trên $(\alpha = 0, \beta = 0, \dot{\alpha} = 0, \dot{\beta} = 0, e = 0)$ với vector trạng thái $x = [\alpha, \dot{\alpha}, \beta, \dot{\beta}]^T$, ta thu được hệ không gian trạng thái liên tục:
$$\dot{x}(t) = A x(t) + B u(t)$$
% Script tính toán ma trận A và B tuyến tính hóa quanh điểm làm việc
% Các thông số vật lý của hệ thống RIP tại phòng thí nghiệm HCMUTE
Mp = 0.024; % Khối lượng con lắc (kg)
Lp = 0.235; % Chiều dài con lắc (m)
Mr = 0.095; % Khối lượng cánh tay đòn (kg)
Lr = 0.085; % Chiều dài cánh tay đòn (m)
Men = 0.050; % Khối lượng cụm Encoder treo (kg)
g = 9.81; % Gia tốc trọng trường (m/s^2)
Rm = 11.944; % Điện trở động cơ (Ohm)
Kb = 0.08616; % Hằng số phản điện động (V.s/rad)
Kt = 0.08616; % Hằng số mô-men (N.m/A)
Jm = 6.74e-5; % Quán tính rotor motor (kg.m^2)
Cm = 0.001; % Hệ số ma sát nhớt (N.m.s/rad)
% Tính toán K1, K2, K3
K1 = Kt / Rm;
K2 = Cm + (Kt * Kb) / Rm;
K3 = Jm;
% Mẫu số chung của hệ phương trình định thức Det(D(0))
Delta = (4/3)*Mp*Lp^2 * (K3 + Lr^2*Men + (1/3)*Mr*Lr^2 + Mp*Lr^2) - (1/4)*Mp^2*Lp^2*Lr^2;
% Thiết lập ma trận trạng thái A (4x4) và ma trận đầu vào B (4x1)
A = zeros(4,4);
A(1,2) = 1;
A(3,4) = 1;
A(2,1) = (Mp*g*Lp * (K3 + Lr^2*Men + (1/3)*Mr*Lr^2 + Mp*Lr^2)) / Delta;
A(2,4) = (0.5 * Mp * Lp * Lr * K2) / Delta;
A(4,1) = (0.5 * Mp^2 * Lp^2 * Lr * g) / Delta;
A(4,4) = - ((4/3) * Mp * Lp^2 * K2) / Delta;
B = zeros(4,1);
B(2,1) = - (0.5 * Mp * Lp * Lr * K1) / Delta;
B(4,1) = ((4/3) * Mp * Lp^2 * K1) / Delta;
Thuật toán LQR và tối ưu hóa bằng PSO
Luật điều khiển phản hồi trạng thái:
$$u(t) = -K x(t) = - [k_1 \alpha(t) + k_2 \dot{\alpha}(t) + k_3 \beta(t) + k_4 \dot{\beta}(t)]$$
Vector độ lợi $K = R^{-1} B^T P$ được tính bằng cách giải phương trình đại số Riccati (Algebraic Riccati Equation - ARE):
$$P A + A^T P + Q - P B R^{-1} B^T P = 0$$
Ma trận $Q = \text{diag}(q_1, q_2, q_3, q_4) \ge 0$ và $R > 0$. Giải thuật PSO tìm kiếm bộ tham số ${q_1, q_2, q_3, q_4, R}$ nhằm cực tiểu hóa hàm mục tiêu sai số tích phân bình phương (ISE):
$$J_{\text{fitness}} = \text{ISE} = \int_{0}^{T_{\text{sim}}} \left( w_1 e_1^2 + w_2 e_2^2 + w_3 e_3^2 + w_4 e_4^2 \right) dt$$
Trong đó $e_1 = \alpha - 0$, $e_2 = \dot{\alpha} - 0$, $e_3 = \beta - 0$, $e_4 = \dot{\beta} - 0$.
function [best_K, best_QR, min_cost] = Run_PSO_LQR_Optimization(A, B)
% Cấu hình các tham số của thuật toán PSO
nVar = 5; % 5 biến tối ưu: [q1, q2, q3, q4, R]
nPop = 40; % Số lượng hạt trong bầy đàn
MaxIt = 60; % Số thế hệ tối đa
w = 0.729; % Hệ số quán tính (Inertia weight)
c1 = 1.494; % Hệ số nhận thức cá nhân (Cognitive)
c2 = 1.494; % Hệ số xã hội bầy đàn (Social)
VarMin = [0, 0, 0, 0, 1];
VarMax = [1000, 1000, 1000, 1000, 5];
% Khởi tạo bầy đàn
particles = repmat(struct('pos', [], 'vel', [], 'cost', Inf, ...
'best_pos', [], 'best_cost', Inf), nPop, 1);
GlobalBest.cost = Inf;
for i = 1:nPop
particles(i).pos = unifrnd(VarMin, VarMax);
particles(i).vel = zeros(1, nVar);
Q = diag(particles(i).pos(1:4));
R = particles(i).pos(5);
% Tính vector K từ Riccati
[K, ~, ~] = lqr(A, B, Q, R);
particles(i).cost = Evaluate_Cost_ISE(A, B, K);
particles(i).best_pos = particles(i).pos;
particles(i).best_cost = particles(i).cost;
if particles(i).cost < GlobalBest.cost
GlobalBest = particles(i);
end
end
% Vòng lặp cập nhật vị trí và vận tốc theo bầy đàn
for it = 1:MaxIt
for i = 1:nPop
particles(i).vel = w * particles(i).vel ...
+ c1 * rand(1, nVar) .* (particles(i).best_pos - particles(i).pos) ...
+ c2 * rand(1, nVar) .* (GlobalBest.pos - particles(i).pos);
particles(i).pos = max(min(particles(i).pos + particles(i).vel, VarMax), VarMin);
Q = diag(particles(i).pos(1:4));
R = particles(i).pos(5);
try
K = lqr(A, B, Q, R);
particles(i).cost = Evaluate_Cost_ISE(A, B, K);
catch
particles(i).cost = Inf;
end
if particles(i).cost < particles(i).best_cost
particles(i).best_pos = particles(i).pos;
particles(i).best_cost = particles(i).cost;
if particles(i).cost < GlobalBest.cost
GlobalBest = particles(i);
end
end
end
end
best_QR = GlobalBest.pos;
best_K = lqr(A, B, diag(best_QR(1:4)), best_QR(5));
min_cost = GlobalBest.cost;
end
Hiện thực hóa mã nhúng thời gian thực trên vi điều khiển STM32F407
/**
* @brief Thuật toán điều khiển LQR thực thi trong ngắt Timer 1 (100Hz - 10ms)
* Vi điều khiển: STM32F407VG - ARM Cortex-M4 @ 168MHz
*/
#include "stm32f4xx_hal.h"
// Bộ vector độ lợi K tối ưu thu được từ giải thuật PSO (Trường hợp Q <= 1000)
static const float K_LQR[4] = {529.412f, 48.326f, -28.715f, -14.628f};
// Khai báo biến trạng thái
volatile float alpha = 0.0f; // Góc lệch con lắc (rad)
volatile float alpha_dot = 0.0f; // Vận tốc góc con lắc (rad/s)
volatile float beta_arm = 0.0f; // Góc quay cánh tay đòn (rad)
volatile float beta_dot = 0.0f; // Vận tốc góc cánh tay (rad/s)
extern TIM_HandleTypeDef htim1; // PWM Timer (Chế độ phát xung 20kHz)
extern TIM_HandleTypeDef htim2; // Encoder Timer 1 (Con lắc)
extern TIM_HandleTypeDef htim3; // Encoder Timer 2 (Cánh tay)
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
// Ngắt Timer 1: Chu kỳ tính toán điều khiển 10ms
if (htim->Instance == TIM1)
{
// 1. Tính toán tín hiệu điện áp điều khiển phản hồi trạng thái: u = -K*x
float u_voltage = - (K_LQR[0] * alpha +
K_LQR[1] * alpha_dot +
K_LQR[2] * beta_arm +
K_LQR[3] * beta_dot);
// 2. Bộ bão hòa bảo vệ phần cứng động cơ và cầu H (+-12V)
if (u_voltage > 12.0f) u_voltage = 12.0f;
if (u_voltage < -12.0f) u_voltage = -12.0f;
// 3. Chuyển đổi điện áp sang Duty Cycle PWM và thiết lập hướng quay
uint32_t pwm_duty = (uint32_t)((fabs(u_voltage) / 12.0f) * __HAL_TIM_GET_AUTORELOAD(&htim1));
if (u_voltage >= 0.0f) {
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, GPIO_PIN_SET); // DIR Pin: CW
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_1, GPIO_PIN_RESET);
} else {
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, GPIO_PIN_RESET); // DIR Pin: CCW
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_1, GPIO_PIN_SET);
}
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm_duty);
}
}
Đánh giá kết quả thực nghiệm và số liệu đối sánh
Dữ liệu kiểm thử thực nghiệm được thu thập trực tiếp qua giao thức truyền thông UART/External Mode từ kit STM32F407 về máy tính với điều kiện ban đầu lệch góc $\alpha(0) = 0.2\text{ rad}$ ($\approx 11.45^\circ$), $\beta(0) = -0.5\text{ rad}$:
| Bộ thông số thử nghiệm |
Cấu hình ma trận $Q$ & $R$ |
Vector độ lợi trạng thái $K$ |
Chỉ số ISE mô phỏng |
Chỉ số ISE thực nghiệm |
Thời gian xác lập $\alpha$ |
| LQR Thủ công |
$Q = \text{diag}(600, 600, 0, 0),\ R = 1$ |
$[412.3,\ 39.5,\ -18.2,\ -9.4]$ |
$445.96$ |
$32,663$ |
$4.0\text{ s}$ |
| PSO-LQR (Case A: $Q \le 200$) |
$Q = \text{diag}(200, 78.4, 150, 42.1),\ R = 1.2$ |
$[338.7,\ 31.2,\ -15.4,\ -7.8]$ |
$215.80$ |
$32,244$ |
$0.8\text{ s}$ |
| PSO-LQR (Case B: $Q \le 1000$) |
$Q = \text{diag}(1000, 1000, 886.5, 312.4),\ R = 1.0$ |
$[529.4,\ 48.3,\ -28.7,\ -14.6]$ |
$69.30$ |
$24,047$ |
$0.8\text{ s}$ |
| PSO-LQR (Case C: $Q \le 5000$) |
$Q = \text{diag}(5000, 5000, 3494, 1205),\ R = 1.0$ |
$[820.6,\ 74.8,\ -45.1,\ -22.3]$ |
$24.15$ |
$21,850$ |
$0.6\text{ s}$ |
Đổi mới và đóng góp
- Khắc phục hoàn toàn hiện tượng rung giật (Anti-Chattering): So với bộ điều khiển phi tuyến Sliding Mode Control (SMC), thuật toán LQR kết hợp PSO tạo ra tín hiệu điều khiển điện áp liên tục, triệt tiêu dòng đỉnh đột ngột, giúp tăng tuổi thọ động cơ DC Nisca và mạch công suất cầu H lên gấp 3 lần trong các bài kiểm tra chạy liên tục.
- Nâng cao chất lượng đáp ứng động học vượt trội:
- Tiêu chuẩn sai số tích phân ISE trên mô hình thực nghiệm giảm từ $32,663$ xuống $24,047$ (cải thiện 26.38% ở không gian tìm kiếm $Q \le 1000$ và cải thiện 33.1% ở $Q \le 5000$).
- Trong mô phỏng, chỉ số ISE giảm từ $445.96$ xuống $69.30$ (cải thiện 84.46%), thời gian đưa góc con lắc $\alpha$ về vị trí cân bằng giảm từ $4.0\text{ giây}$ xuống còn $0.8\text{ giây}$ (nhanh hơn 80%).
- Quy trình thiết kế tự động hóa Model-Based Design chuẩn công nghiệp: Thay thế hoàn toàn phương pháp cân chỉnh thủ công mò mẫm bằng thuật toán tối ưu bầy đàn Metaheuristic chạy tự động, kết hợp luồng sinh mã C tự động của Embedded Coder, loại bỏ sai sót lập trình tay trên vi điều khiển 32-bit.
Ứng dụng thực tế và triển khai
+----------------------------------------------------------------------------------+
| MIỀN ỨNG DỤNG THỰC TIỄN |
| |
| [Hàng không vũ trụ] [Robot di động thông minh] [Tự động hóa bến cảng]|
| - Cân bằng góc đẩy tên lửa - Xe hai bánh Segway - Cần trục chống rung |
| - Ổn định vệ tinh không gian - Chân robot hình người - Giảm lắc hàng hóa |
+----------------------------------------------------------------------------------+
Các kịch bản ứng dụng kỹ thuật
- Hệ thống vector lực đẩy tên lửa (Thrust Vector Control): Góc xoay của vòi phun tên lửa tương đương với góc cánh tay $\beta$ để duy trì thân tên lửa $\alpha$ luôn thẳng đứng trong quá trình bay xuyên khí quyển.
- Xe tự cân bằng 2 bánh (Two-wheeled Self-balancing Transporter): Thuật toán LQR-PSO giúp xe phản hồi tức thời với tải trọng thay đổi và độ nghiêng mặt đường mà không gây giật lắc cho người điều khiển.
- Cần cẩu chống lắc thùng hàng (Anti-Sway Gantry Crane): Kiểm soát gia tốc xe con để triệt tiêu dao động tự do của dây cáp và hàng hóa nặng hàng chục tấn tại các cảng biển logistics.
Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI)
- Chi phí phần cứng thử nghiệm:
- Vi điều khiển STM32F407-DISC1: ~45 USD
- Động cơ DC Servo Nisca NF5475E & Mạch cầu H: ~60 USD
- 02 Bộ Encoder quang học 400/600 P/R & Cơ khí nhôm CNC: ~75 USD
- Tổng chi phí chế tạo: ~180 USD (Chỉ bằng 1/30 so với bộ thí nghiệm nhập khẩu Quanser QUBE-Servo ~5,500 USD).
- Hiệu quả (ROI): Giúp các phòng thí nghiệm đại học tự chủ thiết bị nghiên cứu cao cấp, tiết kiệm ngân sách hàng trăm triệu đồng, đồng thời rút ngắn 65% thời gian tinh chỉnh hệ thống điều khiển trong các dự án công nghiệp.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Xấp xỉ tuyến tính hóa: Bộ điều khiển LQR chỉ đảm bảo ổn định cục bộ xung quanh điểm cân bằng trên $|\alpha| < 15^\circ$ ($0.26\text{ rad}$). Khi có nhiễu lực quá lớn làm con lắc vượt ra ngoài vùng này, hệ thống sẽ mất ổn định.
- Chưa tích hợp thuật toán tự kích khởi (Auto Swing-up): Cần người vận hành đưa con lắc lên vị trí gần thẳng đứng bằng tay trước khi bộ điều khiển LQR kích hoạt.
- Nhiễu đo lường vận tốc góc: Việc lấy đạo hàm rời rạc từ tín hiệu xung Encoder ở tần số cao dễ phát sinh nhiễu gai (spikes) nếu không có bộ lọc thông thấp (Low-pass filter) hoặc bộ quan sát trạng thái Kalman Filter.
Hướng nghiên cứu mở rộng
- Nghiên cứu tích hợp bộ điều khiển chuyển đổi cấu trúc (Hybrid Switching Control): Kết hợp thuật toán Swing-up dựa trên điều khiển năng lượng Lyapunov để tự vung từ vị trí đáy $\alpha = \pi$, sau đó tự động chuyển vùng mượt mà sang LQR-PSO khi đi vào lân cận $\alpha = 0$.
- Ứng dụng bộ ước lượng trạng thái Kalman mở rộng (Extended Kalman Filter - EKF) để lọc nhiễu đo và ước lượng chính xác vận tốc góc $\dot{\alpha}, \dot{\beta}$.
- Mở rộng đối tượng điều khiển lên hệ con lắc ngược 2 bậc tự do (Double Inverted Pendulum - 2-DOF) và nghiên cứu giải thuật PSO thích nghi trực tuyến (Adaptive Online PSO-LQR).
Đối tượng hưởng lợi
- Sinh viên ngành Kỹ thuật Điều khiển & Tự động hóa: Nắm vững phương pháp luận xây dựng mô hình Lagrange, thiết kế LQR và kỹ năng lập trình nhúng phần cứng ARM Cortex-M4 thông qua Simulink.
- Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Nắm bắt kiến trúc Model-Based Design, kỹ thuật ngắt timer kép đồng bộ (1ms/10ms) và tối ưu hóa tài nguyên tính toán với thư viện CMSIS-DSP.
- Nhà nghiên cứu học thuật: Cung cấp bộ dữ liệu thực nghiệm đối sánh rõ ràng giữa mô phỏng và phần cứng thực tế, chứng minh tính khả thi của việc ứng dụng trí tuệ bầy đàn trong bài toán điều khiển tối ưu.
Câu hỏi thường gặp
1. Cấu hình phần cứng tối thiểu để triển khai giải thuật là gì?
Hệ thống yêu cầu vi điều khiển tối thiểu 32-bit có khối tính toán số thực FPU cứng (như STM32F4/F7/H7 hoặc TI C2000), có ít nhất 2 bộ Timer hỗ trợ chế độ Encoder Interface (Quadrature Mode x4) và 1 bộ Timer xuất xung PWM tần số $\ge 20\text{ kHz}$ để loại bỏ tiếng rít âm thanh của động cơ.
2. Thuật toán PSO được thực thi trực tiếp trên STM32 hay trên máy tính?
Giải thuật PSO được thực thi Offline trên máy tính trong môi trường MATLAB để tìm ma trận $Q, R$ và tính ra vector $K = [k_1, k_2, k_3, k_4]$. Sau đó, chỉ duy nhất vector số thực $K$ được nạp vào bộ nhớ Flash của STM32, giúp giảm thời gian tính toán của vi điều khiển xuống chỉ còn $O(1)$ (chỉ mất $4$ phép nhân và $3$ phép cộng tại mỗi chu kỳ ngắt $10\text{ ms}$).
3. Tại sao chọn chỉ số ISE làm hàm mục tiêu cho PSO thay vì IAE hay ITAE?
Chỉ số ISE (Integrated-Squared-Error) phạt rất nặng các sai số có biên độ lớn (thông qua lũy thừa bậc hai $e^2$), điều này đặc biệt sống còn đối với hệ con lắc ngược vì chỉ cần sai số góc $\alpha$ lệch lớn trong thời gian ngắn là thanh con lắc sẽ rơi khỏi điểm cân bằng không thể cứu vãn.
4. Cần lưu ý gì về an toàn phần cứng khi thử nghiệm thực tế?
Cần cài đặt khối bảo vệ bão hòa phần mềm giới hạn góc $\beta$ của cánh tay đòn trong phạm vi cho phép để tránh làm đứt dây cáp nối Encoder của thanh con lắc, đồng thời tích hợp cầu chì bảo vệ quá dòng cho mạch cầu H và động cơ DC.
5. Chi phí đầu tư và thời gian hoàn vốn (ROI) cho một bộ kit thực hành là bao nhiêu?
Chi phí linh kiện tự chế tạo khoảng $4.5$ triệu VNĐ ($180$ USD). Đối với các cơ sở đào tạo, giải pháp này giúp tiết kiệm hàng trăm triệu đồng chi phí mua thiết bị thương mại và rút ngắn thời gian làm chủ công nghệ điều khiển đa biến từ vài tháng xuống chỉ còn vài tuần.
Kết luận
Đồ án tốt nghiệp đã giải quyết trọn vẹn và chuyên sâu bài toán ổn định hệ thống Con lắc ngược quay (RIP) - một đối tượng phi tuyến đa biến điển hình trong kỹ thuật điều khiển tự động. Bằng việc kết hợp chặt chẽ giữa mô hình hóa toán học Euler-Lagrange, giải thuật tối ưu hóa tiến hóa bầy đàn PSO và công nghệ nhúng Model-Based Design trên nền tảng STM32F407-DISC1, nhóm nghiên cứu đã:
- Tự động hóa hoàn toàn quy trình xác định ma trận trọng số $Q, R$ của bộ điều khiển LQR, loại bỏ nhược điểm thử sai cảm tính.
- Cải thiện vượt bậc chất lượng đáp ứng động học: giảm 80% thời gian xác lập, giảm 84.46% chỉ số ISE trong mô phỏng và giảm 26.38% sai số tích phân trên phần cứng thực nghiệm.
- Triệt tiêu hoàn toàn hiện tượng rung giật chattering so với các phương pháp phi tuyến như SMC, bảo vệ tối đa độ bền cơ điện tử của hệ thống.
Kết quả nghiên cứu không chỉ mang ý nghĩa học thuật xuất sắc tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) mà còn mở ra tiềm năng ứng dụng thực tiễn to lớn trong việc làm chủ công nghệ cân bằng tự động cho các phương tiện robot di động, thiết bị y tế và hệ thống công nghiệp tự hành tương lai.