閆勛,袁輝,甄慶喆,姜大鵬,劉鳳光
(1. 哈爾濱工程大學(xué),黑龍江 哈爾濱 150001;2. 中山大學(xué),廣東 珠海 519080;3. 陸軍海防第332旅船艇大隊(duì),遼寧 大連 116000)
目前,國外開源飛控項(xiàng)目發(fā)展迅速,并被各類無人航行器的愛好者廣泛采用。在眾多的開源項(xiàng)目中,APM支持多旋翼無人機(jī)、固定翼飛機(jī)、直升機(jī)、無人車等載體的功能,以其獨(dú)有的穩(wěn)定性和強(qiáng)大的兼容性贏得了開發(fā)者們的青睞。
本文利用飛控項(xiàng)目中無人車的特點(diǎn),開發(fā)了一型基于Pixhawk+Raspberry Pi的無人艇平臺(tái),通過一系列的試驗(yàn)驗(yàn)證了無人艇系統(tǒng)的可行性以及運(yùn)動(dòng)特性。
Pixhawk作為一款低成本、高性能且完全開源的飛控系統(tǒng),被各行業(yè)的開發(fā)者們廣泛應(yīng)用在固定翼航行器、多旋翼飛行器以及無人車上。Pixhawk項(xiàng)目構(gòu)成主要包括硬件和軟件2部分[3-4]。
Pixhawk支持現(xiàn)有的APM和PX4固件連接到其自動(dòng)駕駛系統(tǒng),降低了其入門的門檻。Pixhawk的硬件框圖如圖1所示。
Pixhawk可以根據(jù)實(shí)際需求外接不同的設(shè)備,常用的有電源模塊、GPS模塊以及外置內(nèi)存卡等。其中,電源模塊的主要作用為將電池的電壓降至5V用于給Pixhawk供電,此外,還可以通過該模塊監(jiān)測電池的電壓和電流值并在地面站實(shí)時(shí)地進(jìn)行讀取。GPS模塊輸出兩路信號(hào),一路信號(hào)傳輸GPS 坐標(biāo),另一路傳送指南針方向信號(hào),連接時(shí)按照對(duì)應(yīng)的針腳將其接到飛控板上即可。需要注意的是在安裝時(shí),要將其裝在航行器的最高處,其指向的方向要和飛控板指向方向一致,只有正確安裝才能保證航行器在運(yùn)行時(shí)的準(zhǔn)確性。在航行器的運(yùn)行過程中,為了后續(xù)分析過程的展開,有必要記錄航行過程中的日志,使用外置的內(nèi)存卡可以完整記錄Pixhawk在開機(jī)轉(zhuǎn)態(tài)下的運(yùn)行情況。不同行業(yè)的開發(fā)者可以根據(jù)自己的實(shí)際需求使用所需的各類傳感器,進(jìn)一步拓展飛控板的功能。
圖 1 Pixhawk硬件框圖Fig. 1Pixhawk hardware block diagram
Pixhawk可以執(zhí)行2套固件程序,其中ArduPilot固件(即APM固件)由于有相關(guān)社區(qū)的技術(shù)支持,很多開發(fā)人員對(duì)其進(jìn)行不斷的開發(fā)優(yōu)化,使得其迭代更新速度較快,可以直接使用,方便不同用戶的應(yīng)用。
經(jīng)過護(hù)理后,觀察組患者的骨折愈合時(shí)間顯著短于對(duì)照組(P<0.05);觀察組患者的關(guān)節(jié)功能恢復(fù)的優(yōu)良率為95.6%,對(duì)照組的優(yōu)良率為82.2%,組間差異具有統(tǒng)計(jì)學(xué)意義(P<0.05),數(shù)據(jù)詳見表1.
按照源碼框架分,Pixhawk源碼框圖如圖2所示。
MAVLink于2009年初由Lorenz Meier根據(jù)LGPL許可證首次發(fā)布,是一種非常輕量級(jí)的消息傳遞協(xié)議,遵循現(xiàn)代混合發(fā)布-訂閱和點(diǎn)對(duì)點(diǎn)設(shè)計(jì)模式:數(shù)據(jù)流作為主題發(fā)送/發(fā)布,而配置子協(xié)議(如任務(wù)協(xié)議或參數(shù)協(xié)議)是點(diǎn)對(duì)點(diǎn)重傳。
圖 2 Pixhawk源碼框架圖Fig. 2Pixhawk source framework diagram
設(shè)計(jì)了基于Pixhawk飛控的無人艇如圖3所示。其主體結(jié)構(gòu)采用雙體打窩船船型,雙體的結(jié)構(gòu)能夠保證無人艇在航行時(shí)的穩(wěn)定性。其原有的餌料艙經(jīng)過改裝可以提供足夠的空間來容納控制系統(tǒng)、傳感器、飛控板等電子設(shè)備??刂葡到y(tǒng)通過切換可以實(shí)現(xiàn)手動(dòng)遙控和自動(dòng)駕駛2種模式。推進(jìn)部分采用了2個(gè)無刷直流電機(jī)提供推力,無人艇的轉(zhuǎn)向通過2個(gè)電機(jī)的差速轉(zhuǎn)動(dòng)來實(shí)現(xiàn),由于不需要安裝專門的轉(zhuǎn)舵機(jī)構(gòu),無人艇的結(jié)構(gòu)得到了極大的簡化,同時(shí)重量的減輕有利于提高無人艇的操縱性。
圖 3 無人艇平臺(tái)Fig. 3USV platform
無人艇的運(yùn)動(dòng)控制系統(tǒng)主要包含遠(yuǎn)程控制平臺(tái)與船載運(yùn)動(dòng)控制器兩部分。其中,遠(yuǎn)程控制平臺(tái)由PC端的地面站構(gòu)成,用戶可以通過圖形化的操作界面實(shí)時(shí)觀察無人艇的運(yùn)動(dòng)狀態(tài),也可以對(duì)其進(jìn)行在線的參數(shù)設(shè)置;船載控制器主要用于無人艇的運(yùn)動(dòng)姿態(tài)監(jiān)測、位置信號(hào)監(jiān)測以及執(zhí)行器控制等。無人艇的運(yùn)動(dòng)控制示意圖如圖4所示。
2.2.1 Pixhawk飛控板
無人艇的底層控制器基于Pixhawk飛控平臺(tái)[5-6],它提供了一種低成本、高效的自動(dòng)駕駛實(shí)現(xiàn)方式。包括1組內(nèi)置的導(dǎo)航傳感器,如加速度計(jì),陀螺儀,磁力計(jì)和氣壓計(jì)壓力傳感器。同時(shí),能夠?yàn)镚PS和基于慣性的導(dǎo)航傳感器提供低級(jí)控制器。從外部GPS和指南針單元讀取信號(hào),并具有通過遙測收發(fā)器與地面控制站(GCS)通信的能力。
圖 4 控制系統(tǒng)示意圖Fig. 4Control system schematic
Ardupilot平臺(tái)中有很多針對(duì)不同無人航行器的固件版本,其中Ardurover固件主要應(yīng)用在雙輪差速驅(qū)動(dòng)的無人車上,結(jié)合所開發(fā)無人艇的特點(diǎn),選擇Ardurover固件,使用的版本為v3.2.0。
2.2.2 樹莓派
樹莓派在Linux-Raspbian操作系統(tǒng)上運(yùn)行,支持Python語言編程。DroneKit-Python庫提供了一系列的API對(duì)Pixhawk進(jìn)行訪問,開發(fā)人員可以使用API創(chuàng)建通過MAVLink協(xié)議與無人艇進(jìn)行通信的Python應(yīng)用程序,從而實(shí)現(xiàn)對(duì)無人艇的遙測,狀態(tài)和參數(shù)信息的編程訪問以及對(duì)無人艇運(yùn)動(dòng)的直接控制。更高級(jí)的應(yīng)用為可以使用Python語言編寫路徑規(guī)劃算法從而在實(shí)艇上進(jìn)行算法的驗(yàn)證。
2.2.3 地面站
地面站通常是在岸基計(jì)算機(jī)上運(yùn)行的軟件應(yīng)用程序,通過無線遙測與無人艇進(jìn)行通信。它顯示無人艇位姿和位置的實(shí)時(shí)數(shù)據(jù),可以作為“虛擬駕駛艙”,顯示許多與真實(shí)駕駛無人艇時(shí)相同的儀表數(shù)據(jù)。地面站還可用于控制航行中的無人艇,上傳新任務(wù)命令和設(shè)置參數(shù)。通常還用于監(jiān)控來自無人艇攝像機(jī)的實(shí)時(shí)視頻流。有很多的地面站可供選擇,其中最廣泛使用的是 Windows 下的 Mission Planner(MP)[9],它也有運(yùn)行在Linux上的一個(gè)更有限的版本,稱為APM Planner。
QGroundControl是另一個(gè)強(qiáng)大的GCS,可以與Ardupilot或PX4自動(dòng)駕駛儀一起使用。
通常情況下,一個(gè)地面站包含以下幾部分[11]:
可以運(yùn)行GCS應(yīng)用程序的計(jì)算機(jī);將Mission Planner安裝在電腦上;無線收發(fā)器;遙控手柄;1名操作人員;
MP允許使用方便易用的GUI配置整個(gè)系統(tǒng),從而可以執(zhí)行以下操作:
圖 5 地面站Mission planner Fig. 5GCS Mission planner
1)將固件(Ardupilot軟件)加載到控制車輛的自動(dòng)駕駛儀(Pixhawk)中;
2)設(shè)置和配置傳感器,如羅盤,陀螺儀和加速度計(jì),以及R/C發(fā)射器;
3)修改自動(dòng)駕駛儀參數(shù)和控制增益,定義車輛的整體配置和響應(yīng);
4)使用Google地圖或類似工具,通過簡單的點(diǎn)擊式航點(diǎn)輸入,將自動(dòng)任務(wù)計(jì)劃保存和加載到自動(dòng)駕駛儀上;
5)下載和分析自動(dòng)駕駛儀創(chuàng)建的任務(wù)日志。
使用MP對(duì)參數(shù)THR_MAX和CRUISE_SPEED進(jìn)行調(diào)整。這2個(gè)參數(shù)分別表示無人艇在自主航行時(shí)的油門大小以及巡航速度的大小,通過調(diào)整這2個(gè)參數(shù)的大小可以在MP上實(shí)時(shí)地對(duì)無人艇的速度進(jìn)行在線調(diào)節(jié)。在無人艇的實(shí)際遍歷路徑點(diǎn)過程中,由于要經(jīng)過比較多的路徑點(diǎn),同時(shí)部分航點(diǎn)在幾何關(guān)系上存在轉(zhuǎn)折關(guān)系,因此,需要在MP中設(shè)置合理的轉(zhuǎn)彎速率,同樣的,該參數(shù)也可以實(shí)現(xiàn)在線的調(diào)節(jié)。
分別驗(yàn)證通過地面站加載航點(diǎn)和Python編程條件下,無人艇的航行性能。
圖6顯示了使用MP進(jìn)行航點(diǎn)設(shè)置時(shí)無人艇的運(yùn)動(dòng)信息??梢钥闯觯ㄟ^MP設(shè)置好路徑點(diǎn)信息后,無人艇能夠很好的遍歷各航點(diǎn),同時(shí)在整個(gè)運(yùn)動(dòng)過程中,通過地面站MP可以實(shí)時(shí)的檢測艇的狀態(tài)信息,包括實(shí)時(shí)位置以及姿態(tài)信息。
圖 6 MP加載任務(wù)Fig. 6MP loading task
圖7顯示了通過Python調(diào)用Dronekit庫實(shí)現(xiàn)了編寫的路徑規(guī)劃算法在無人艇上的實(shí)現(xiàn)。從圖中可以看出,無人艇能夠平滑的遍歷算法生成的航點(diǎn),充分驗(yàn)證了所設(shè)計(jì)無人艇平臺(tái)的可行性。
圖 7 Dronekit加載任務(wù)Fig. 7Dronekit loading task
本文研究開源飛控項(xiàng)目在無人艇平臺(tái)上的應(yīng)用,開發(fā)了基于Pixhawk開源項(xiàng)目的無人艇平臺(tái)。試驗(yàn)表明,搭設(shè)的無人艇平臺(tái)達(dá)到了預(yù)期設(shè)計(jì)指標(biāo),實(shí)現(xiàn)了預(yù)期的運(yùn)動(dòng)特性。