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

Khóa luận tốt nghiệp ngành Kỹ thuật Máy tính của tác giả Lê Xuân Nguyên (Trường Đại học Bách Khoa – Đại học Quốc gia TP.HCM, thực hiện năm 2022) tập trung vào việc thiết kế và xây dựng phương tiện mặt nước không người lái (Unmanned Surface Vehicle - USV) phục vụ công tác giám sát môi trường vùng đất ngập nước (wetland monitoring).

Bối cảnh thực tiễn

Chất lượng nguồn nước mặt tại các hệ sinh thái đất ngập nước, điển hình như khu vực Đồng bằng sông Cửu Long và hệ thống sông Vàm Cỏ ở miền Nam Việt Nam, đang chịu nhiều ảnh hưởng tiêu cực từ thiên tai và hoạt động nhân sinh (nhiễm phèn, xâm nhập mặn, tràn dầu, rác thải nhựa). Các phương pháp quan trắc truyền thống do con người trực tiếp lấy mẫu gặp nhiều hạn chế về tần suất, chi phí và độ phủ không gian. Việc ứng dụng các hệ thống tự hành (USV/ASV) giúp tự động hóa quá trình thu thập dữ liệu thủy văn và hỗ trợ kỹ thuật dựng hình từ ảnh (Structure from Motion - SfM) để theo dõi các sinh cảnh ngập nước nông (<20 m).

Tuy nhiên, các hệ thống USV thương mại hiện có (như Environmental Sample Processor, AutoNaut) có chi phí đắt đỏ, kích thước cồng kềnh, sử dụng phần cứng đóng kín khó tùy biến cảm biến và chu kỳ hỗ trợ linh kiện ngắn (khoảng 3–4 năm). Ngoài ra, các mô hình USV mã nguồn mở truyền thống thường vận hành các kênh điều khiển (Radio Control - RC), truyền nhận tham số đo từ xa (Telemetry/Datalink) và truyền luồng video (Video Streaming) trên các đường truyền vô tuyến vật lý riêng biệt, gây phức tạp về phần cứng và cấu hình truyền thông.

Nhiệm vụ và mục tiêu nghiên cứu

Đề tài xác định 5 nhiệm vụ kỹ thuật và câu hỏi định hướng:

  1. Nghiên cứu giao thức MAVLink (Micro Air Vehicle Communication Protocol) và cấu trúc phân tầng của nền tảng mã nguồn mở ArduPilot (phân hệ ArduPilot Rover/APMrover2).
  2. Xây dựng mô hình kết nối tích hợp giữa bo mạch điều khiển bay (Flight Controller - FC) với máy tính nhúng đồng hành (Companion Computer - Raspberry Pi 4) và trạm điều khiển mặt đất (Ground Control Station - GCS).
  3. Kết nối bộ điều khiển vô tuyến (Radio Controller - RC) trực tiếp vào trạm GCS và giải mã tín hiệu để truyền dữ liệu điều khiển qua mạng.
  4. Hợp nhất ba luồng tín hiệu độc lập gồm: tín hiệu điều khiển RC, dữ liệu đo từ xa (Datalink/Telemetry) và luồng video trực tiếp (Camera Streaming) vào một phương thức kết nối duy nhất sử dụng giao thức UDP qua sóng mạng không dây.
  5. Thu thập, phân tích dữ liệu cảm biến định vị (GPS, la bàn) và trạng thái hệ thống để truyền về trạm mặt đất, hỗ trợ cả hai chế độ điều khiển thủ công và tự hành hoàn toàn theo lộ trình.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Kiến trúc hệ thống phần cứng và phần mềm của phương tiện mặt nước không người lái (USV); giao thức truyền thông MAVLink2; hệ điều hành nhúng và firmware điều khiển tự động ArduPilot.
  • Phạm vi không gian và công nghệ: Ứng dụng trong môi trường nước nông, vùng đất ngập nước; giới hạn thử nghiệm trên bo mạch vi điều khiển kiến trúc STM32 (Mateksys H743-SLIM), máy tính nhúng Raspberry Pi 4 Model B, trạm phần mềm Mission Planner và ứng dụng GCS nền tảng web.
  • Thời gian thực hiện: Từ ngày 30/05/2022 đến ngày 30/09/2022 (bảo vệ vào tháng 10/2022).

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

