閆勛,袁輝,甄慶喆,姜大鵬,劉鳳光
(1. 哈爾濱工程大學,黑龍江 哈爾濱 150001;2. 中山大學,廣東 珠海 519080;3. 陸軍海防第332旅船艇大隊,遼寧 大連 116000)
目前,國外開源飛控項目發展迅速,并被各類無人航行器的愛好者廣泛采用。在眾多的開源項目中,APM支持多旋翼無人機、固定翼飛機、直升機、無人車等載體的功能,以其獨有的穩定性和強大的兼容性贏得了開發者們的青睞。
本文利用飛控項目中無人車的特點,開發了一型基于Pixhawk+Raspberry Pi的無人艇平臺,通過一系列的試驗驗證了無人艇系統的可行性以及運動特性。
Pixhawk作為一款低成本、高性能且完全開源的飛控系統,被各行業的開發者們廣泛應用在固定翼航行器、多旋翼飛行器以及無人車上。Pixhawk項目構成主要包括硬件和軟件2部分[3-4]。
Pixhawk支持現有的APM和PX4固件連接到其自動駕駛系統,降低了其入門的門檻。Pixhawk的硬件框圖如圖1所示。
Pixhawk可以根據實際需求外接不同的設備,常用的有電源模塊、GPS模塊以及外置內存卡等。其中,電源模塊的主要作用為將電池的電壓降至5V用于給Pixhawk供電,此外,還可以通過該模塊監測電池的電壓和電流值并在地面站實時地進行讀取。GPS模塊輸出兩路信號,一路信號傳輸GPS 坐標,另一路傳送指南針方向信號,連接時按照對應的針腳將其接到飛控板上即可。需要注意的是在安裝時,要將其裝在航行器的最高處,其指向的方向要和飛控板指向方向一致,只有正確安裝才能保證航行器在運行時的準確性。在航行器的運行過程中,為了后續分析過程的展開,有必要記錄航行過程中的日志,使用外置的內存卡可以完整記錄Pixhawk在開機轉態下的運行情況。不同行業的開發者可以根據自己的實際需求使用所需的各類傳感器,進一步拓展飛控板的功能。

圖 1 Pixhawk硬件框圖Fig. 1Pixhawk hardware block diagram
Pixhawk可以執行2套固件程序,其中ArduPilot固件(即APM固件)由于有相關社區的技術支持,很多開發人員對其進行不斷的開發優化,使得其迭代更新速度較快,可以直接使用,方便不同用戶的應用。
經過護理后,觀察組患者的骨折愈合時間顯著短于對照組(P<0.05);觀察組患者的關節功能恢復的優良率為95.6%,對照組的優良率為82.2%,組間差異具有統計學意義(P<0.05),數據詳見表1.
按照源碼框架分,Pixhawk源碼框圖如圖2所示。
MAVLink于2009年初由Lorenz Meier根據LGPL許可證首次發布,是一種非常輕量級的消息傳遞協議,遵循現代混合發布-訂閱和點對點設計模式:數據流作為主題發送/發布,而配置子協議(如任務協議或參數協議)是點對點重傳。

圖 2 Pixhawk源碼框架圖Fig. 2Pixhawk source framework diagram
設計了基于Pixhawk飛控的無人艇如圖3所示。其主體結構采用雙體打窩船船型,雙體的結構能夠保證無人艇在航行時的穩定性。其原有的餌料艙經過改裝可以提供足夠的空間來容納控制系統、傳感器、飛控板等電子設備。控制系統通過切換可以實現手動遙控和自動駕駛2種模式。推進部分采用了2個無刷直流電機提供推力,無人艇的轉向通過2個電機的差速轉動來實現,由于不需要安裝專門的轉舵機構,無人艇的結構得到了極大的簡化,同時重量的減輕有利于提高無人艇的操縱性。

圖 3 無人艇平臺Fig. 3USV platform
無人艇的運動控制系統主要包含遠程控制平臺與船載運動控制器兩部分。其中,遠程控制平臺由PC端的地面站構成,用戶可以通過圖形化的操作界面實時觀察無人艇的運動狀態,也可以對其進行在線的參數設置;船載控制器主要用于無人艇的運動姿態監測、位置信號監測以及執行器控制等。無人艇的運動控制示意圖如圖4所示。
2.2.1 Pixhawk飛控板
無人艇的底層控制器基于Pixhawk飛控平臺[5-6],它提供了一種低成本、高效的自動駕駛實現方式。包括1組內置的導航傳感器,如加速度計,陀螺儀,磁力計和氣壓計壓力傳感器。同時,能夠為GPS和基于慣性的導航傳感器提供低級控制器。從外部GPS和指南針單元讀取信號,并具有通過遙測收發器與地面控制站(GCS)通信的能力。

