Bối cảnh và vấn đề nghiên cứu

Thiết bị bay không người lái (UAV – Unmanned Aerial Vehicle hay Drone), đặc biệt là cấu hình bốn cánh quạt (Quadcopter), ngày càng được ứng dụng rộng rãi trong cả lĩnh vực quân sự lẫn dân sự. Trong quân sự, Drone đảm nhiệm các nhiệm vụ tình báo, trinh sát, giám sát chiến trường, thực hiện nhiệm vụ tấn công tại các khu vực rủi ro cao và truyền phát hình ảnh trực tiếp về trung tâm chỉ huy. Trong đời sống dân sự và thương mại, thiết bị này hỗ trợ vận chuyển bưu kiện cự ly ngắn, thu thập dữ liệu khí tượng, giám sát nông nghiệp quy mô lớn, cứu hộ cứu nạn trong thiên tai (lũ lụt, hỏa hoạn, động đất) và ghi hình điện ảnh từ trên cao.

Về mặt kỹ thuật, Drone cấu hình Quadcopter vận hành dựa trên nguyên lý thay đổi tốc độ quay của từng cặp động cơ đối diện nhau để tạo ra lực đẩy và mô-men xoắn. Vấn đề cốt lõi được đặt ra trong nghiên cứu là làm thế nào để điều khiển bốn động cơ nhằm đảm bảo khả năng tự cân bằng trên từng trục tọa độ, phối hợp chuyển động giữa các trục, triệt tiêu quán tính xoay tròn và duy trì quỹ đạo bay ổn định. Yếu tố quyết định tính ổn định của hệ thống là độ chính xác của các giá trị góc nghiêng thu thập từ cảm biến quán tính và giải thuật điều khiển phân bổ lực đẩy thích hợp.

Đề tài "Thiết kế và điều khiển Drone" do sinh viên Lê Thiên Tuyến (MSSV: 20192165) thực hiện dưới sự hướng dẫn của TS. Đào Quý Thịnh tại Bộ môn Tự động hóa Công nghiệp, Trường Điện – Điện tử, Đại học Bách Khoa Hà Nội (hoàn thành vào tháng 3/2023), tập trung giải quyết các nhiệm vụ:

  1. Nghiên cứu tổng quan nguyên lý hoạt động và xây dựng sơ đồ kết nối phần cứng cho hệ thống Quadcopter.
  2. Xây dựng mô hình toán học động lực học của Drone bằng phương pháp Newton – Euler và Euler – Lagrange.
  3. Lắp ráp, cấu hình phần cứng điều khiển bay chuyên dụng mã nguồn mở PX4 (kit 3DR Pixhawk).
  4. Thiết lập môi trường mô phỏng (jMAVSim) và phát triển phần mềm giao diện đồ họa người dùng (GUI) bằng ngôn ngữ Python để giám sát, điều khiển Drone theo các chế độ bay khác nhau thông qua giao thức MAVLink.

Phạm vi nghiên cứu tập trung vào mô hình Quadcopter cỡ nhỏ sử dụng động cơ không chổi than, kết hợp kiểm chứng giải thuật điều khiển và quỹ đạo trên môi trường mô phỏng phần mềm kết nối trực tiếp với ngăn xếp điều khiển bay PX4.


Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình động lực học

Nghiên cứu sử dụng hai hệ quy chiếu chuẩn để mô tả trạng thái chuyển động của Quadcopter:

  • Hệ quy chiếu quán tính ($xyz$ - Inertial Frame): Dùng để xác định vị trí không gian $\xi = [x, y, z]^T$ và hướng của thiết bị thông qua các góc Euler $\eta = [\phi, \theta, \psi]^T$, tương ứng với các chuyển động Roll (lắc ngang quanh trục $x$), Pitch (chúi/ngửa quanh trục $y$) và Yaw (xoay hướng quanh trục $z$).
  • Hệ quy chiếu gắn với vật ($x_B, y_B, z_B$ - Body Frame): Gắn liền với tâm trọng trường của Drone để xác định vận tốc dài $v_B$ và vận tốc góc $\nu$.

