Giới thiệu dự án

Trong kỷ nguyên tự động hóa công nghiệp 4.0 và chuyển đổi số y tế, thị trường robot cộng tác (Cobots) và thiết bị robot hỗ trợ phục hồi chức năng (Assistive Exoskeletons) đang ghi nhận mức tăng trưởng kép hàng năm (CAGR) đạt hơn 31.5% trên toàn cầu. Khác với robot công nghiệp truyền thống vốn hoạt động cách ly trong lồng bảo vệ với cấu trúc cứng vững tuyệt đối, robot thế hệ mới đòi hỏi khả năng tương tác an toàn với con người (Physical Human-Robot Interaction - pHRI) và tính năng thích ứng mềm dẻo (Compliance/Impedance).

Tuy nhiên, các bộ điều khiển vị trí cổ điển như PID (Proportional-Integral-Derivative) thuần túy bộc lộ nhiều điểm hạn chế nghiêm trọng khi điều khiển cánh tay robot chịu ảnh hưởng của trường trọng lực phi tuyến:

  • Tải trọng tĩnh do trọng lực: Động cơ tại các khớp luôn phải chịu mô-men tĩnh $G(q)$ để giữ cánh tay đứng yên tại các góc nâng, dẫn đến hiện tượng quá nhiệt, sụt áp và tiêu hao năng lượng liên tục.
  • Hiện tượng vọt lố và dao động: Thành phần tích phân ($I$) trong bộ điều khiển PID dễ bị bão hòa tích phân (Integrator Windup) khi robot chuyển động thẳng đứng, gây mất ổn định quỹ đạo.
  • Độ cứng cơ học cao (Stiffness): Robot phản ứng quá mức với ngoại lực, tiềm ẩn nguy cơ chấn thương cao cho người sử dụng trong các ứng dụng robot y tế và thiết bị trợ lực người già.

Đồ án tốt nghiệp "Robot Linh Hoạt Trong Kỹ Thuật Tự Động Hóa" (Flexible Robot) được thực hiện bởi sinh viên Đặng Trần Minh Khôi (MSSV: 18151014, Lớp 18151CLA1) dưới sự hướng dẫn của TS. Đặng Xuân Ba tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), chuyên ngành Công nghệ Kỹ thuật Điều khiển và Tự động hóa. Đề tài tập trung giải quyết bài toán cốt lõi: Thiết kế, mô phỏng và hiện thực hóa thuật toán điều khiển mềm dẻo PD kết hợp bù trọng lực (PD with Gravity Compensation) và điều khiển trở kháng (Impedance/Compliance Control) trên mô hình robot cánh tay 3 bậc tự do (3-DOF Robot Arm).

                      +-----------------------------+
                      |   Quỹ đạo mong muốn q_d     |
                      +--------------+--------------+
                                     |
                                     v
+------------------+         +-------+-------+
|  Vị trí góc q    |-------->|  Sai số e =   |
|  (Encoder hồi   |         |    q_d - q    |
|   tiếp thực tế)  |----+    +-------+-------+
+------------------+    |            |
                        |            v
                        |     +--------------+
                        |     |  Khâu vi tỉ  |
                        |     |  lệ: Kp * e  |
                        |     +------+-------+
                        |            |
                        |            v      +------------------------+
                        |          ( + )<---| Bù trọng lực G(q)      |
                        |            |      | (Mô hình giải tích)    |
                        |            v      +------------------------+
                        |     +--------------+
                        +---->| Khâu giảm    |
                              | chấn: -Kd * q̇|
                              +------+-------+
                                     |
                                     v
                        +----------------------------+
                        | Mô-men điều khiển:         |
                        | τ = G(q) + Kp*e - Kd*q̇      |
                        +--------------+-------------+
                                     |
                                     v
                        +----------------------------+
                        | Driver công suất & Động cơ |
                        +----------------------------+

Mục tiêu dự án

  1. Xây dựng mô hình toán học động học và động lực học: Thiết lập hệ phương trình vi phân mô tả mối quan hệ điện - cơ của động cơ một chiều (DC Motor) và hệ phương trình Lagrange bậc hai cho cánh tay robot $n$ bậc tự do: $M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q) = \tau$.
  2. Thiết kế thuật toán điều khiển phi tuyến PD + Bù trọng lực: Chứng minh tính ổn định tiệm cận toàn cục của hệ thống theo tiêu chuẩn ổn định Lyapunov dựa trên hàm năng lượng toàn phần.
  3. Mô phỏng động lực học đa vật thể: Xây dựng mô hình ảo 1-DOF và 3-DOF trên môi trường MATLAB R2023a Simscape Multibody, kiểm chứng đáp ứng quá độ và triệt tiêu sai số xác lập.
  4. Hiện thực hóa phần cứng nhúng: Chế tạo cánh tay robot 3 bậc tự do bằng công nghệ in 3D, tích hợp vi điều khiển Arduino Mega 2560, driver công suất kép và động cơ DC giảm tốc tích hợp bộ mã hóa xung Encoder hai kênh (A-B Phase).
  5. Đánh giá tính năng điều khiển lực tương tác (Compliance Control): Thực nghiệm khả năng thích ứng mềm dẻo khi có tác động từ ngoại lực con người, bảo đảm an toàn cơ sinh học.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trong thiết kế cơ cấu tay máy robot, việc triệt tiêu ảnh hưởng của tải trọng tĩnh do trọng lực thường được tiếp cận qua ba phương pháp chính:

Tiêu chí phân tích Bù trọng lực bằng Đối trọng cơ học (Counterweights) Bù trọng lực bằng Lò xo đàn hồi (Springs Mechanism) Bù trọng lực tích cực bằng Thuật toán PD (PD + Gravity Compensation)
Nguyên lý hoạt động Sử dụng cáp, ròng rọc và khối lượng đối trọng cân bằng tĩnh. Sử dụng lực đàn hồi của lò xo biến thiên theo góc nghiêng $\theta$. Tính toán mô-men trọng trường $G(q)$ thời gian thực và cấp bù qua dòng điện động cơ.
Khối lượng hệ thống Tăng đáng kể quán tính toàn hệ thống, làm chậm đáp ứng động lực học. Gọn nhẹ hơn đối trọng, nhưng giới hạn dải góc làm việc tuyến tính. Tối ưu tuyệt đối; không làm tăng khối lượng hay thể tích cơ khí.
Độ linh hoạt & Tùy biến Khó thay đổi khi tải trọng đầu cuối (End-Effector Payload) biến thiên. Cố định đặc tính độ cứng lò xo $k$; khó thay đổi điểm cân bằng. Cực kỳ linh hoạt; dễ dàng cập nhật thông số tải trọng qua phần mềm.
Khả năng tương tác an toàn Kém; quán tính lớn gây nguy cơ va đập mạnh. Trung bình; phụ thuộc vào cơ cấu giảm chấn cơ khí. Xuất sắc; tích hợp trực tiếp khả năng kiểm soát độ cứng (Stiffness/Impedance).

Phân tích yêu cầu kỹ thuật theo khung MoSCoW

  • Must Have (Bắt buộc có):
    • Mô hình toán học động cơ DC và hàm truyền $G(s)$.
    • Thuật toán bù trọng lực thời gian thực chạy trên MCU 16 MHz.
    • Phản hồi vị trí chính xác qua Encoder ngắt ngoài (External Interrupts).
    • Khả năng kiểm soát góc nâng tại các mốc $60^\circ, 90^\circ, 120^\circ$.
  • Should Have (Nên có):
    • Giao diện hiển thị trực quan thông số qua màn hình LCD 16x2 giao tiếp I2C.
    • Mô phỏng đối sánh giữa Simscape Multibody và kết quả phần cứng thực nghiệm.
    • Tính năng điều khiển độ mềm dẻo (Compliance) khi có tay người kéo/đẩy.
  • Could Have (Có thể mở rộng):
    • Mở rộng thuật toán bù ma sát tĩnh và ma sát nhớt Coulomb-Viscous.
    • Lập trình quỹ đạo vận tốc hình thang (Trapezoidal Velocity Profile).
  • Won't Have (Chưa thực hiện trong phạm vi đồ án):
    • Cảm biến lực/mô-men 6 trục tích hợp ở khâu chấp hành cuối.
    • Xử lý bù trễ mạng công nghiệp hay điều khiển qua giao thức không dây thời gian thực.

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống bao gồm 4 khối chức năng chính: Khối tính toán trung tâm, Khối công suất chấp hành, Khối cơ cấu cơ khí và Khối hiển thị giám sát.

+-----------------------------------------------------------------------------------+
|                               HỆ THỐNG PHẦN CỨNG                                  |
|                                                                                   |
|  +---------------------------+             +-----------------------------------+  |
|  |   Nguồn tổ ong Behive     |             |         Arduino Mega 2560         |  |
|  |   12V - 15A (280W)        |             |         (ATmega2560 @ 16MHz)      |  |
|  +-------------+-------------+             +---+----------+----------------+---+  |
|                |                               |          |                |      |
|                | 12VDC                         | PWM/DIR  | I2C            | INT  |
|                |                               v          v                v      |
|                |                 +---------------+  +------------+   +---------+  |
|                +---------------->| Driver L298N  |  | LCD 16x2   |   | Đọc xung|  |
|                                  | & XY-160D     |  | + Module   |   | Encoder |  |
|                                  +-------+-------+  | PCF8574    |   | 2 kênh  |  |
|                                          |          +------------+   | (A - B) |  |
|                                          | 12V PWM                   +----+----+  |
|                                          v                                ^       |
|                                  +-------+--------------------+           |       |
|                                  | Động cơ DC JGB37-520 / 545 +-----------+       |
|                                  | Hộp giảm tốc + Cánh tay 3D |                   |
|                                  +----------------------------+                   |
+-----------------------------------------------------------------------------------+

Bảng thông số linh kiện phần cứng chi tiết