圖 4 控制系統示意圖Fig. 4Control system schematic
Ardupilot平臺中有很多針對不同無人航行器的固件版本,其中Ardurover固件主要應用在雙輪差速驅動的無人車上,結合所開發無人艇的特點,選擇Ardurover固件,使用的版本為v3.2.0。
2.2.2 樹莓派
樹莓派在Linux-Raspbian操作系統上運行,支持Python語言編程。DroneKit-Python庫提供了一系列的API對Pixhawk進行訪問,開發人員可以使用API創建通過MAVLink協議與無人艇進行通信的Python應用程序,從而實現對無人艇的遙測,狀態和參數信息的編程訪問以及對無人艇運動的直接控制。更高級的應用為可以使用Python語言編寫路徑規劃算法從而在實艇上進行算法的驗證。
2.2.3 地面站
地面站通常是在岸基計算機上運行的軟件應用程序,通過無線遙測與無人艇進行通信。它顯示無人艇位姿和位置的實時數據,可以作為“虛擬駕駛艙”,顯示許多與真實駕駛無人艇時相同的儀表數據。地面站還可用于控制航行中的無人艇,上傳新任務命令和設置參數。通常還用于監控來自無人艇攝像機的實時視頻流。有很多的地面站可供選擇,其中最廣泛使用的是 Windows 下的 Mission Planner(MP)[9],它也有運行在Linux上的一個更有限的版本,稱為APM Planner。
QGroundControl是另一個強大的GCS,可以與Ardupilot或PX4自動駕駛儀一起使用。
通常情況下,一個地面站包含以下幾部分[11]:
可以運行GCS應用程序的計算機;將Mission Planner安裝在電腦上;無線收發器;遙控手柄;1名操作人員;
MP允許使用方便易用的GUI配置整個系統,從而可以執行以下操作:

圖 5 地面站Mission planner Fig. 5GCS Mission planner
1)將固件(Ardupilot軟件)加載到控制車輛的自動駕駛儀(Pixhawk)中;
2)設置和配置傳感器,如羅盤,陀螺儀和加速度計,以及R/C發射器;
3)修改自動駕駛儀參數和控制增益,定義車輛的整體配置和響應;
4)使用Google地圖或類似工具,通過簡單的點擊式航點輸入,將自動任務計劃保存和加載到自動駕駛儀上;
5)下載和分析自動駕駛儀創建的任務日志。
使用MP對參數THR_MAX和CRUISE_SPEED進行調整。這2個參數分別表示無人艇在自主航行時的油門大小以及巡航速度的大小,通過調整這2個參數的大小可以在MP上實時地對無人艇的速度進行在線調節。在無人艇的實際遍歷路徑點過程中,由于要經過比較多的路徑點,同時部分航點在幾何關系上存在轉折關系,因此,需要在MP中設置合理的轉彎速率,同樣的,該參數也可以實現在線的調節。
分別驗證通過地面站加載航點和Python編程條件下,無人艇的航行性能。
圖6顯示了使用MP進行航點設置時無人艇的運動信息。可以看出,通過MP設置好路徑點信息后,無人艇能夠很好的遍歷各航點,同時在整個運動過程中,通過地面站MP可以實時的檢測艇的狀態信息,包括實時位置以及姿態信息。

圖 6 MP加載任務Fig. 6MP loading task
圖7顯示了通過Python調用Dronekit庫實現了編寫的路徑規劃算法在無人艇上的實現。從圖中可以看出,無人艇能夠平滑的遍歷算法生成的航點,充分驗證了所設計無人艇平臺的可行性。

圖 7 Dronekit加載任務Fig. 7Dronekit loading task
本文研究開源飛控項目在無人艇平臺上的應用,開發了基于Pixhawk開源項目的無人艇平臺。試驗表明,搭設的無人艇平臺達到了預期設計指標,實現了預期的運動特性。