Ma trận quay trực giao $R$ chuyển đổi từ hệ quy chiếu vật sang hệ quy chiếu quán tính thỏa mãn tính chất $R^{-1} = R^T$. Lực đẩy của mỗi rotor tỷ lệ với bình phương tốc độ góc của cánh quạt: $$T_i = k \cdot \omega_i^2$$ Mô-men xoắn cản do mỗi rotor tạo ra được mô tả qua phương trình: $$\tau_{M_i} = b \cdot \omega_i^2 + I_M \dot{\omega}_i$$ Trong đó $k$ là hằng số đẩy, $b$ là hằng số kéo, $I_M$ là mô-men quán tính của rotor và $\omega_i$ là tốc độ góc của rotor thứ $i$.

Tác giả thiết lập hệ phương trình vi phân mô tả chuyển động tịnh tiến và chuyển động quay thông qua hai phương pháp:

  • Công thức Newton – Euler: Phân tích lực tổng hợp và mô-men ngoại lực tác động lên vật thể, bỏ qua lực ly tâm và lực con quay hồi chuyển ($\Gamma$) để suy ra ma trận gia tốc dài và gia tốc góc.
  • Công thức Euler – Lagrange: Dựa trên hàm Lagrange $L = E_{trans} + E_{rot} - E_{pot}$ (với $E_{trans}$ là động năng tịnh tiến, $E_{rot}$ là động năng quay và $E_{pot}$ là thế năng) kết hợp ma trận Jacobian để suy ra phương trình trạng thái động lực học đầy đủ của Quadcopter.

Phương pháp xử lý dữ liệu cảm biến

Để thu thập góc nghiêng chính xác cho vòng lặp cân bằng, tác giả sử dụng cảm biến 6 bậc tự do (6DOF IMU) MPU6050. Do tín hiệu gia tốc kế nhạy với rung động cơ khí còn con quay hồi chuyển bị trôi dạt (drift) theo thời gian, dữ liệu thô được lọc và kết hợp thông qua bộ lọc bù (Complementary Filter) kết hợp quy trình hiệu chuẩn triệt tiêu độ lệch (offset calibration) bằng cách lấy mẫu tĩnh hàng trăm lần khi cảm biến đứng yên.

Phương pháp nghiên cứu và phát triển hệ thống

  • Phương pháp thiết kế hệ thống kỹ thuật: Lựa chọn, phối ghép phần cứng (khung máy bay, động cơ BLDC, ESC, mạch điều khiển chuyến bay Pixhawk, cảm biến, nguồn pin LiPo, mạch viễn thông Telemetry).
  • Phương pháp mô phỏng SITL (Software-in-the-Loop): Sử dụng trình giả lập jMAVSim kết hợp ngăn xếp phần mềm PX4 Autopilot để thử nghiệm phản hồi động lực học và các chế độ điều khiển trước khi nạp xuống phần cứng thật.
  • Phương pháp lập trình bất đồng bộ: Áp dụng mô hình async/await trong Python để xây dựng giao diện điều khiển tương tác thời gian thực thông qua bộ thư viện MAVSDK-Python.

Thiết kế và triển khai

Hệ thống được tổ chức thành hai thành phần chính: kiến trúc phần cứng trên phương tiện bay và phần mềm trạm kiểm soát mặt đất (Ground Control Station).

1. Cấu hình phần cứng Drone

