Giới thiệu dự án

Sự bùng nổ của công nghệ phương tiện bay không người lái (Unmanned Aerial Vehicle - UAV) đã mở ra cuộc cách mạng trong các ngành giám sát an ninh, cứu hộ cứu nạn, nông nghiệp chính xác và logistics đô thị. Theo báo cáo thị trường toàn cầu, ngành công nghiệp UAV đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 19.8% giai đoạn 2021–2028. Tuy nhiên, phần lớn các hệ thống thương mại hiện nay vẫn phụ thuộc chặt chẽ vào thao tác thủ công của người điều khiển hoặc các hệ thống định vị vệ tinh GPS đơn thuần, vốn mất độ tin cậy trong môi trường bị che khuất hoặc khi cần bám sát các mục tiêu di động phi tuyến tính.

Đồ án tốt nghiệp ngành Công nghệ Kỹ thuật Cơ điện tử tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE) với đề tài "Nghiên cứu và điều khiển drone 4 cánh bám theo đối tượng" được thực hiện nhằm giải quyết bài toán tự động hóa hoàn toàn chu trình nhận diện, định vị và dẫn đường cho quadcopter bám theo đối tượng người trong thời gian thực.

                  +-----------------------------------+
                  |  Cảm biến hình ảnh IMX219 (8MP)   |
                  +-----------------+-----------------+
                                    | MIPI CSI-2
                                    v
                  +-----------------------------------+
                  |   NVIDIA Jetson Nano (AI Edge)    |
                  |  - Jetson Inference / TensorRT    |
                  |  - Thuật toán ước lượng tọa độ 3D |
                  +-----------------+-----------------+
                                    | UART / MAVLink
                                    v
+-----------------+       +-----------------------------------+
|  TF-Luna LiDAR  | ----> |      Pixhawk 6C (STM32H743)       |
|  & GPS U-blox   |       |  - PX4 Autopilot Firmware         |
+-----------------+       |  - Bộ điều khiển kép Cấp cao/Thấp |
                          +-----------------+-----------------+
                                    | PWM Signals
                                    v
                          +-----------------------------------+
                          | 4x ESC 40A + Động cơ BLDC + Cánh  |
                          +-----------------------------------+

Mục tiêu cụ thể của dự án

  1. Thiết kế phần cứng tích hợp: Xây dựng khung quadcopter F450 hoàn chỉnh tích hợp máy tính nhúng AI NVIDIA Jetson Nano, mạch điều khiển bay Pixhawk 6C, cảm biến khoảng cách Benawake TF-Luna và camera góc rộng IMX219.
  2. Xây dựng mô hình toán và điều khiển: Thiết lập phương trình động học 6 bậc tự do (6-DoF), ma trận phân bố tín hiệu điều khiển (Control Allocation) và bộ điều khiển phân cấp kết hợp thuật toán P-P (Proportional-Proportional) / PID.
  3. Phát triển thị giác máy tính biên: Ứng dụng mạng học sâu (Deep Learning) tối ưu hóa qua Jetson Inference để nhận diện và theo dõi đối tượng người theo thời gian thực với độ trễ tối thiểu.
  4. Mô phỏng và thực nghiệm: Thực hiện kiểm chứng thuật toán qua mô phỏng SITL (Software-in-the-Loop), HITL (Hardware-in-the-Loop) trên Gazebo và thử nghiệm bay thực địa.

Phạm vi và giới hạn

  • Phạm vi: Điều khiển Quadcopter bám theo một đối tượng người di chuyển với vận tốc trung bình ($0.5 - 1.5\text{ m/s}$) trong không gian thoáng đãng, duy trì độ cao an toàn bằng LiDAR và thị giác máy tính.
  • Giới hạn: Hệ thống thử nghiệm trong điều kiện ánh sáng tự nhiên đầy đủ, gió cấp 2-3, chưa tích hợp thuật toán định vị quang học (Optical Flow) khi mất hoàn toàn tín hiệu định vị toàn cầu GPS.

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

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