Khung lý thuyết và mô hình công nghệ

  • Mô hình hệ thống tự hành USV: Khóa luận dựa trên lý thuyết cấu trúc phân hệ của phương tiện mặt nước tự hành, bao gồm 3 phân hệ chức năng tương hỗ: Phân hệ Dẫn đường (Guidance system - tạo và cập nhật quỹ đạo tối ưu), Phân hệ Định vị (Navigation system - xác định trạng thái vị trí, vận tốc dựa trên cảm biến GPS/IMU), và Phân hệ Điều khiển (Control system - sinh lực đẩy và mô-men quay từ động cơ/servo để bám quỹ đạo).
  • Cấu trúc phần mềm ArduPilot: Nền tảng điều khiển nhúng đa tầng viết bằng C++, thực thi đa luồng (multi-threaded), hoạt động theo mô hình hướng sự kiện (event-driven) với bộ lập lịch tác vụ (task scheduler) và lớp trừu tượng hóa phần cứng (Hardware Abstraction Layer - AP_HAL) nhằm tách biệt mã nguồn xe chuyên biệt (APMrover2, ArduCopter, ArduPlane) khỏi phần cứng vật lý.
  • Giao thức MAVLink2: Giao thức truyền thông nối tiếp định dạng nhị phân nhẹ, hỗ trợ đóng gói tin nhắn dạng common.xml và ardupilot.xml, quản lý định danh hệ thống (System ID: 255 cho GCS, 1 cho phương tiện) và thành phần (Component ID), cơ chế kiểm tra kết nối Heartbeat (tần số 1 Hz), truyền lệnh điều khiển có xác nhận (COMMAND-LONG, COMMAND-ACK) và cơ chế hủy lệnh (COMMAND-CANCEL).

Phương pháp nghiên cứu

  • Phương pháp tổng hợp và phân tích tài liệu: Khảo sát các công trình phát triển USV trên thế giới từ năm 1985 đến các hệ thống hiện đại năm 2020 để xác định các đặc trưng kiến trúc và lựa chọn cấu hình phần cứng phù hợp.
  • Phương pháp thiết kế và tích hợp hệ thống kỹ thuật: Thiết kế sơ đồ mạch ghép nối điện tử giữa Flight Controller, Companion Computer, GPS/La bàn, ESC, Servo và mạch nghịch đảo tín hiệu vô tuyến (Un-inverted board).
  • Phương pháp thực nghiệm và kiểm thử chức năng: Nạp firmware (flashing), cấu hình thông số tham số điều khiển (tuning parameters), đo kiểm tín hiệu nối tiếp UART, I2C, SPI, kiểm tra đóng gói dữ liệu UDP và đo lường độ trễ điều khiển thực tế.

Nguồn dữ liệu

Dữ liệu sử dụng trong nghiên cứu gồm mã nguồn mở ArduPilot (nhánh Rover), tài liệu kỹ thuật từ ArduPilot Organization, tập lệnh giao thức MAVLink v2.0, các thông số kỹ thuật phần cứng của dòng vi điều khiển STM32H743, máy tính nhúng Raspberry Pi 4 Model B và bộ phần mềm Mission Planner.


Thiết kế và triển khai hệ thống

Kiến trúc phần cứng và sơ đồ kết nối

Hệ thống phần cứng trên USV được thiết kế phân tầng rõ ràng giữa khối xử lý thuật toán chấp hành cấp thấp và khối truyền thông/tính toán nâng cao:

Khối chức năng Linh kiện / Thiết bị sử dụng Vai trò và giao tiếp
Bo mạch điều khiển bay (FC) Mateksys H743-SLIM (Vi xử lý STM32H743) Thực thi firmware ArduPilot Rover; đọc cảm biến IMU/GPS; xuất tín hiệu PWM điều khiển ESC và Servo lái; giao tiếp với máy tính nhúng qua cổng UART nối tiếp.
Máy tính đồng hành (Companion Computer) Raspberry Pi 4 Model B (Hệ điều hành Raspbian OS) Đóng vai trò cầu nối dữ liệu (Telemetry Relay) và bộ xử lý tín hiệu; truyền nhận gói tin MAVLink qua UART; thu và xử lý luồng video qua camera; kết nối mạng không dây tới GCS qua UDP.
Cảm biến định vị Module M8N GPS tích hợp La bàn số Cung cấp tọa độ địa lý, vận tốc di chuyển và hướng la bàn cho Flight Controller qua chuẩn giao tiếp UART và I2C.
Hệ thống truyền động Động cơ không chổi than, ESC (Electronic Speed Controller), Servo lái Nhận lệnh điều khiển lực đẩy và góc bẻ lái để vận hành thân tàu theo cơ cấu vi sai hoặc bánh lái.
Mạch xử lý tín hiệu RC Mạch giải mã tín hiệu nghịch đảo (Un-inverted board) Xử lý và chuẩn hóa dạng sóng tín hiệu Sbus ngược từ tay điều khiển RC để kết nối vào cổng giao tiếp nối tiếp của máy tính trạm GCS.

Kiến trúc hợp nhất truyền thông qua UDP

Thay vì sử dụng module truyền sóng không dây riêng biệt cho Telemetry (băng tần 433 MHz/915 MHz) và bộ thu phát RC chuyên dụng gắn trên phương tiện, hệ thống đề xuất giải pháp hợp nhất truyền thông:

  1. Tại trạm điều khiển mặt đất (GCS): Tay cầm điều khiển RC kết nối trực tiếp vào máy tính điều khiển mặt đất thông qua cổng chuyển đổi và mạch un-inverted board. Phần mềm tại GCS đọc kênh điều khiển từ RC, kết hợp với các lệnh điều hướng tự động trên Mission Planner hoặc giao diện web.
  2. Kênh truyền dẫn duy nhất: Toàn bộ tín hiệu điều khiển (Control inputs), dữ liệu trạng thái (Telemetry) và luồng hình ảnh trực tiếp (Live video stream) được đóng gói và gửi qua mạng Wi-Fi bằng giao thức UDP (User Datagram Protocol) giữa GCS và Raspberry Pi 4.
  3. Tại phương tiện (USV): Raspberry Pi tiếp nhận các gói tin UDP từ GCS, phân tách thành các lệnh MAVLink để chuyển xuống vi điều khiển Mateksys H743-SLIM qua UART, đồng thời gửi ngược dữ liệu telemetry và video nén về lại GCS.

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

Chương 1: Giới thiệu (Introduction)

Chương 1 trình bày tổng quan về xu hướng phát triển phương tiện tự hành không người lái trong môi trường nước, sự cần thiết của các thiết bị giám sát mặt nước tự động đối với bài toán bảo vệ môi trường thủy sinh. Tác giả nêu rõ động lực nghiên cứu từ thực trạng ô nhiễm nguồn nước mặt tại khu vực Đồng bằng sông Cửu Long và sông Vàm Cỏ, phân tích các giải pháp hiện hành và đưa ra phạm vi nghiên cứu, các mục tiêu kỹ thuật cụ thể cùng bố cục của toàn bộ bản luận văn.

Chương 2: Các công trình liên quan và khảo sát thực nghiệm (Related Work)

Chương này tổng kết lịch sử phát triển của các phương tiện mặt nước không người lái trên thế giới từ những năm 1985 đến 2014, phân loại mục đích sử dụng từ nghiên cứu khoa học, trinh sát quân sự đến quan trắc môi trường (với các mô hình tiêu biểu như ARTEMIS, ACES, SCOUT, WASP, SESAMO, Springer...).