Thành phần Mã hiệu / Quy cách Đặc tính kỹ thuật Chức năng trong hệ thống
Khung máy bay Khung Quadcopter đối xứng Kết cấu cơ khí cứng vững, phân bố đều mô-men quán tính Định vị động cơ và bảo vệ linh kiện
Động cơ BLDC MT2204 – 2300KV Tốc độ định mức: $RPM = KV \times V$ Cung cấp lực nâng và mô-men quay
Cánh quạt Cánh 6045 (6 inch) 2 cặp cánh thuận - nghịch (CW và CCW) Chuyển đổi tốc độ góc thành lực đẩy khí động
Mạch điều tốc ESC 12AE Điều khiển xung PPM tần số 50/60Hz, độ rộng xung 1ms – 2ms Điều chỉnh tốc độ cấp nguồn cho động cơ BLDC
Mạch điều khiển 3DR Pixhawk (PX4) Kiến trúc vi điều khiển mô-đun, tích hợp cổng giao tiếp I2C, SPI, UART Xử lý thuật toán bay, cân bằng và điều hướng
Cảm biến IMU GY-521 (MPU6050) Con quay hồi chuyển ($\pm 250^\circ/\text{s} \div \pm 2000^\circ/\text{s}$), Gia tốc kế ($\pm 2\text{g} \div \pm 16\text{g}$), I2C Thu thập dữ liệu vận tốc góc và gia tốc 3 trục
Nguồn cấp Pin LiPo + Module Nguồn (PM) Cung cấp nguồn độc lập cho Pixhawk và mạch phân phối động cơ Cấp nguồn và đo đạc điện áp, dòng điện tức thời
Truyền nhận sóng Tay cầm FlySky & Telemetry Radio Kết nối sóng không dây mặt đất - Drone qua cổng Serial/USB Điều khiển thủ công và truyền nhận dữ liệu telemetry

2. Triển khai phần mềm và giao thức kết nối

  • PX4 Autopilot & MAVLink: Hệ thống sử dụng ngăn xếp PX4 kết hợp giao thức MAVLink để đóng gói và phân phối thông điệp điều khiển (như lệnh Arm/Disarm, Takeoff, Land, Position Setpoint).
  • MAVSDK-Python: Tác giả sử dụng thư viện MAVSDK để trừu tượng hóa các bản tin MAVLink thành các API hướng đối tượng trong Python như drone.action.arm(), drone.action.takeoff(), drone.offboard.set_position_ned().
  • Kiến trúc giao diện điều khiển (GUI): Xây dựng bằng thư viện tkinter kết hợp cơ chế lập trình bất đồng bộ asyncio (async def, await). Việc xử lý bất đồng bộ giúp giao diện người dùng duy trì khả năng phản hồi mượt mà trong khi liên tục gửi/nhận luồng dữ liệu định tuyến và trạng thái bay từ thiết bị với tần số cao.

Nội dung chính theo từng chương

CHƯƠNG I. TỔNG QUAN VỀ DRONE

Chương này giới thiệu khái niệm UAV/Drone, phân loại các ứng dụng dân sự, khoa học và quân sự. Tác giả đi sâu phân tích nguyên lý khí động học căn bản của Quadcopter: bốn cánh quạt chia làm hai cặp quay ngược chiều nhau (cặp 1-2 quay thuận chiều kim đồng hồ, cặp 3-4 quay ngược chiều kim đồng hồ) để triệt tiêu phản mô-men xoắn tác động lên thân máy bay. Bốn chế độ vận động chính được phân tích gồm:

  • Thrust (Lực nâng): Cả bốn động cơ tăng/giảm cùng tốc độ để thay đổi độ cao theo trục $z$.
  • Roll (Lắc ngang): Thay đổi chênh lệch tốc độ giữa hai cặp cánh bên trái và bên phải.
  • Pitch (Chúi/Ngửa): Thay đổi chênh lệch tốc độ giữa hai cặp cánh phía trước và phía sau.
  • Yaw (Xoay hướng): Thay đổi chênh lệch tốc độ giữa cặp cánh quay thuận và cặp cánh quay nghịch.

CHƯƠNG II. SƠ ĐỒ KẾT NỐI VÀ PHẦN CỨNG

Chương II trình bày sơ đồ ghép nối toàn diện giữa các khối chức năng. Nội dung chi tiết tập trung vào:

  • Nguyên lý vận hành của động cơ BLDC MT2204 và ESC 12AE thông qua điều chế độ rộng xung PPM (dải xung từ 1ms ứng với trạng thái dừng đến 2ms ứng với công suất cực đại); quy trình cấu hình bướm ga (throttle calibration) và các bước khởi động an toàn cho ESC.
  • Cấu trúc thanh ghi, giao tiếp I2C và cách định địa chỉ (0x68) của cảm biến GY-521 MPU6050. Tác giả hướng dẫn cách tính toán tốc độ lấy mẫu theo công thức $\text{Sample Rate} = \text{Gyroscope Output Rate} / (1 + \text{SMPLRT_DIV})$, chuyển đổi giá trị thô bằng bộ chia độ nhạy LSB Sensitivity, và thuật toán tính góc nghiêng kết hợp hiệu chuẩn điểm không tĩnh (offset).

