5 Thiết kế hệ thống và kết quả thực nghiệm
5.1.2 Nền tảng phần mềm
Như đã giới thiệu trong phần 5.1.1, hệ thống máy bay tự hành (PKDrone Kit) bao gồm một bộ máy bay không người lái cơ bản và khối tính toán tự động. Bên cạnh đó, một trạm điều khiển mặt đất được sử dụng để giám sát, can thiệp và vận hành thiết bị bay trên không trong suốt chuyến bay. Để sử dụng hệ thống trên, các module này phải được kết nối với nhau. Hình 5.6 cho thấy sơ đồ khối của hệ thống, cũng thể hiện sự giao tiếp giữa các module phần cứng và các thành phần phần mềm khác nhau.
Hình 5.6: Sơ đồ khối của toàn bộ hệ thống.
Như có thể thấy từ sơ đồ khối, hệ thống tính toán chính có ba thành phần cơ bản, đó là ước tính trạng thái4 (Visual Inertial Odometry), tái tạo bản đồ (Mapping) và lập quỹ đạo chuyển động (Planning).
Việc xuất hiện thêm khối ước tính trạng thái (Visual Inertial Odometry) trong thực tế để giải quyết giả định vị trí của máy bay là biết trước từ bài toán tái tạo bản đồ ở chương 3. Sau khi khảo sát thực hiện bay thử dựa chỉ dựa trên bộ EKF2 từ firmware PX4 với GPS và các cảm biến có sẵn trên flight control. Ngay cả khi đã để máy bay đứng yêu và EKF2 đã được Lock tuy nhiên việc vị trí ước tính ra bị trôi trong khoảng 1 đến 2 mét xảy ra thường xuyên. Điều này khiến việc tái tạo bản đồ cũng như tất cả các khối xử lý không thể hoạt động được. Trước yêu cầu đó, nhóm đã quyết định khảo sát và thực nghiệm các giải thuật mã nguồn mở là SOTA trong lĩnh vực Visual Inertial Odometry. VINS-Mono[8] sau khi được chỉnh sửa cho phù hợp với phần cứng là sự lựa chọn phù hợp nhất với sai số tối đa chỉ khoảng 16cm. Hình 5.7 so sánh việc sử dụng hai khối ước tính trạng thái. Tuy nhiên, Firmware PX4 cho phép kết hợp sử dụng cả GPS và khối VIO. Phần 5.2 sẽ tiến hành đánh giá chi tiết hơn vấn đề này.
4
(a) Vị trí được ước tính từ VINS-Mono. (b) Vị trí được ước tính từ EKF2 với GPS.
Hình 5.7: So sánh vị trí giữa VINS-Mono và EKF2 trên PX4 với cùng một quỹ đạo chuyển động.
Để tích hợp các thành phần riêng lẻ này thành một hệ thống thống nhất, ROS5 (Robot Operating System) được sử dụng làm môi trường của toàn bộ kiến trúc phần mềm. Với ROS, mỗi thành phần phần mềm có thể được chạy riêng lẻ dưới dạng các nút. Và mỗi nút có thể nhận và truyền dữ liệu với các nút khác trong cùng một môi trường. Thuộc tính này chắc chắn thân thiện với nhà phát triển vì nó cho phép xây dựng, thử nghiệm và gỡ lỗi một cách độc lập. Bên cạnh đó, ROS được sử dụng phổ biến và rộng rãi trong học thuật và công nghiệp. Trải qua hàng chục năm phát triển, có một lượng lớn thư viện và công cụ có sẵn trong hệ sinh thái ROS và có thể dễ dàng điều chỉnh cho một dự án mới. Ví dụ trong hình 5.6, một số thành phần phần mềm được điều chỉnh từ các công cụ đã phát triển, chẳng hạn như ROS Wrapper của Intel RealSense D435i6, hay việc giao tiếp với mạch điều khiển bay đã được giải quyết qua MavROS7. Bên cạnh đó việc chuyển gói tin qua lại giữa các node rất thuận lợi qua hệ thống ros_msg8 và cơ chế publisher subscriber làm nên thương hiệu của ROS.
Ở hệ thống này, nhóm tập trung hiện thực hai khối chính là Mapping và Planning cụ thể trong link : https://github.com/phuhuynh12/pkam. Sau khi đã hoàn thành các khối, việc tiếp theo là lên phương án thực nghiệm và đánh giá.
5 http://ros.org/ 6 https://github.com/IntelRealSense/realsense-ros 7 https://github.com/mavlink/mavros 8 http://wiki.ros.org/msg
Hình 5.8: Mô hình máy bay cùng với Intel Realsense D435i trong giả lập.