Tiêu chí so sánh Hệ thống thương mại đóng (DJI Phantom 4 / Mavic 3) Hệ thống DIY mã nguồn mở tiêu chuẩn Giải pháp của đồ án (Jetson Nano + Pixhawk 6C)
Tính linh hoạt kiến trúc Rất thấp (Hệ sinh thái đóng, không can thiệp sâu thuật toán) Trung bình (Tùy biến được PID, thiếu xử lý AI biên) Rất cao (Tự do tùy biến AI model, PX4 firmware và Control Allocation)
Xử lý thị giác máy tính Tích hợp sẵn qua chip VPU độc quyền Phụ thuộc máy tính trạm mặt đất qua truyền hình ảnh Xử lý Onboard với 128 nhân GPU Maxwell, giảm độ trễ truyền dữ liệu
Khả năng mở rộng cảm biến Hạn chế theo cổng độc quyền Hỗ trợ I2C/UART/PWM cơ bản Đa dạng kết nối: MIPI CSI-2, UART MAVLink, I2C, TF-Luna LiDAR
Chi phí triển khai R&D Rất cao ($1,500 - $3,000+) Thấp ($300 - $500) Hợp lý ($600 - $800) cho nền tảng nghiên cứu thực thụ

Phân tích yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Giữ cân bằng 6-DoF ổn định; nhận dạng đối tượng người qua camera thời gian thực ($\ge 20\text{ FPS}$); thuật toán tự động bám theo đối tượng trên trục $X, Y, Z, \text{Yaw}$; cơ chế Failsafe ngắt động cơ khi mất kết nối.
  • Should have (Nên có): Đo cao chính xác bằng cảm biến LiDAR TF-Luna thay vì chỉ dùng áp kế Barometer; đồng bộ hóa dữ liệu telemetry qua QGroundControl.
  • Could have (Có thể mở rộng): Tránh vật cản động thời gian thực bằng Radar/LiDAR 360 độ; ghi lại quỹ đạo bay phục vụ phân tích dữ liệu ngoại tuyến.
  • Won't have (Chưa thực hiện đợt này): Khả năng hoạt động dưới trời mưa lớn hoặc bám đuổi mục tiêu tốc độ cao vượt quá $5\text{ m/s}$.

Thiết kế hệ thống

Kiến trúc hệ thống được phân tầng thành hai cấp điều khiển rõ rệt:

[Camera IMX219] -> [Jetson Nano AI: Bounding Box (x, y, w, h)]
                          |
                          v
         [Sai số mục tiêu e_x, e_y, e_z, e_yaw]
                          |
                          v
[High-Level Control: Bộ điều khiển P-P Vị trí & Độ cao]
                          |
                          v (Setpoints: Roll, Pitch, Thrust, Yaw rate)
[Low-Level Control: Pixhawk 6C STM32H743 running PX4]
                          |
                          v (Bộ điều khiển Góc & Tốc độ góc)
       [Control Allocation: Ma trận phân bố PWM]
                          |
                          v
               [4x ESC & BLDC Motors]

Ngăn xếp công nghệ (Technology Stack)

  • Bộ điều khiển bay (Flight Controller): Pixhawk 6C nền tảng ARM Cortex-M7 STM32H743 tốc độ 480 MHz, 2MB Flash, 1MB RAM, tích hợp cảm biến IMU chống rung đa tầng dự phòng.
  • Hệ điều hành nhúng & AI: Ubuntu 18.04 LTS / JetPack SDK 4.6 trên NVIDIA Jetson Nano; framework Jetson-Inference tối ưu hóa mạng nơ-ron qua NVIDIA TensorRT.
  • Phần mềm điều khiển bay: PX4 Autopilot Firmware v1.13+.
  • Phần mềm giám sát trạm mặt đất (GCS): QGroundControl v4.2+.
  • Giao thức liên lạc: MAVLink Protocol v2.0 truyền tải qua cổng UART tốc độ $921600\text{ bps}$.
  • Môi trường mô phỏng: Gazebo 11 tích hợp công cụ mô phỏng phần cứng trong vòng lặp HITL.

Methodology