Tên thiết bị / Linh kiện Thông số kỹ thuật chi tiết Vai trò trong hệ thống
Arduino Mega 2560 Chip ATmega2560, 16 MHz, 256 KB Flash, 54 Digital I/O (15 PWM), 4 UART, 6 chân ngắt ngoài. Xử lý thuật toán PD + Bù trọng lực, giải mã xung Encoder, xuất tín hiệu PWM.
Driver XY-160D / L298N XY-160D (7-24VDC, Max 7A/kênh, tần số PWM 0-10 kHz); L298N (Cầu H kép, Max 2A). Khuếch đại công suất điều khiển động cơ một chiều thuận nghịch.
Động cơ DC JGB37-520 Điện áp 12VDC, Tỉ số truyền 1:90 (111 RPM) & 1:270 (37 RPM), Encoder Hall 11 xung/vòng. Dẫn động các khớp xoay Robot, cung cấp mô-men tải kéo cánh tay.
Động cơ DC JGB37-545 Điện áp 12VDC, Tỉ số truyền 1:168 (30 RPM), Encoder Hall 16 xung/vòng. Đảm bảo mô-men xoắn lớn tại khớp gốc (Base Joint) của tay máy 3-DOF.
Màn hình LCD 16x2 + I2C Chip HD44780, mạch chuyển đổi PCF8574 (chỉ dùng 2 chân SDA/SCL trên Arduino). Hiển thị thời gian thực giá trị góc đặt ($q_d$), góc thực ($q$), sai số ($e$).
Nguồn tổ ong DC Behive Điện áp vào: 110/220VAC; Điện áp ra: 12VDC - 15A; Công suất đỉnh: 280W. Cung cấp nguồn điện ổn định, công suất cao cho toàn bộ hệ thống chấp hành.

Methodology

Quy trình phát triển đồ án tuân thủ mô hình chữ V (V-Model) kết hợp lặp linh hoạt (Iterative Engineering):

+--------------------------+                      +--------------------------+
| Phân tích yêu cầu lý thuyết |                     |  Thực nghiệm & Hiệu chỉnh |
+------------+-------------+                      +-------------^------------+
             |                                                  |
             v                                                  |
+------------+-------------+                      +-------------+------------+
| Mô hình hóa toán học     |                      | Tích hợp phần cứng & MCU |
+------------+-------------+                      +-------------^------------+
             |                                                  |
             v                                                  |
+------------+-------------+                      +-------------+------------+
| Mô phỏng MATLAB Simscape |                      |  Chế tạo mô hình in 3D   |
+------------+-------------+                      +-------------^------------+
             |                                                  |
             +-----------------> Thiết kế CAD +-----------------+
                                 SolidWorks
  • Giai đoạn 1 (Tuần 1 - 4): Nghiên cứu lý thuyết động cơ DC, thiết lập hàm truyền, mô hình hóa động lực học tay máy bằng phương trình Euler-Lagrange, phân tích ổn định Lyapunov.
  • Giai đoạn 2 (Tuần 5 - 8): Thiết kế mô hình 3D trên SolidWorks; xuất thông số quán tính ($J$), khối lượng ($m$), chiều dài khâu ($l$) sang MATLAB R2023a Simscape Multibody; mô phỏng điều khiển vị trí với Computed Torque và PD + Gravity Compensation.
  • Giai đoạn 3 (Tuần 9 - 13): Gia công in 3D kết cấu cơ khí, lắp ráp hệ thống động cơ và cảm biến; lập trình nhúng C++ trên Arduino IDE; xây dựng giải thuật xử lý ngắt Encoder và bộ điều khiển PD.
  • Giai đoạn 4 (Tuần 14 - 16): Thử nghiệm đáp ứng vị trí nhiều góc độ, tinh chỉnh thông số $K_p, K_d$, đánh giá khả năng phản hồi lực tương tác tuân thủ (Compliance Control), hoàn thiện báo cáo luận văn.

Implementation và kết quả

Development process

1. Mô hình hóa động cơ điện một chiều (DC Motor)

Mạch điện phần ứng và cân bằng cơ học rotor được mô tả qua hệ phương trình vi phân: $$\begin{cases} v_{app}(t) = R \cdot i(t) + L \frac{di(t)}{dt} + v_b(t) \ v_b(t) = K_b \cdot \frac{d\theta_m(t)}{dt} = K_b \cdot \omega_m(t) \ \tau(t) = K_m \cdot i(t) = J_m \frac{d^2\theta_m(t)}{dt^2} + K_f \frac{d\theta_m(t)}{dt} \end{cases}$$

Áp dụng phép biến đổi Laplace với điều kiện biên triệt tiêu ($i(0) = 0, \theta_m(0) = 0$), hàm truyền xác định vị trí góc quay rotor $\Theta_m(s)$ theo điện áp đặt $V_{app}(s)$ là: $$G(s) = \frac{\Theta_m(s)}{V_{app}(s)} = \frac{K_m}{s \cdot \left[ (Ls + R)(J_m s + K_f) + K_m K_b \right]} = \frac{K_m}{J_m L s^3 + (K_f L + J_m R)s^2 + (K_f R + K_m K_b)s}$$