CHƯƠNG III. XÂY DỰNG MÔ HÌNH ĐỘNG LỰC HỌC

Nội dung chương III thiết lập hệ phương trình toán học mô tả động lực học chuyển động không gian của Drone:

  • Xây dựng ma trận chuyển đổi tọa độ trực giao $R$ và ma trận chuyển đổi vận tốc góc $W_\eta$ giữa Inertial Frame và Body Frame.
  • Áp dụng phương trình Newton – Euler để biểu diễn gia tốc dài theo ba trục tọa độ không gian dưới tác động của véc-tơ trọng lực $g$ và tổng lực đẩy $T$.
  • Triển khai phương trình Euler – Lagrange thông qua động năng tịnh tiến, động năng quay và thế năng, thiết lập hệ phương trình vi phân mô tả mối quan hệ giữa các mô-men điều khiển ($\tau_\phi, \tau_\theta, \tau_\psi$), vận tốc góc của các cánh quạt và góc lệch tư thế của Quadcopter.

CHƯƠNG IV. SỬ DỤNG KIT OPEN SOURCE PX4

Tác giả trình bày tổng quan về hệ sinh thái mã nguồn mở PX4 Autopilot, bộ điều khiển chuyến bay 3DR Pixhawk và phần mềm trạm mặt đất QGroundControl. Chương này hướng dẫn chi tiết:

  • Quy tắc lắp đặt phần cứng: Đệm xốp chống rung cho Pixhawk, định vị trọng tâm, lắp đặt công tắc an toàn, loa báo (buzzer), module nguồn (PM) và module GPS hướng về phía trước cách xa nguồn nhiễu điện từ.
  • Các bước nạp firmware, thiết lập cấu hình ban đầu (số cell pin LiPo, cân bằng cảm biến la bàn và gia tốc).
  • Cấu trúc bản tin MAVLink và cách tích hợp thư viện MAVSDK-Python để gọi các hàm điều khiển (Arm, Takeoff, Land, Offboard, Telemetry).

CHƯƠNG V. THIẾT KẾ GIAO DIỆN ĐỒ HỌA NGƯỜI DÙNG ĐIỀU KHIỂN DRONE

Chương V tập trung vào việc hiện thực hóa phần mềm điều khiển:

  • Thiết lập môi trường giả lập SITL jMAVSim trên nền tảng Ubuntu (make px4_sitl_default jmavsim).
  • Xây dựng giao diện đồ họa bằng Python tkinter tích hợp đầy đủ các bảng điều khiển: chọn cổng mô phỏng/kết nối thực qua ttyUSB0, hiển thị trạng thái Arm/Disarm, Flight Mode, trạng thái tiếp đất, nút Kill Switch, điều khiển độ cao cất cánh, hạ cánh tại chỗ.
  • Lập trình chế độ bay Offboard sử dụng cú pháp bất đồng bộ (asyncio) để thực thi ba bài toán điều khiển: di chuyển theo khoảng cách tương đối (sử dụng thời gian bay và vận tốc đặt), bay đến tọa độ điểm trong hệ trục North-East-Down (NED), và bám quỹ đạo đường tròn tự động.

Kết quả và đóng góp

Kết quả thử nghiệm và mô phỏng