Đồ án áp dụng phương pháp nghiên cứu kỹ thuật tích hợp theo mô hình chữ V (V-Model):

  1. Giai đoạn 1 (Lý thuyết & Mô hình hóa): Thiết lập phương trình vi phân phi tuyến chuyển động của quadcopter, tính toán lực nâng và mô-men xoắn theo tín hiệu PWM.
  2. Giai đoạn 2 (Mô phỏng số SITL/HITL): Xây dựng không gian mô phỏng trên Gazebo, thử nghiệm giải thuật bám mục tiêu ảo trước khi nạp vào phần cứng thật nhằm giảm thiểu rủi ro va chạm.
  3. Giai đoạn 3 (Tích hợp phần cứng): Gia công tấm đế F450, lắp đặt giảm chấn cho Pixhawk 6C, cân chỉnh tải trọng tâm (Center of Gravity - CoG) và đi dây chống nhiễu điện từ (EMI).
  4. Giai đoạn 4 (Thực nghiệm & Tinh chỉnh PID): Thử nghiệm bay giữ vị trí (Position Hold), tinh chỉnh hệ số $K_p, K_i, K_d$ cho các vòng điều khiển góc và bám đối tượng thực địa.

Implementation và kết quả

Development process

1. Mô hình toán học và phân bổ bộ điều khiển (Control Allocation)

Phương trình động học chuyển động tịnh tiến và quay của quadcopter được biểu diễn trong hệ quy chiếu vật thể:

$$\begin{cases} \ddot{x} = -\frac{U_1}{m} (\cos\phi \sin\theta \cos\psi + \sin\phi \sin\psi) \ \ddot{y} = -\frac{U_1}{m} (\cos\phi \sin\theta \sin\psi - \sin\phi \cos\psi) \ \ddot{z} = g - \frac{U_1}{m} (\cos\phi \cos\theta) \end{cases}$$

$$\begin{cases} \ddot{\phi} = \dot{\theta}\dot{\psi}\left(\frac{I_y - I_z}{I_x}\right) + \frac{U_2}{I_x} \ \ddot{\theta} = \dot{\phi}\dot{\psi}\left(\frac{I_z - I_x}{I_y}\right) + \frac{U_3}{I_y} \ \ddot{\psi} = \dot{\phi}\dot{\theta}\left(\frac{I_x - I_y}{I_z}\right) + \frac{U_4}{I_z} \end{cases}$$

Trong đó:

  • $U_1 = F_1 + F_2 + F_3 + F_4$: Tổng lực đẩy dọc trục $Z_B$.
  • $U_2 = (F_2 + F_3 - F_1 - F_4) \cdot l$: Mô-men góc Roll ($\phi$).
  • $U_3 = (F_1 + F_2 - F_3 - F_4) \cdot l$: Mô-men góc Pitch ($\theta$).
  • $U_4 = M_1 + M_3 - M_2 - M_4$: Mô-men góc Yaw ($\psi$).

Ma trận phân bổ tín hiệu điều khiển từ tín hiệu tổng hợp $(\delta_{th}, \delta_{roll}, \delta_{pitch}, \delta_{yaw})$ xuống 4 kênh động cơ PWM $(u_1, u_2, u_3, u_4)$ theo cấu hình Quad-X:

$$\begin{bmatrix} u_1 \ u_2 \ u_3 \ u_4 \end{bmatrix} = \begin{bmatrix} u_0 \ u_0 \ u_0 \ u_0 \end{bmatrix} + \begin{bmatrix} 1 & -1 & 1 & -1 \ 1 & 1 & -1 & 1 \ 1 & 1 & 1 & -1 \ 1 & -1 & -1 & -1 \end{bmatrix} \begin{bmatrix} \delta_{th} \ \delta_{roll} \ \delta_{pitch} \ \delta_{yaw} \end{bmatrix}$$

2. Pipeline xử lý hình ảnh và điều khiển bám mục tiêu

Thuật toán phát hiện người chạy trên Jetson Nano sử dụng mô hình học sâu SSD-Mobilenet/YOLO tối ưu qua TensorRT, trích xuất tọa độ tâm hộp bao mục tiêu $(x_{bbox}, y_{bbox})$ và kích thước diện tích $(S_{bbox} = w \cdot h)$:

# Trích đoạn mã nguồn xử lý sai số và phát lệnh điều khiển qua MAVLink
import jetson.inference
import jetson.utils

net = jetson.inference.detectNet("ssd-mobilenet-v2", threshold=0.5)
camera = jetson.utils.videoSource("csi://0")

IMG_CENTER_X = 640 / 2
IMG_CENTER_Y = 480 / 2
TARGET_AREA = 35000.0  # Diện tích bounding box mục tiêu để giữ cự ly ~2 mét

while True:
    img = camera.Capture()
    detections = net.Detect(img)
    
    for det in detections:
        if det.ClassID == 1:  # ID class "person"
            # Tính toán sai số vị trí tâm
            error_x = det.Center[0] - IMG_CENTER_X
            error_y = det.Center[1] - IMG_CENTER_Y
            error_dist = TARGET_AREA - det.Area
            
            # Thuật toán điều khiển P-P tạo vận tốc setpoint
            vx_cmd = Kp_dist * error_dist
            yaw_rate_cmd = Kp_yaw * error_x
            vz_cmd = -Kp_alt * error_y
            
            # Gửi gói tin MAVLink SET_POSITION_TARGET_LOCAL_NED tới Pixhawk 6C
            send_velocity_command(vx_cmd, 0.0, vz_cmd, yaw_rate_cmd)
            break

Testing và validation

Quá trình kiểm thử được tiến hành qua 3 giai đoạn độc lập:

  1. Mô phỏng SITL/HITL với Gazebo: Kiểm tra tính hội tụ của bộ điều khiển vị trí khi mục tiêu di chuyển theo quỹ đạo đường tròn bán kính $R=3\text{ m}$ và đường thẳng dích dắc. Độ vọt lố (Overshoot) góc Roll/Pitch đạt dưới $4.5%$.
  2. Kiểm tra độ trễ cảm biến (Latency Benchmark):
    • Camera Capture -> Deep Learning Inference (TensorRT FP16): $28.5\text{ ms}$ (~35 FPS).
    • Control Calculation -> MAVLink Transmission: $3.2\text{ ms}$.
    • Flight Controller Loop (Attitude Rate PID): $400\text{ Hz}$ ($2.5\text{ ms}$).
    • Tổng độ trễ toàn vòng (End-to-End Latency): $< 35\text{ ms}$, đáp ứng yêu cầu bám mục tiêu thời gian thực.
  3. Thử nghiệm bay thực tế: Tiến hành tại sân thể thao với đối tượng người di chuyển với tốc độ biến thiên từ $0.5\text{ m/s}$ đến $1.2\text{ m/s}$.

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

Thông số đánh giá Chỉ tiêu thiết kế ban đầu Kết quả thực nghiệm thực tế Trạng thái
Tốc độ xử lý nhận diện $\ge 20\text{ FPS}$ $28 - 32\text{ FPS}$ (SSD-Mobilenet trên Jetson Nano) Đạt vượt mức
Sai số duy trì độ cao ($Z$) $\le \pm 0.3\text{ m}$ $\pm 0.12\text{ m}$ (Nhờ hỗ trợ từ TF-Luna LiDAR) Đạt
Sai số góc xoay Yaw bám mục tiêu $\le \pm 5^\circ$ $\pm 2.8^\circ$ trong điều kiện gió nhẹ Đạt
Khoảng cách bám an toàn $1.5 - 3.0\text{ m}$ Duy trì ổn định $2.0 \pm 0.25\text{ m}$ Đạt
Thời gian bay duy trì liên tục $\ge 10\text{ phút}$ $12.5\text{ phút}$ với pin LiPo 4S 4500mAh Đạt

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

  1. Kiến trúc tính toán biên độc lập (Edge-AI Co-processing): Thay vì truyền video về máy tính mặt đất gây trễ đường truyền RF, hệ thống nhúng trực tiếp NVIDIA Jetson Nano lên khung F450, loại bỏ hoàn toàn hiện tượng rớt khung hình (packet drop) do nhiễu sóng vô tuyến.
  2. Tích hợp cảm biến độ cao chính xác cao Benawake TF-Luna: Khắc phục nhược điểm trôi độ cao do biến thiên áp suất khí quyển của cảm biến Barometer thông thường, giúp drone giữ khoảng cách mặt đất ổn định ngay cả khi bề mặt phản xạ thay đổi.
  3. Hệ thống điều khiển phân tầng tối ưu hóa cho PX4: Tách biệt rõ ràng vòng lặp điều khiển vận tốc/vị trí (P-P controller chạy trên Jetson Nano) và vòng lặp cân bằng trạng thái cực nhanh (Rate PID $400\text{ Hz}$ trên STM32H743 của Pixhawk 6C), tối đa hóa độ an toàn bay.
  4. Làm chủ công nghệ trong nước: Đồ án không sử dụng các module thương mại có sẵn chức năng bám đối tượng mà tự thiết kế từ thuật toán động học, mô phỏng HITL đến tích hợp phần cứng thực tế, tạo tài liệu tham khảo giá trị cho các nghiên cứu UAV tự hành tiếp theo.

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