Đặc biệt, tác giả phân tích chi tiết dự án thuyền tự hành Kenterprise (Kenterprise Self-driving Boats - 2020) sử dụng thân đôi (catamaran) thiết kế trên Fusion 360, trang bị vi điều khiển Omnibus F4 V3S, module telemetry 433 MHz và bộ điều khiển FlySky 10 kênh để đo nồng độ tảo trên hồ. Qua so sánh, tác giả chỉ ra điểm khác biệt cốt lõi: khóa luận không phụ thuộc vào các bo mạch FC thương mại truyền thống của ArduPilot mà sử dụng phần cứng linh hoạt hơn (Mateksys H743), loại bỏ sự phụ thuộc vào các module truyền vô tuyến riêng lẻ nhằm giảm giá thành và tối ưu khả năng mở rộng cảm biến.

Chương 3: Kiến thức nền tảng về phương tiện mặt nước không người lái (Background)

Chương 3 phân tích sâu các thành phần cấu tạo tiêu chuẩn của một hệ thống USV, bao gồm: thân tàu và cấu trúc phụ trợ (vỏ bơm hơi, kayak, catamaran, trimaran); hệ thống lực đẩy và cung cấp năng lượng; hệ thống dẫn đường, định vị và điều khiển (GNC); hệ thống thông tin liên lạc; hệ thống thu thập dữ liệu (cảm biến, sonar, camera); và trạm điều khiển mặt đất (GCS). Chương này cũng làm rõ mối quan hệ tương hỗ giữa 3 phân hệ Guidance, Navigation và Control trong việc duy trì ổn định chuyển động của phương tiện.

Chương 4: Đề xuất giải pháp và thiết kế hệ thống (Proposed Approach & System Design)

Chương 4 là nội dung trọng tâm của khóa luận, mô tả chi tiết:

  • Phân tích kiến trúc đa tầng của ArduPilot và quy trình thực thi mã nguồn.
  • Đặc tả giao thức MAVLink2: định dạng khung gói tin, cơ chế phát bản tin Heartbeat định kỳ 1 Hz, luồng lệnh COMMAND-LONG, COMMAND-ACK và cơ chế hủy tác vụ kéo dài (COMMAND-CANCEL).
  • Thiết lập môi trường nhúng trên Raspberry Pi 4 (cấu hình bật giao tiếp SPI, I2C, Serial UART trên Raspbian).
  • Quy trình nạp firmware ArduPilot Rover cho bo mạch Mateksys H743-SLIM bằng STM32CubeProgrammer và ImpulseRC Driver Fixer, xóa bộ nhớ flash và cấu hình các tham số vận hành (ARMING_CHECK, vô hiệu hóa Plane Failsafe).
  • Thiết kế mạch phần cứng giải mã tín hiệu Sbus nghịch đảo (Un-inverted board) để kết nối tay điều khiển RC vào máy tính trạm GCS.
  • Thiết kế giao diện trạm điều khiển mới trên nền tảng Web (GCS Web App) kết hợp kết nối đồng thời với Mission Planner qua UDP.

Chương 5: Kết quả thực nghiệm và hướng phát triển (Conclusion And Future Work)

Chương 5 tóm lược các kết quả đạt được sau quá trình chế tạo và thử nghiệm hệ thống kết nối: thiết lập thành công đường truyền điều khiển và dữ liệu qua UDP, đồng bộ tín hiệu giữa trạm GCS và USV, điều khiển chuyển động của phương tiện qua MAVLink. Chương này cũng nêu ra các định hướng hoàn thiện trong tương lai nhằm nâng cao độ tin cậy và khả năng tự hành ngoài thực địa.


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