Thông qua môi trường giả lập jMAVSim kết hợp giao diện phần mềm tự xây dựng, tác giả đã thu được các kết quả thực nghiệm sau:

  1. Kiểm soát cất/hạ cánh và chuyển động tương đối: Điều khiển Drone cất cánh đạt cao độ đặt trước, thực hiện chuỗi chuyển động dạng hình vuông: Tiến $\rightarrow$ Sang phải $\rightarrow$ Lùi $\rightarrow$ Sang trái với quãng đường mỗi cạnh 10m (tính toán dựa trên công thức $S = v \cdot t$ và trễ bất đồng bộ asyncio.sleep(t)). Thiết bị hoàn thành chu trình và quay trở về vị trí xuất phát với sai số nhỏ.
  2. Điều khiển bám điểm trong hệ tọa độ NED: Nạp chuỗi tọa độ liên tiếp $(50, 0, 5) \rightarrow (50, 25, 5) \rightarrow (0, 0, 5)$ qua hàm set_position_ned(). Drone phản hồi chính xác, chuyển động mượt mà giữa các điểm mốc, độ quá điều chỉnh ghi nhận ở mức không đáng kể.
  3. Điều khiển bám quỹ đạo hình tròn: Thiết lập phương trình quỹ đạo tham số $x = R \cdot \sin(2\pi f t)$, $y = R \cdot \cos(2\pi f t)$ với chu kỳ đặt $T = 20\text{s}$ ($f = 0.05\text{Hz}$) và bán kính $R = 10\text{m}$. Drone duy trì cao độ ổn định và bám sát biên dạng đường tròn đặt trước. Tần số truyền tọa độ được xác nhận là yếu tố ảnh hưởng trực tiếp đến độ mượt của quỹ đạo và vận tốc di chuyển.

Đóng góp kỹ thuật của đề tài

  • Hệ thống hóa đầy đủ cơ sở toán học động lực học Quadcopter từ hai hướng tiếp cận Newton – Euler và Euler – Lagrange làm nền tảng cho việc thiết kế thuật toán điều khiển.
  • Xây dựng thành công quy trình tích hợp hoàn chỉnh từ phần cứng (Pixhawk, BLDC, ESC, MPU6050) đến phần mềm trung gian (MAVLink/MAVSDK) và giao diện điều khiển trạm mặt đất độc lập bằng Python.
  • Ứng dụng mô hình lập trình bất đồng bộ (asyncio) vào bài toán điều khiển bay thời gian thực, giúp giảm thiểu độ trễ và tránh xung đột giao diện khi truyền nhận dữ liệu telemetry.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung được trình bày trong báo cáo, đề tài còn tồn tại một số hạn chế:

  • Thuật toán điều khiển chuyển động tương đối dựa trên ước lượng quãng đường $S = v \cdot t$ và hàm trễ thời gian asyncio.sleep() mang tính chất vòng hở do chưa tích hợp cảm biến đo vị trí tương đối thực tế (như Optical Flow hay định vị cục bộ chính xác cao).
  • Việc thử nghiệm quỹ đạo phức tạp và chế độ Offboard chủ yếu được đánh giá trên môi trường mô phỏng SITL (jMAVSim), chưa có số liệu đo đạc thực nghiệm ngoài trời khi chịu tác động của gió và nhiễu môi trường thực.
  • Sử dụng firmware chuẩn của PX4 giúp đơn giản hóa việc vận hành nhưng thông số mô hình toán học trong firmware chưa được tối ưu hóa hoàn toàn theo từng đặc tính vật lý riêng biệt của khung cơ khí thực tế.

Hướng mở rộng nghiên cứu tiếp theo:

  • Tích hợp cảm biến định vị vị trí tương đối và các thuật toán thị giác máy tính để hỗ trợ tránh vật cản tự động.
  • Tiến hành thực nghiệm bay ngoài thực địa trên kit phần cứng thực để hiệu chỉnh thông số điều khiển PID và kiểm chứng độ bền vững của thuật toán khi có nhiễu gió.

Giá trị tham khảo

Tài liệu là nguồn tham khảo hữu ích cho sinh viên, học viên và kỹ sư thuộc các ngành:

  • Kỹ thuật Điều khiển và Tự động hóa: Tham khảo phương pháp xây dựng mô hình toán động lực học 6 bậc tự do (Newton – Euler, Euler – Lagrange) và nguyên lý điều khiển cân bằng Quadcopter.
  • Kỹ thuật Cơ điện tử / Điện tử - Viễn thông: Tham khảo sơ đồ phối ghép phần cứng, cấu hình ESC, giao tiếp cảm biến I2C (MPU6050) và lắp ráp bộ điều khiển bay Pixhawk chuẩn công nghiệp.
  • Kỹ thuật Phần mềm / Công nghệ Thông tin: Tham khảo mã nguồn cấu trúc điều khiển bất đồng bộ bằng Python (async/await), cách giao tiếp với Drone qua SDK mã nguồn mở (MAVSDK-Python) và phương pháp lập trình GUI với thư viện tkinter.

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