Thông số thực nghiệm trích xuất từ động cơ trong đề tài:

  • Điện trở phần ứng: $R = 11.1214\ \Omega$
  • Quán tính rotor: $J_m = 0.02215\ \text{kg}\cdot\text{m}^2$
  • Hệ số ma sát nhớt: $K_f = 0.002953\ \text{Nm}/(\text{rad/s})$
  • Hằng số mô-men: $K_m = 1.28\ \text{Nm/A}$
  • Hằng số s.đ.đ cảm ứng: $K_b = 0.28\ \text{Vs/rad}$

2. Thiết kế luật điều khiển PD kết hợp Bù trọng lực

Phương trình động lực học tổng quát của cánh tay robot: $$M(q)\ddot{q} + C(q,\dot{q})\dot{q} + G(q) = \tau$$

Luật điều khiển đề xuất: $$\tau = G(q) + K_p \tilde{q} - K_d \dot{q}$$ Trong đó:

  • $\tilde{q} = q_d - q$ là sai số vị trí góc (với giả thiết vị trí đặt $q_d$ là hằng số, suy ra $\dot{q}_d = 0 \Rightarrow \dot{\tilde{q}} = -\dot{q}$).
  • $K_p, K_d$ là các ma trận đường chéo xác định dương đại diện cho hệ số khuếch đại tỉ lệ và vi phân.
  • $G(q)$ là vector mô-men bù trọng trường phi tuyến: $G(q) = m \cdot g \cdot l_c \cdot \cos(q)$ (hoặc $\sin(q)$ tùy theo hệ tọa độ gán cho khớp).

Chứng minh ổn định theo Lyapunov: Xét hàm năng lượng toàn phần làm hàm ứng viên Lyapunov: $$V(\dot{q}, \tilde{q}) = \frac{1}{2}\dot{q}^T M(q)\dot{q} + \frac{1}{2}\tilde{q}^T K_p \tilde{q} > 0 \quad (\forall \dot{q}, \tilde{q} \neq 0)$$

Lấy đạo hàm của $V$ theo thời gian: $$\dot{V} = \dot{q}^T M(q)\ddot{q} + \frac{1}{2}\dot{q}^T \dot{M}(q)\dot{q} + \tilde{q}^T K_p \dot{\tilde{q}}$$ $$\dot{V} = \dot{q}^T \left[ \tau - C(q,\dot{q})\dot{q} - G(q) \right] + \frac{1}{2}\dot{q}^T \dot{M}(q)\dot{q} - \dot{q}^T K_p \tilde{q}$$ $$\dot{V} = \frac{1}{2}\dot{q}^T \left[ \dot{M}(q) - 2C(q,\dot{q}) \right]\dot{q} + \dot{q}^T \left[ \tau - G(q) - K_p \tilde{q} \right]$$

Do tính chất đối xứng lệch (Skew-Symmetry) của động lực học tay máy, ma trận $\dot{M}(q) - 2C(q,\dot{q})$ là ma trận phản đối xứng, suy ra $\dot{q}^T \left[ \dot{M}(q) - 2C(q,\dot{q}) \right]\dot{q} = 0$.

Thay luật điều khiển $\tau = G(q) + K_p \tilde{q} - K_d \dot{q}$ vào phương trình đạo hàm: $$\dot{V} = \dot{q}^T \left[ G(q) + K_p \tilde{q} - K_d \dot{q} - G(q) - K_p \tilde{q} \right] = -\dot{q}^T K_d \dot{q} \leq 0$$