Kết quả kỹ thuật đạt được

  • Cấu hình và nạp firmware thành công: Triển khai thành công firmware ArduPilot Rover lên bo mạch vi điều khiển Mateksys H743-SLIM qua cổng STM32 DFU, hiệu chỉnh các thông số an toàn arming và failsafe phù hợp với cấu hình USV.
  • Tích hợp phần cứng hoàn chỉnh: Kết nối đồng bộ giữa Flight Controller H743-SLIM, máy tính nhúng Raspberry Pi 4, cảm biến M8N GPS/Compass, mạch ESC và các cơ cấu chấp hành servo.
  • Hiện thực hóa mạch giải mã tín hiệu RC: Thiết kế và chế tạo mạch un-inverted board, cho phép trạm GCS đọc trực tiếp chuỗi xung Sbus từ bộ thu RC qua tập lệnh kịch bản (script) trên máy tính.
  • Hợp nhất luồng truyền thông qua UDP: Thiết lập thành công kênh truyền thông mạng không dây duy nhất sử dụng UDP giữa Raspberry Pi và máy tính trạm, truyền tải ổn định gói tin MAVLink, dữ liệu telemetry và lệnh điều khiển từ xa.
  • Phát triển giao diện trạm điều khiển Web: Xây dựng ứng dụng web GCS hỗ trợ nhận bản tin Heartbeat, hiển thị tham số trạng thái và điều khiển phương tiện song song với phần mềm Mission Planner.

Bảng so sánh giải pháp của khóa luận với hệ thống tham chiếu

Tiêu chí Hệ thống USV truyền thống (Kenterprise Boat 2020) Giải pháp của khóa luận (Lê Xuân Nguyên 2022)
Bo mạch điều khiển bay Omnibus F4 V3S (ArduPilot Rover) Mateksys H743-SLIM (Vi điều khiển hiệu năng cao STM32H743)
Kênh điều khiển RC Thu phát trực tiếp giữa Remote và Receiver gắn trên thân tàu Remote kết nối trực tiếp vào GCS qua mạch un-inverted board; lệnh truyền qua mạng
Kênh truyền Telemetry Module vô tuyến chuyên dụng băng tần 433 MHz qua cổng USB dongle Tích hợp vào máy tính nhúng Raspberry Pi 4, truyền qua giao thức UDP
Phương thức truyền thông Đa kênh vật lý riêng biệt (433 MHz Telemetry + 2.4 GHz RC + Kênh Video) Hợp nhất toàn bộ (RC + Datalink + Video streaming) qua 1 đường truyền mạng UDP
Trạm điều khiển mặt đất Phần mềm máy tính Mission Planner Kết hợp linh hoạt giữa Mission Planner và GCS nền tảng Web

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

Hạn chế được ghi nhận

  • Hệ thống truyền thông phụ thuộc vào tầm phủ của mạng không dây cục bộ (Wi-Fi), có thể bị suy giảm tín hiệu hoặc giới hạn cự ly hoạt động khi vận hành tại các vùng nước mặt rộng lớn.
  • Khóa luận tập trung chính vào việc thiết lập kiến trúc kết nối, truyền thông MAVLink và điều khiển cơ bản, chưa tích hợp đầy đủ các đầu đo cảm biến chất lượng nước chuyên sâu (như đo pH, độ đục, độ mặn, nồng độ oxy hòa tan) trong giai đoạn thử nghiệm đầu mối.
  • Việc xử lý đồng thời luồng video độ phân giải cao cùng với các tác vụ MAVLink trên Raspberry Pi cần tối ưu hóa băng thông để tránh phát sinh độ trễ điều khiển thời gian thực.

Hướng nghiên cứu tiếp

  • Tích hợp thêm các cảm biến quan trắc môi trường nước chuyên dụng vào cổng I2C/UART của Companion Computer để tự động ghi nhật ký và vẽ bản đồ phân bố chất lượng nước.
  • Nâng cấp module truyền thông tầm xa (như 4G/LTE hoặc hệ thống vô tuyến đa hướng băng thông rộng) nhằm mở rộng bán kính hoạt động của USV tại các lưu vực sông lớn.
  • Hoàn thiện thuật toán tự động tránh vật cản trên mặt nước dựa trên dữ liệu hình ảnh camera hoặc cảm biến khoảng cách tích hợp vào luồng điều khiển ArduPilot.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo có giá trị kỹ thuật thực tiễn cao cho:

  • Sinh viên các ngành Kỹ thuật Máy tính, Kỹ thuật Điều khiển & Tự động hóa, Cơ điện tử, Khoa học Máy tính: Tham khảo quy trình tích hợp hệ thống nhúng, cách ánh xạ chân và cấu hình cổng nối tiếp (UART, SPI, I2C) giữa Raspberry Pi và vi điều khiển STM32.
  • Người nghiên cứu và phát triển hệ thống tự hành mã nguồn mở (ArduPilot/PX4): Tham khảo chi tiết cách đóng gói, truyền nhận và cấu hình giao thức MAVLink2 (các cấu trúc tin nhắn Heartbeat, Command-Long, Set-Message-Interval), phương pháp bypass và điều khiển xe qua Companion Computer.
  • Kỹ sư thiết kế thiết bị IoT giám sát môi trường: Tham khảo phương pháp gom các luồng truyền thông rời rạc (RC, Telemetry, Video) về một luồng mạng IP duy nhất, giúp tiết kiệm chi phí phần cứng và tối giản thiết kế thân tàu.

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