+-----------------------------------------------------------------------+
|                       LĨNH VỰC ỨNG DỤNG THỰC TẾ                       |
+-------------------+-------------------------------+-------------------+
|                   |                               |                   |
v                   v                               v
[An ninh - Tuần tra]      [Tìm kiếm - Cứu hộ]             [Điện ảnh & Thể thao]
- Tự động bám theo đối    - Dẫn đường cho người bị nạn    - Quay phim góc nhìn
  tượng khả nghi            khỏi khu vực nguy hiểm          thứ ba tự động
- Tuần tra hành lang      - Vận chuyển thiết bị y tế      - Tracking vận động
  biên giới / khu công      theo vết di chuyển của          viên theo thời gian
  nghiệp tự động            đội cứu hộ                      thực

Chiến lược triển khai và bài toán kinh tế

  • Chi phí chế tạo phần cứng: Xấp xỉ $18.500.000\text{ VNĐ}$ (gồm khung F450, động cơ BLDC, ESC 40A, Pixhawk 6C, Jetson Nano 4GB, LiDAR TF-Luna, Pin LiPo, Camera IMX219).
  • So sánh hiệu quả đầu tư: So với việc trang bị các dòng drone chuyên dụng như DJI Inspire hoặc Matrice tích hợp camera AI (giá từ $80.000.000 - $150.000.000\text{ VNĐ}$), giải pháp tự thiết kế giúp tiết kiệm hơn $75%$ chi phí, đồng thời cho phép can thiệp sâu vào mã nguồn để tùy biến cho từng nhiệm vụ đặc thù trong công nghiệp và quốc phòng.

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

Hạn chế hiện tại

  • Thời lượng bay bị giới hạn do trọng lượng của máy tính nhúng Jetson Nano và cụm tản nhiệt (tổng khối lượng cất cánh cự ly gần $1.6\text{ kg}$).
  • Mô hình nhận diện hình ảnh có thể bị mất dấu (Lost Target) khi mục tiêu bị che khuất hoàn toàn (Occlusion) quá 3 giây hoặc trong môi trường thiếu sáng nghiêm trọng.

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

  • Nâng cấp thuật toán bám: Tích hợp bộ lọc Kalman mở rộng (EKF) kết hợp thuật toán DeepSORT để duy trì định danh mục tiêu khi bị che khuất tạm thời.
  • Tối ưu hóa phần cứng: Chuyển đổi khung F450 sang vật liệu sợi carbon đúc nguyên khối (Carbon Fiber Unibody) nhằm giảm $30%$ tự trọng; nâng cấp lên dòng NVIDIA Jetson Orin Nano để tăng gấp 5 lần hiệu năng tính toán AI.
  • Bổ sung cảm biến tránh va chạm: Tích hợp cụm cảm biến LiDAR 2D/3D quét vòng tròn phục vụ lập bản đồ và tránh vật cản động thời gian thực (SLAM).

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

  • Sinh viên & Nghiên cứu sinh ngành Cơ điện tử / Tự động hóa: Tài liệu mẫu hoàn chỉnh về mô hình hóa toán học 6-DoF, ma trận Control Allocation và quy trình thực hiện mô phỏng HITL với PX4/Gazebo.
  • Kỹ sư phát triển Robot & Drone: Kiến trúc mẫu về giao tiếp tốc độ cao MAVLink giữa máy tính nhúng Linux (Companion Computer) và vi điều khiển thời gian thực (Flight Controller).
  • Doanh nghiệp phát triển giải pháp UAV nội địa: Nền tảng tham khảo để chế tạo các dòng máy bay không người lái phục vụ kiểm tra lưới điện, giám sát nông nghiệp và an ninh tự hành với chi phí tối ưu.

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