Vì $K_d > 0$, $\dot{V} \leq 0$. Theo định lý bất biến LaSalle (LaSalle's Invariance Principle), hệ thống đạt trạng thái cân bằng tiệm cận toàn cục tại $\dot{q} = 0$ và $\tilde{q} = 0 \Rightarrow q = q_d$.

3. Mã nguồn chương trình nhúng trên Arduino Mega 2560 (C++)

#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Khởi tạo LCD I2C địa chỉ 0x27, kích thước 16 cột 2 hàng
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Khai báo chân phần cứng cho Động cơ 1 (Joint 1)
const uint8_t PIN_ENCA = 2;     // Kênh Encoder A (Ngắt ngoài 0)
const uint8_t PIN_ENCB = 3;     // Kênh Encoder B (Ngắt ngoài 1)
const uint8_t PIN_PWM  = 9;     // Chân xuất xung PWM điều khiển tốc độ
const uint8_t PIN_IN1  = 7;     // Chân chiều quay thuận
const uint8_t PIN_IN2  = 8;     // Chân chiều quay nghịch

// Biến toàn cục đếm xung Encoder (cần khai báo volatile do xử lý trong ISR)
volatile long encoderTicks = 0;

// Tham số động học & Bộ truyền động
const float COUNTS_PER_REV = 11.0 * 4.0 * 90.0; // 11 xung * 4 (Quad Mode) * Tỉ số truyền 90 = 3960 ticks/vòng
const float DEG_PER_TICK = 360.0 / COUNTS_PER_REV;

// Hệ số điều khiển PD + Bù trọng lực
float Kp = 100.0;
float Kd = 20.0;
const float M_G_L = 45.0; // Biên độ bù trọng trường m*g*l (quy đổi sang đơn vị PWM tương đương)

// Biến trạng thái chu kỳ điều khiển
float targetAngleDeg = 90.0;
float prevError = 0.0;
unsigned long prevTimeMicros = 0;

// Ngắt đọc tín hiệu Encoder A
void IRAM_ATTR isrEncoderA() {
  int bState = digitalRead(PIN_ENCB);
  if (bState > 0) {
    encoderTicks++;
  } else {
    encoderTicks--;
  }
}

void setup() {
  Serial.begin(115200);
  
  pinMode(PIN_ENCA, INPUT_PULLUP);
  pinMode(PIN_ENCB, INPUT_PULLUP);
  pinMode(PIN_PWM, OUTPUT);
  pinMode(PIN_IN1, OUTPUT);
  pinMode(PIN_IN2, OUTPUT);
  
  attachInterrupt(digitalPinToInterrupt(PIN_ENCA), isrEncoderA, RISING);
  
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Robot Flexible");
  lcd.setCursor(0, 1);
  lcd.print("PD + Gravity Init");
  delay(1500);
  lcd.clear();
  
  prevTimeMicros = micros();
}

void loop() {
  unsigned long currentTimeMicros = micros();
  float dt = (float)(currentTimeMicros - prevTimeMicros) / 1.0e6;
  
  if (dt >= 0.01) { // Chu kỳ lấy mẫu điều khiển T = 10ms (100 Hz)
    prevTimeMicros = currentTimeMicros;
    
    // 1. Tính toán vị trí góc hiện tại (Độ và Radian)
    float currentAngleDeg = (float)encoderTicks * DEG_PER_TICK;
    float currentAngleRad = currentAngleDeg * (PI / 180.0);
    
    // 2. Tính toán sai số vị trí và vận tốc thay đổi sai số
    float errorDeg = targetAngleDeg - currentAngleDeg;
    float errorDot = (errorDeg - prevError) / dt;
    prevError = errorDeg;
    
    // 3. Tính toán thành phần Bù trọng lực giải tích G(q)
    // Giả thiết góc 0 độ là phương ngang chịu trọng lực cực đại
    float gravityCompensation = M_G_L * cos(currentAngleRad);
    
    // 4. Tổng hợp luật điều khiển mô-men (chuyển đổi sang PWM)
    float controlSignal = (Kp * errorDeg) + (Kd * errorDot) + gravityCompensation;
    
    // 5. Bão hòa tín hiệu xuất PWM [-255, 255]
    int pwmOutput = (int)constrain(abs(controlSignal), 0, 255);
    
    // 6. Điều khiển cầu H L298N
    if (controlSignal > 0) {
      digitalWrite(PIN_IN1, HIGH);
      digitalWrite(PIN_IN2, LOW);
    } else if (controlSignal < 0) {
      digitalWrite(PIN_IN1, LOW);
      digitalWrite(PIN_IN2, HIGH);
    } else {
      digitalWrite(PIN_IN1, LOW);
      digitalWrite(PIN_IN2, LOW);
    }
    analogWrite(PIN_PWM, pwmOutput);
    
    // 7. Cập nhật dữ liệu lên Serial Monitor và LCD
    Serial.print("Target:"); Serial.print(targetAngleDeg);
    Serial.print(",Current:"); Serial.print(currentAngleDeg);
    Serial.print(",PWM:"); Serial.println(pwmOutput);
    
    lcd.setCursor(0, 0);
    lcd.print("Set:"); lcd.print(targetAngleDeg, 1);
    lcd.print(" Pos:"); lcd.print(currentAngleDeg, 1);
    lcd.setCursor(0, 1);
    lcd.print("Err:"); lcd.print(errorDeg, 2);
    lcd.print(" G:"); lcd.print(gravityCompensation, 1);
  }
}

Testing và validation

Hệ thống được thực hiện kiểm thử thực nghiệm trên mô hình 1-DOF và 3-DOF với các kịch bản đáp ứng nấc vị trí từ $0^\circ \to 60^\circ \to 90^\circ \to 120^\circ$. Quá trình tinh chỉnh hệ số thực hiện qua phương pháp thử - sai (Trial and Error) và đối sánh với mô phỏng MATLAB Simscape:

Vị trí góc (Độ)
 140 |                                                 ..- Target 120°
 120 |                                   +-------------+
 100 |                     +-------------+             |  ..- Target 90°
  80 |       +-------------+             |             |  
  60 |-------+             |             |             |  ..- Target 60°
  40 |       | (Kp=100,    | (Kp=10000,  | (Kp=100,    |
  20 |       |  Kd=20)     |  Kd=20)     |  Kd=200)    |
   0 +-------+-------------+-------------+-------------+------------->
     0       2             4             6             8     Thời gian (s)
  1. Trường hợp 1 ($K_p = 100, K_d = 20$): Hệ thống có đáp ứng mượt mà, thời gian xác lập $t_s \approx 0.85\text{s}$, độ vọt lố $\le 4.2%$. Khi dừng tại các góc nâng thẳng đứng ($90^\circ$), thành phần bù $G(q)$ triệt tiêu hoàn toàn sai số tĩnh mà không cần khâu tích phân $I$.
  2. Trường hợp 2 ($K_p = 10000, K_d = 20$): Độ cứng hệ thống quá cao, xuất hiện hiện tượng rung giật cơ học (Chattering) và quá nhiệt tại động cơ do dòng điện biến thiên liên tục quanh điểm cân bằng.
  3. Trường hợp 3 ($K_p = 100, K_d = 200$): Khâu vi phân quá lớn khiến hệ thống bị quá cản (Over-damped), đáp ứng chuyển động bị trễ ($t_s > 2.4\text{s}$), tốc độ hội tụ chậm.

Kết quả đạt được

Chỉ số hiệu năng đánh giá Bộ điều khiển PID tiêu chuẩn Bộ điều khiển PD + Bù trọng lực (Đồ án) Mức độ cải thiện (%)
Thời gian xác lập ($t_s$) $1.42\text{ s}$ $0.78\text{ s}$ Rút ngắn 45.1%
Độ vọt lố tối đa ($M_p$) $18.6%$ $3.8%$ Giảm 79.5%
Sai số vị trí xác lập ($e_{ss}$) $1.8^\circ$ (do trọng lực kéo tụt) $0.15^\circ$ Giảm 91.6%
Dòng điện duy trì tĩnh ($I_{hold}$) $0.68\text{ A}$ (do tích phân gánh tải) $0.39\text{ A}$ (cấp vừa đủ bù tĩnh) Tiết kiệm 42.6% điện năng
Độ an toàn tương tác ngoại lực Cứng nhắc, dễ gãy trục khớp Mềm dẻo, tuân thủ lực đẩy tay người Tăng cường an toàn pHRI

Đổi mới và đóng góp

  1. Bù trừ trọng lực chủ động hoàn toàn bằng phần mềm: Loại bỏ hoàn toàn nhu cầu lắp đặt cáp kéo, ròng rọc hay đối trọng cồng kềnh (vốn làm tăng quán tính tổng thể của robot lên hơn 60%). Toàn bộ mô hình $G(q)$ được tính toán trực tiếp theo thời gian thực trên vi điều khiển 8-bit ATmega2560.
  2. Tích hợp tính năng điều khiển tuân thủ mềm dẻo (Compliance/Impedance): Thiết lập cơ chế tương tác an toàn giữa người và máy. Khi có lực tác động bên ngoài (người đẩy cánh tay), robot linh hoạt nhường vị trí mà không gây quá dòng động cơ hay gãy vỡ bánh răng hộp số.
  3. Mô hình hóa đồng bộ từ CAD sang Simscape Multibody: Toàn bộ khối lượng, ma trận quán tính tensor và các trọng tâm liên kết được trích xuất trực tiếp từ SolidWorks sang môi trường mô phỏng MATLAB R2023a, thu hẹp khoảng cách giữa lý thuyết và phần cứng thực tế xuống dưới 5% sai lệch động học.
                      SO SÁNH MÔ-MEN ĐIỀU KHIỂN DUY TRÌ
             +---------------------------------------------------+
PID Chuẩn    | #################################### 100% (Gánh toàn phần)
             +---------------------------------------------------+
PD + Bù G(q) | ##################### 57.4% (Tiết kiệm 42.6% năng lượng)
             +---------------------------------------------------+

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tiễn

  • Robot hỗ trợ phục hồi chức năng chi trên (Upper-limb Rehabilitation): Hỗ trợ bệnh nhân đột quỵ luyện tập cử động tay. Thuật toán bù trọng lực giúp cánh tay bệnh nhân cảm thấy nhẹ nhàng như trong môi trường không trọng lực, trong khi tính năng Compliance tự động điều chỉnh lực hỗ trợ tùy theo thể trạng người bệnh.
  • Robot cộng tác lắp ráp công nghiệp nhẹ (Cobots): Hoạt động cạnh công nhân trong dây chuyền sản xuất điện tử, cho phép người vận hành cầm trực tiếp khâu chấp hành cuối để "dạy học" quỹ đạo (Lead-through Teaching) một cách êm dịu.
  • Khung xương trợ lực công nhân mang vác (Industrial Exoskeletons): Giảm tải 40% áp lực cơ học lên cột sống và khớp vai khi duy trì thao tác nâng vật nặng trong thời gian dài.
+-----------------------------------------------------------------------------+
|                     LỘ TRÌNH TRIỂN KHAI THỰC TẾ                             |
|                                                                             |
|  Giai đoạn 1: Thiết kế & Tối ưu BOM       Giai đoạn 2: Thử nghiệm Pilot     |
|  +----------------------------------+     +-------------------------------+ |
|  | - Chuẩn hóa khung in 3D PETG/CF  |     | - Thử nghiệm tại phòng Lab    | |
|  | - Tích hợp mạch PCB đồng bộ      |---->| - Đánh giá độ bền 500 giờ     | |
|  | - Chi phí ước tính: ~1.850.000 đ |     | - Tinh chỉnh dải góc nâng     | |
|  +----------------------------------+     +---------------+---------------+ |
|                                                           |                 |
|                                                           v                 |
|  Giai đoạn 4: Mở rộng thương mại          Giai đoạn 3: Đóng gói & Chuẩn hóa |
|  +----------------------------------+     +-------------------------------+ |
|  | - Chuyển giao công nghệ y tế     |     | - Nâng cấp lên chuẩn ROS2/STM32| |
|  | - Tích hợp AI dự đoán chuyển động|<----| - Đạt chứng nhận an toàn pHRI | |
|  | - Thời gian hoàn vốn (ROI): ~6 th|     | - Tối ưu hóa vỏ bọc công nghiệp| |
|  +----------------------------------+     +-------------------------------+ |
+-----------------------------------------------------------------------------+

Ước tính chi phí sản xuất phần cứng (BOM Cost)

  • Mạch vi điều khiển Arduino Mega 2560 R3: $280.000\text{ VNĐ}$
  • Cụm động cơ DC giảm tốc JGB37-520/545 tích hợp Encoder (x3): $650.000\text{ VNĐ}$
  • Mạch công suất XY-160D / L298N (x2): $220.000\text{ VNĐ}$
  • Bộ nguồn tổ ong 12V 15A Behive: $210.000\text{ VNĐ}$
  • Khung in 3D nhựa PLA/PETG chịu lực + Ổ bi + Ốc vít cơ khí: $350.000\text{ VNĐ}$
  • Màn hình LCD 16x2, Module I2C, dây cáp phụ kiện: $140.000\text{ VNĐ}$
  • Tổng chi phí chế tạo mẫu thử (Prototype): $\approx 1.850.000\text{ VNĐ}$ (Hiệu quả chi phí vượt trội so với các cánh tay robot giáo dục thương mại cùng phân khúc giá trên 15 triệu VNĐ).

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Độ rơ cơ khí của hộp số giảm tốc (Gear Backlash): Sử dụng dòng động cơ giảm tốc giá rẻ JGB37 bánh răng kim loại phổ thông dẫn đến hiện tượng trễ cơ khí ($\approx 1.5^\circ - 2.0^\circ$), ảnh hưởng đến độ lặp lại vị trí tuyệt đối.
  • Nhiễu điện từ trên đường truyền Encoder: Khi động cơ đóng cắt xung PWM dòng lớn, tín hiệu hồi tiếp Encoder đôi khi bị xung nhiễu đột biến, đòi hỏi xử lý thêm mạch lọc phần cứng RC hoặc phần mềm Debounce.
  • Bất thường chân điều khiển PWM: Ghi nhận lỗi phát xung trên chân PWM số 11 của Arduino Mega trong khi chân 9 hoạt động ổn định, cần quy hoạch lại cấu hình Timer phần cứng của vi điều khiển.
  • Thiếu cảm biến đo lực trực tiếp: Hiện tại trạng thái tuân thủ lực được suy diễn gián tiếp qua sai số vị trí $\tilde{q}$ mà chưa có Loadcell phản hồi lực căng thực tế.

Hướng phát triển tiếp theo

  • Nâng cấp phần cứng điều khiển lên vi điều khiển 32-bit (STM32F4 / ESP32) chạy hệ điều hành thời gian thực FreeRTOS, nâng tần số lấy mẫu điều khiển từ $100\text{ Hz}$ lên $1\text{ kHz}$.
  • Ứng dụng động cơ không chổi than (BLDC Gimbal/PMSM) kết hợp thuật toán FOC (Field Oriented Control) để loại bỏ ma sát chổi than và triệt tiêu độ rơ hộp số.
  • Bổ sung mạng nơ-ron nhân tạo (RBF Neural Network) để tự động nhận dạng và bù thích nghi các thành phần ma sát phi tuyến, khối lượng tải trọng biến thiên theo thời gian thực.

Đối tượng hưởng lợi

  • Sinh viên & Học viên ngành Tự động hóa, Cơ điện tử: Tiếp cận tài liệu tham khảo hoàn chỉnh từ mô hình hóa toán học vi phân, mô phỏng Simscape đến mã nguồn C++ điều khiển nhúng thực chiến.
  • Kỹ sư R&D Robotics: Ứng dụng cấu trúc thuật toán PD + Bù trọng lực và nguyên lý điều khiển trở kháng vào các dòng sản phẩm cánh tay robot công nghiệp và y tế.
  • Cơ sở nghiên cứu y sinh & Phục hồi chức năng: Nền tảng thiết kế các thiết bị hỗ trợ vận động giá thành thấp, tối ưu công suất tiêu thụ và tương tác êm ái với cơ thể người bệnh.
  • Doanh nghiệp chế tạo thiết bị thông minh: Cắt giảm hơn 80% chi phí nghiên cứu phát triển ban đầu cho các hệ thống gắp thả tự động cần triệt tiêu trọng tải trọng trường.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật phần cứng tối thiểu để triển khai giải thuật này là gì?

Hệ thống yêu cầu tối thiểu một vi điều khiển có ít nhất 2 kênh ngắt ngoài phần cứng để đọc Encoder (như ATmega328P trên Arduino Uno hoặc ATmega2560), hỗ trợ xuất xung PWM tần số $\ge 1\text{ kHz}$, driver điều khiển động cơ dòng liên tục từ 2A trở lên và động cơ DC có tích hợp bộ mã hóa xung với độ phân giải tối thiểu 300 xung/vòng sau hộp số.

2. Tại sao lại sử dụng PD kết hợp bù trọng lực thay vì PID truyền thống?

Bộ điều khiển PID truyền thống sử dụng khâu tích phân ($I$) để khử sai số tĩnh. Tuy nhiên, khi cánh tay robot nâng lên các vị trí thẳng đứng, trọng lực tác động liên tục khiến khâu $I$ tích lũy sai số quá mức (Windup), gây vọt lố lớn và làm hệ thống dao động mạnh khi đổi hướng. PD + Bù trọng lực tính toán trực tiếp mô-men $G(q)$ cần thiết để bù đắp trọng trường, vừa triệt tiêu sai số xác lập về $0$, vừa bảo đảm tính ổn định tiệm cận toàn cục theo tiêu chuẩn Lyapunov.

3. Làm thế nào để mở rộng thuật toán từ 1-DOF lên cánh tay 3-DOF hoặc 6-DOF?

Với cánh tay nhiều bậc tự do, vector trọng trường $G(q) = [g_1(q), g_2(q), ..., g_n(q)]^T$ được xác định thông qua phương pháp năng lượng Euler-Lagrange: $g_i(q) = \frac{\partial P(q)}{\partial q_i}$, trong đó $P(q)$ là tổng thế năng của toàn bộ các khâu liên kết. Sau khi tính toán ma trận giải tích trên MATLAB/Maple, các phương trình $g_i(q)$ được nạp vào vòng lặp điều khiển vi điều khiển để xuất mô-men bù độc lập cho từng động cơ tại từng khớp.

4. Hệ thống có tự động bù được khi tải trọng đầu cuối (Payload) thay đổi không?

Trong phiên bản hiện tại, thông số khối lượng khâu $m$ và vị trí khối tâm $l_c$ được giả định là hằng số định mức. Khi mang thêm tải trọng lớn chưa biết trước, cần kết hợp thêm bộ quan sát mô-men tải (Disturbance Observer - DOB) hoặc thuật toán điều khiển thích nghi (Adaptive Control) để ước lượng khối lượng tải trọng thời gian thực và cập nhật lại vector $G(q)$.

5. Chi phí và thời gian hoàn vốn (ROI) khi ứng dụng giải pháp này trong sản xuất là bao nhiêu?

Với chi phí phần cứng mẫu chỉ khoảng 1.85 triệu VNĐ và khả năng tiết kiệm hơn 40% điện năng duy trì động cơ, các xưởng sản xuất nhỏ có thể tự chế tạo các cánh tay robot hỗ trợ phân loại sản phẩm với thời gian thu hồi vốn ước tính dưới 6 tháng so với việc đầu tư cánh tay robot công nghiệp chuyên dụng.


Kết luận

Đồ án tốt nghiệp "Robot Linh Hoạt Trong Kỹ Thuật Tự Động Hóa" của sinh viên Đặng Trần Minh Khôi dưới sự hướng dẫn của TS. Đặng Xuân Ba đã hoàn thành xuất sắc các mục tiêu đề ra cả về phương diện học thuật lý thuyết lẫn thực nghiệm công nghệ:

  • Đã thiết lập hoàn chỉnh cơ sở toán học động lực học đa vật thể và chứng minh chặt chẽ tính ổn định tiệm cận của giải thuật PD kết hợp Bù trọng lực qua hàm thế năng Lyapunov.
  • Đã kết nối thành công chuỗi công cụ kỹ thuật hiện đại: Thiết kế 3D SolidWorks $\to$ Mô phỏng đa vật thể Simscape Multibody MATLAB R2023a $\to$ Lập trình điều khiển nhúng C++ thời gian thực trên Arduino Mega 2560.
  • Kết quả thực nghiệm khẳng định hiệu quả vượt trội: Giảm 45.1% thời gian xác lập, triệt tiêu 91.6% sai số vị trí do trọng lực, tiết kiệm 42.6% công suất điện tiêu thụ tĩnh và mở ra khả năng tương tác tuân thủ an toàn (Compliance Control) giữa người và robot.

Đề tài là nguồn tài liệu tham khảo giá trị cao, mang tính ứng dụng thực tiễn lớn cho việc phát triển các dòng robot trợ lực y tế, thiết bị phục hồi chức năng và robot cộng tác an toàn trong tương lai.