1. Bo mạch vi điều khiển nào được sử dụng làm Flight Controller trong khóa luận?

Tác giả sử dụng bo mạch Mateksys H743-SLIM trang bị vi điều khiển họ STM32H743, chạy firmware ArduPilot dành cho phân hệ Rover.

2. Ý tưởng cốt lõi trong việc tái cấu trúc hệ thống truyền thông của khóa luận là gì?

Ý tưởng cốt lõi là hợp nhất tất cả các kênh tín hiệu vốn hoạt động riêng rẽ trên các USV truyền thống (gồm tín hiệu tay điều khiển RC, luồng dữ liệu telemetry/cảm biến và luồng video trực tiếp từ camera) thành một kết nối mạng duy nhất sử dụng giao thức UDP thông qua máy tính nhúng Raspberry Pi 4.

3. Tay điều khiển RC được kết nối và xử lý như thế nào trong mô hình mới?

Tay điều khiển RC không kết nối trực tiếp với bộ thu gắn trên tàu, mà được kết nối trực tiếp vào máy tính trạm GCS thông qua một mạch giải mã tín hiệu nghịch đảo (Un-inverted board) để đọc tín hiệu xung Sbus và truyền lệnh điều khiển qua mạng UDP tới USV.

4. Giao thức MAVLink phát bản tin Heartbeat với tần số bao nhiêu và nhằm mục đích gì?

Bản tin Heartbeat được phát định kỳ với tần số 1 Hz. Bản tin này dùng để thông báo sự hiện diện của thiết bị trong mạng MAVLink, giúp phát hiện trạng thái kết nối hoặc ngắt kết nối giữa GCS và USV, định tuyến gói tin và định dạng giao diện điều khiển phù hợp với loại phương tiện.

5. Các công cụ phần mềm nào được sử dụng để nạp firmware và điều khiển hệ thống?

Quá trình nạp và hiệu chỉnh firmware cho vi điều khiển sử dụng STM32CubeProgrammer kết hợp ImpulseRC Driver Fixer. Phần mềm giám sát và điều khiển tại trạm mặt đất gồm có Mission Planner và một ứng dụng điều khiển nền tảng web (GCS Web App) do tác giả phát triển.


Kết luận

Khóa luận tốt nghiệp của tác giả Lê Xuân Nguyên đã giải quyết thành công bài toán thiết kế và tích hợp phương tiện mặt nước không người lái (USV) chi phí thấp phục vụ quan trắc vùng đất ngập nước. Bằng cách khai thác nền tảng mã nguồn mở ArduPilot Rover kết hợp vi điều khiển Mateksys H743-SLIM và máy tính nhúng Raspberry Pi 4, nghiên cứu đã đề xuất và hiện thực hóa thành công mô hình hợp nhất truyền thông điều khiển, đo đạc từ xa và truyền hình ảnh qua giao thức UDP. Kết quả của đề tài đóng góp một cấu trúc phần cứng và giải pháp truyền thông linh hoạt, mở ra khả năng tùy biến và mở rộng cảm biến hiệu quả cho các nghiên cứu ứng dụng phương tiện tự hành trong thực tế.