韓青巖,劉勝蘭,趙雪冬
(南京航空航天大學(xué) 機(jī)電學(xué)院,江蘇 南京 210016)
近年來,小型多旋翼無人機(jī)以其成本低、操作簡單、機(jī)動性強(qiáng)等特點(diǎn),在城市測繪、航空拍攝、災(zāi)害應(yīng)急處理等領(lǐng)域得到了廣泛的應(yīng)用,其中航空拍攝是無人機(jī)應(yīng)用最多的一個領(lǐng)域[1]。航拍時(shí)手動遙控調(diào)整無人機(jī)和相機(jī)位姿不僅效率低而且準(zhǔn)確度低,因此對自動控制無人機(jī)和相機(jī)位姿進(jìn)行航拍的研究很有意義。
國內(nèi)外學(xué)者也對此項(xiàng)技術(shù)進(jìn)行了研究并有部分應(yīng)用。國內(nèi)華南理工大學(xué)的余寶意等人[2]根據(jù)機(jī)載芯片反饋數(shù)據(jù)利用PC機(jī)鍵盤手動調(diào)整云臺相機(jī)角度到目標(biāo)區(qū)域,這種方法包含人為操作,相機(jī)角度定位準(zhǔn)確度低。西北工業(yè)大學(xué)的張治生等人[3]開發(fā)了一款地面站平臺控制臺軟件,具備數(shù)據(jù)接收、顯示、存儲、回放等功能,但只是作為飛行過程中無人機(jī)位姿等參數(shù)的接收端,缺少給無人機(jī)發(fā)送數(shù)據(jù)的能力。武警工程學(xué)院的李南等人[4]在Windows環(huán)境下用VC++6.0讀取串行口輸入的GPS定位數(shù)據(jù),并對數(shù)據(jù)進(jìn)行處理和顯示,并開發(fā)了盤旋、自動回家等功能模塊。浙江大學(xué)的肖征宇等人[5]應(yīng)用串口通信編程、組件式GIS開發(fā)和ADO數(shù)據(jù)庫訪問等技術(shù)手段構(gòu)建了一套無人機(jī)地面站平臺軟件,但不具備相機(jī)控制功能。國外,J. C. del Arco等人[6]開發(fā)了一種基于GUI和QGroundControl軟件的地面站平臺系統(tǒng)。綜合國內(nèi)外研究現(xiàn)狀,發(fā)現(xiàn)在航跡規(guī)劃、實(shí)時(shí)顯示和數(shù)據(jù)回放等方面已經(jīng)有了較多的研究,但在航拍過程中無人機(jī)和相機(jī)位姿控制方面的研究較為缺乏。
為準(zhǔn)確控制無人機(jī)和相機(jī)在指定的位置以指定的姿態(tài)拍攝場景或目標(biāo),并實(shí)現(xiàn)對航拍過程進(jìn)行監(jiān)控,本文設(shè)計(jì)了一款面向航拍的地面控制平臺系統(tǒng)。地面控制系統(tǒng)是由位姿控制軟件和地面站平臺組成。根據(jù)規(guī)劃生成的航點(diǎn)文件對無人機(jī)和相機(jī)的位姿提供遠(yuǎn)程引導(dǎo)控制。該系統(tǒng)利用C++編寫,平臺和無人機(jī)間的通訊使用MAVLink通信協(xié)議,數(shù)據(jù)的傳輸方式采用無連接的傳輸層UDP數(shù)據(jù)報(bào)協(xié)議。平臺可發(fā)送單個位姿或包含多個位姿信息的航點(diǎn)文本,并且具備任務(wù)顯示、無人機(jī)和相機(jī)的位姿顯示、位姿完成狀態(tài)顯示等功能。平臺操作簡單,控制效果和魯棒性較強(qiáng)。
該系統(tǒng)硬件組成如圖1所示,包括地面控制系統(tǒng)、通訊數(shù)傳、無人機(jī)機(jī)身、飛行控制器、云臺和相機(jī)、遙控器。其中,無人機(jī)攜帶云臺及相機(jī)共同組成執(zhí)行機(jī)構(gòu)在飛行控制器的控制下完成指定的位置和姿態(tài),拍攝目標(biāo)圖像;地面控制系統(tǒng)包含位姿控制平臺和地面站平臺,兩個平臺間采用UDP的方式雙向傳輸航點(diǎn)數(shù)據(jù),然后地面控制系統(tǒng)將航點(diǎn)數(shù)據(jù)以MAVlink消息幀的方式通過無線數(shù)傳發(fā)送給飛行控制器;最后飛行控制器引導(dǎo)無人機(jī)飛行和相機(jī)角度的變化。無人機(jī)位置信息的確定是由GPS系統(tǒng)提供,相機(jī)姿態(tài)的獲取通過相機(jī)云臺上的陀螺儀得到。
圖1 航拍系統(tǒng)硬件
對相機(jī)拍攝圖像時(shí)位姿的控制,本質(zhì)是控制相機(jī)在空中的6個自由度。由于相機(jī)是固定懸掛在無人機(jī)的正下方,無人機(jī)的位置和航向角就是相機(jī)的位置和航向角,因此控制無人機(jī)的位置(包括經(jīng)度、緯度、高度)、航向角和相機(jī)本身的俯仰角、橫滾角,即可實(shí)現(xiàn)對相機(jī)的6個自由度的控制。
航拍中相機(jī)位姿的控制,要求拍攝圖像時(shí)相機(jī)具有較高的位置和姿態(tài)精度,同時(shí)避免由于信號干擾導(dǎo)致的航點(diǎn)信息丟失而造成的漏拍。另外,因?yàn)橄到y(tǒng)信號傳輸?shù)难訒r(shí)對最終拍攝圖像時(shí)的相機(jī)位姿精度沒有影響,所以系統(tǒng)控制的實(shí)時(shí)性暫不考慮。
規(guī)劃的航點(diǎn)文件中每條指令都包含相機(jī)的6個自由度參數(shù),對于航點(diǎn)文件中的每條指令,采用3個MAVLink消息幀來實(shí)現(xiàn)。消息幀以 MAV_CMD指令的形式發(fā)送,這些指令可以立即被執(zhí)行。如表 1所示,設(shè)計(jì)的3個消息幀的模式編號為16、115、183,可分別控制無人機(jī)位置、無人機(jī)航向角、相機(jī)俯仰角和橫滾角。其中16代表航點(diǎn)模式,在其余的7個參數(shù)中可設(shè)置經(jīng)過航路點(diǎn)時(shí)的懸停時(shí)間、觸發(fā)半徑和經(jīng)緯高用于控制無人機(jī)位置;115表示航向模式,可設(shè)置航向角度、轉(zhuǎn)向角速率、轉(zhuǎn)向方式(順/逆時(shí)針)、角度方式(相對/絕對角度),用于控制無人機(jī)的航向;183代表舵機(jī)控制模式,可控制云臺俯仰、橫滾。
表1 消息類型及含義
為了能夠根據(jù)航點(diǎn)文件中的所有位姿自動控制相機(jī)完成航拍,并減小飛行過程中的位置偏離,設(shè)計(jì)控制系統(tǒng)原理如圖 2所示。路徑規(guī)劃程序所生成的航點(diǎn)文件是由包含n個航路點(diǎn)wp信息的指令構(gòu)成,位姿控制平臺在執(zhí)行航點(diǎn)文件時(shí)會在連接第i個航點(diǎn)wpi和第i+1個航點(diǎn)wpi+1的路徑段Si上插入N個航點(diǎn),路徑段Si上插入的航點(diǎn)能夠使無人機(jī)位置和相機(jī)姿態(tài)平穩(wěn)地從wpi過渡到wpi+1,并減小飛行軌跡與規(guī)劃路線的偏離。當(dāng)無人機(jī)和相機(jī)到達(dá)航點(diǎn)wpi+1時(shí),控制指令將觸發(fā)相機(jī)拍攝,拍攝完成后繼續(xù)執(zhí)行下一個位姿動作。為防止由于信號干擾造成的航點(diǎn)指令丟失,每條指令都將會以50Hz的頻率不斷地被發(fā)送,直到該條指令被執(zhí)行完畢。當(dāng)執(zhí)行完所有航點(diǎn)任務(wù)后,無人機(jī)會自動返航并降落。
圖2 位姿控制系統(tǒng)原理程圖
文中相機(jī)位姿控制是通過地面控制系統(tǒng)來實(shí)現(xiàn)的,該系統(tǒng)是由安裝在PC機(jī)上的位姿控制平臺和地面站平臺兩部分組成。地面控制系統(tǒng)組成關(guān)系如圖 3所示,位姿控制平臺用于將航點(diǎn)指令發(fā)送給地面站平臺并實(shí)時(shí)接收和顯示回傳的當(dāng)前位姿、任務(wù)執(zhí)行狀態(tài)。地面站平臺作為聯(lián)系位姿控制平臺和無人機(jī)及相機(jī)的橋梁,將控制終端位姿控制平臺的航點(diǎn)位姿指令轉(zhuǎn)發(fā)給無人機(jī)飛行控制器。位姿控制平臺和地面站平臺兩者之間采用TCP/IP通訊(UDP),可通過網(wǎng)絡(luò)外擴(kuò)多個遠(yuǎn)程控制終端。
圖3 地面控制系統(tǒng)組成關(guān)系
地面站平臺如圖 4所示,主要分為飛行數(shù)據(jù)、綜合顯示以及地圖航跡顯示3個區(qū)域。飛行數(shù)據(jù)區(qū)包含電壓電流、飛行模式狀態(tài)、信號強(qiáng)度、可連接GPS衛(wèi)星數(shù)等系統(tǒng)參數(shù),以及機(jī)身姿態(tài)、空速、氣壓、溫度等傳感器采集的數(shù)據(jù)。在飛行數(shù)據(jù)區(qū)域單擊鼠標(biāo)左鍵可以切換到圖像視頻顯示。綜合顯示和控制區(qū)由任務(wù)、儀表、操縱、連接、計(jì)劃和設(shè)置6個切換頁面組成;任務(wù)頁面可以按鈕方式直接切換飛行模式,或執(zhí)行位姿控制平臺轉(zhuǎn)發(fā)的指令;儀表頁面用模擬儀表顯示空速、航向、高度、地速、飛行器和原點(diǎn)的相對位置、升降速率;操縱頁面進(jìn)行舵機(jī)測試及控制模式切換,系統(tǒng)支持軟件滑塊、標(biāo)準(zhǔn)搖桿、無線遙控器3種操縱模式;聯(lián)接部分支持6個串口的設(shè)置;計(jì)劃頁面可顯示已經(jīng)編制好的或陸續(xù)傳送的飛行計(jì)劃;設(shè)置頁面系統(tǒng)所有設(shè)置匯集于此,包含傳感器校準(zhǔn)、網(wǎng)絡(luò)聯(lián)結(jié)、內(nèi)外環(huán)PID參數(shù)等設(shè)置功能。地圖和航跡顯示區(qū)域提供離線地圖的顯示功能,同時(shí)可實(shí)時(shí)在地圖上顯示無人機(jī)的飛行航跡,便于更加直接的觀察。
圖4 地面站平臺
位姿控制平臺的開發(fā)基于Windows 7操作系統(tǒng),使用的集成開發(fā)環(huán)境為Visual Studio 2010,應(yīng)用程序框架使用的是VC++/MFC。平臺設(shè)計(jì)分為5個模塊:IP設(shè)置模塊、飛行位姿顯示、航點(diǎn)信息模塊、航點(diǎn)執(zhí)行進(jìn)度和命令操作模塊。位姿控制平臺的界面是基于MFC的對話框,在此基礎(chǔ)上添加編輯控件、按鈕控件、進(jìn)程控件和圖片控件進(jìn)行開發(fā),平臺界面如圖 5。
圖5 位姿控制平臺
1) IP和端口設(shè)定
工作前首先設(shè)定位姿控制平臺和地面站平臺的IP和端口(Port)。每臺計(jì)算機(jī)都有唯一的IP,每臺計(jì)算機(jī)上的應(yīng)用程序都有獨(dú)立的端口,根據(jù)IP和端口(Port)就可找到對應(yīng)的應(yīng)用進(jìn)行通訊。地面站平臺默認(rèn)的IP為127.0.0.1,端口為49005,在同一計(jì)算機(jī)上位姿控制平臺IP默認(rèn)為127.0.0.1,端口為49105[7]。打開地面站平臺連接無人機(jī)后平臺即處于數(shù)據(jù)讀取狀態(tài),實(shí)時(shí)讀取無人機(jī)機(jī)身狀態(tài)數(shù)據(jù)進(jìn)行顯示,并發(fā)送到端口49105。位姿控制軟件打開后點(diǎn)擊連接按鈕和地面站平臺即建立通訊,實(shí)時(shí)接受地面站平臺發(fā)送的數(shù)據(jù)并顯示,用于監(jiān)視無人機(jī)和任務(wù)執(zhí)行狀態(tài)。
2) 位姿顯示模塊
在連接地面站平臺后,位姿控制平臺即可接收到無人機(jī)數(shù)據(jù),其中包含飛行器類型、電池狀況、機(jī)身經(jīng)緯高、飛行速度加速度等機(jī)身狀態(tài)數(shù)據(jù)。為了方便操作者觀察無人機(jī)當(dāng)前位姿和姿態(tài)的變化情況,將無人機(jī)的經(jīng)緯度、海拔高度和相機(jī)的俯仰角度等被控量著重顯示,將機(jī)身位姿變化情況用曲線實(shí)時(shí)顯示,并對相機(jī)的俯仰角度使用儀表盤直觀模擬。
3) 航點(diǎn)信息
點(diǎn)擊操作模塊的加載任務(wù)文件按鈕載入規(guī)劃好的航點(diǎn)文件,航點(diǎn)信息區(qū)以表格形式順序列出航點(diǎn)信息。若要修改某單個航點(diǎn)位姿,可通過修改航點(diǎn)信息文件本身或在列表下方編輯框中按格式輸入該航點(diǎn)信息。執(zhí)行任務(wù)過程中任務(wù)進(jìn)度條實(shí)時(shí)更新,供操作者獲取當(dāng)前圖像拍攝的進(jìn)度。同時(shí)記錄下當(dāng)前進(jìn)度,當(dāng)出現(xiàn)意外情況造成拍攝中斷時(shí)可從中斷處繼續(xù)執(zhí)行。
4) 命令操作
命令操作區(qū)用于下達(dá)命令和選擇相機(jī)控制模式。操作選項(xiàng)包括加載任務(wù)文件、執(zhí)行任務(wù)、結(jié)束任務(wù)、云臺模式調(diào)整、機(jī)頭和云臺手動調(diào)整功能。加載任務(wù)文件:從本地選擇規(guī)劃航點(diǎn)文件;執(zhí)行任務(wù):平臺自動控制無人機(jī)執(zhí)行航點(diǎn)位姿指令;結(jié)束任務(wù):結(jié)束拍攝并自動返航;位置模式:設(shè)置云臺動作模式為位置模式,在此模式下只能調(diào)整云臺在指定位置;速率模式:設(shè)置云臺動作模式為速率模式,在此模式下只能調(diào)整云臺在某速率下的角度。
平臺的操作流程如圖 6所示,首先運(yùn)行地面站平臺連接無人機(jī),然后運(yùn)行位姿控制平臺。選擇合適的IP和端口建立起位姿控制平臺和地面站平臺之間的連接,下一步加載位姿信息并發(fā)送,程序的主線程中包含一個定時(shí)器負(fù)責(zé)定時(shí)檢查任務(wù)的完成狀態(tài),將反饋的當(dāng)前位姿信息同指定的目標(biāo)位姿進(jìn)行比較,如果目標(biāo)位姿完成則自動發(fā)送下一位姿數(shù)據(jù)報(bào),否則繼續(xù)重復(fù)位姿引導(dǎo)控制。分線程用于實(shí)時(shí)接收返回的無人機(jī)當(dāng)前緯度、經(jīng)度、高度、航向和相機(jī)俯仰、橫滾信息,并以文字的形式實(shí)時(shí)顯示于界面,然后繪制姿態(tài)變化曲線,地面站平臺會記錄和顯示飛行航跡。
圖6 位姿控制流程
為了驗(yàn)證相機(jī)位姿控制方法和地面控制系統(tǒng)的可行性,本文對某巨型貔貅銅像進(jìn)行了航拍實(shí)驗(yàn)。圖7是規(guī)劃的包含6個相機(jī)位姿信息的航點(diǎn)文件,文件中的航點(diǎn)數(shù)據(jù)即為位姿控制的輸入數(shù)據(jù),實(shí)驗(yàn)過程根據(jù)圖6所示的流程進(jìn)行。
圖7 航點(diǎn)文件
根據(jù)航點(diǎn)文件的位姿控制數(shù)據(jù),通過航拍實(shí)驗(yàn)最終得到6張航拍圖像,如圖8所示。
圖8 拍攝結(jié)果
為實(shí)現(xiàn)航拍中能夠自動控制相機(jī)在指定的位姿拍攝圖像,設(shè)計(jì)了相機(jī)位姿的方法,并開發(fā)地面控制系統(tǒng)實(shí)現(xiàn)該方法。通過實(shí)驗(yàn)驗(yàn)證了本方法的可行性和地面控制系統(tǒng)的實(shí)用性。