1. Động cơ và cánh quạt được lựa chọn trong đồ án có thông số kỹ thuật như thế nào?
Đồ án sử dụng động cơ không chổi than BLDC MT2204 – 2300KV kết hợp với bộ cánh quạt 6045 (đường kính 6 inch), chia thành 2 cặp cánh quay thuận và quay nghịch. Tốc độ quay của động cơ khi không tải được tính theo công thức $RPM = KV \times V$.

2. Làm thế nào để điều khiển và hiệu chuẩn dải bướm ga cho bộ điều khiển tốc độ động cơ (ESC)?
Tác giả sử dụng bộ điều khiển ESC 12AE nhận xung điều khiển PPM tần số 50/60Hz với độ rộng xung từ 1ms (động cơ dừng) đến 2ms (tốc độ tối đa). Quy trình hiệu chuẩn dải bướm ga thực hiện bằng cách: kéo bướm ga lên mức cực đại (max) $\rightarrow$ cấp nguồn pin cho ESC và chờ 2 giây để nhận tín hiệu beep xác nhận $\rightarrow$ kéo bướm ga về mức nhỏ nhất (min) để xác nhận số cell pin và lưu dải điều khiển.

3. Tại sao cảm biến MPU6050 cần phải thực hiện bước hiệu chuẩn độ lệch (offset calibration)?
Khi đặt cảm biến đứng yên, các giá trị tốc độ góc trục quay của con quay hồi chuyển ($\omega_x, \omega_y, \omega_z$) thường không bằng 0 do tồn tại nhiễu tĩnh và sai số phần cứng. Do đó, cần giữ yên cảm biến, đọc giá trị hàng trăm lần liên tiếp để tính giá trị trung bình làm offset, sau đó trừ giá trị offset này vào mỗi lần đọc dữ liệu thực tế.

4. Chế độ bay nào được sử dụng trong giao diện GUI để điều khiển Drone bay theo tọa độ và quỹ đạo?
Giao diện người dùng sử dụng chế độ bay Offboard. Chế độ này cho phép trạm điều khiển mặt đất gửi trực tiếp các lệnh vị trí, vận tốc hoặc quỹ đạo (như hệ tọa độ North-East-Down hoặc Body Frame) tới bộ điều khiển bay Pixhawk thông qua các hàm gọi từ thư viện MAVSDK.

5. Lập trình bất đồng bộ (async/await) đóng vai trò gì trong phần mềm điều khiển Drone bằng Python?
Các hàm điều khiển và nhận dữ liệu trong thư viện MAVSDK-Python hoạt động theo cơ chế Coroutine bất đồng bộ. Việc sử dụng cú pháp async/await và asyncio giúp phần mềm thực hiện các lệnh điều khiển và chờ phản hồi từ thiết bị bay trong nền mà không làm khóa (block) luồng giao diện chính của thư viện tkinter, đảm bảo giao diện luôn phản hồi mượt mà.


Kết luận

Báo cáo Đồ án II của tác giả Lê Thiên Tuyến đã hoàn thành các mục tiêu nghiên cứu về thiết kế hệ thống và điều khiển Quadcopter. Đề tài đã hệ thống hóa cơ sở lý thuyết động lực học, hiện thực hóa cấu hình phần cứng với bộ điều khiển Pixhawk, và xây dựng thành công phần mềm trạm mặt đất trên nền tảng Python MAVSDK kết hợp giao diện đồ họa Tkinter. Kết quả thử nghiệm trên môi trường giả lập SITL jMAVSim chứng minh tính đúng đắn của giải thuật điều khiển bám điểm và bám quỹ đạo, tạo nền tảng thuận lợi cho các nghiên cứu thực nghiệm bay nâng cao tiếp theo.