1. Yêu cầu cấu hình tối thiểu để triển khai phần mềm điều khiển trên máy tính nhúng là gì?

Máy tính nhúng cần tối thiểu 4 lõi CPU ARM 64-bit, GPU tương thích CUDA (tối thiểu 128 nhân Maxwell như Jetson Nano hoặc Jetson Xavier NX), RAM 4GB LPDDR4, hỗ trợ giao tiếp camera MIPI CSI-2 và cổng UART tương thích logic $3.3\text{V}$ để kết nối MAVLink với Pixhawk.

2. Khi mục tiêu di chuyển nhanh hoặc đổi hướng đột ngột, drone xử lý thế nào để không mất dấu?

Hệ thống sử dụng bộ điều khiển phân cấp: sai số góc xoay được ưu tiên xử lý qua lệnh vận tốc góc $\dot{\psi}$ (Yaw Rate) gửi về Pixhawk ở tần số cao, kết hợp camera góc rộng $160^\circ$ FoV giúp mục tiêu luôn nằm trong trường nhìn (Field of View) ngay cả khi đổi hướng gắt.

3. Làm thế nào để đảm bảo an toàn nếu máy tính nhúng AI bị treo trong lúc bay?

Firmware PX4 trên Pixhawk 6C độc lập hoàn toàn với Jetson Nano. Nếu mất luồng dữ liệu MAVLink quá $1000\text{ ms}$, cơ chế Failsafe của PX4 sẽ tự động chuyển sang chế độ Hold (treo lơ lửng tại chỗ bằng GPS/LiDAR) hoặc Return-to-Launch (RTL - tự bay về điểm xuất phát).

4. Tại sao cần kết hợp cả cảm biến LiDAR TF-Luna và Barometer để giữ độ cao?

Barometer đo áp suất khí quyển dễ bị nhiễu do gió luồng từ cánh quạt (Ground Effect) và biến thiên nhiệt độ. LiDAR Benawake TF-Luna sử dụng chùm tia hồng ngoại đo khoảng cách trực tiếp tới mặt đất với tần số $100\text{ Hz}$, độ chính xác đến từng centimet, giúp triệt tiêu hoàn toàn hiện tượng rung giật độ cao khi bay thấp.

5. Chi phí và thời gian triển khai mô hình từ đầu mất bao lâu?

Chi phí linh kiện dao động từ 18 đến 22 triệu VNĐ. Thời gian triển khai chuẩn từ khâu thiết kế, mô phỏng số SITL/HITL đến bay thử nghiệm thực địa kéo dài từ 8 đến 12 tuần làm việc cho nhóm kỹ sư 3 người.


Kết luận

Đề tài "Nghiên cứu và điều khiển drone 4 cánh bám theo đối tượng" đã chứng minh tính khả thi và hiệu quả vượt trội của việc kết hợp trí tuệ nhân tạo biên (Edge-AI) với các bộ điều khiển tự hành mã nguồn mở chuẩn công nghiệp. Nhóm nghiên cứu đã làm chủ toàn diện chuỗi công nghệ: từ giải tích cơ sở toán học động lực học bay, giải thuật phân bổ điều khiển, mô phỏng HITL trên Gazebo cho đến chế tạo mô hình thực nghiệm F450 bám mục tiêu thời gian thực với độ chính xác cao. Kết quả này không chỉ đóng góp một giải pháp kỹ thuật cụ thể mà còn đặt nền móng vững chắc cho việc phát triển các thiết bị bay không người lái tự hành thông minh "Make in Vietnam" trong tương lai.