魯青青 宋志強(qiáng) 陳豪



摘要:多旋翼無人機(jī)的自主著陸系統(tǒng)研究對于其智能應(yīng)用具有重要作用。著重研究如何通過樹莓派3B和開源Pixhawk飛行控制器構(gòu)建性價(jià)比高的多旋翼無人機(jī)自主著陸系統(tǒng),從硬件構(gòu)成、開發(fā)環(huán)境搭建、軟件仿真等方面做了較為詳細(xì)的介紹,可給經(jīng)費(fèi)緊張的研究人員搭建系統(tǒng)提供有益參考。仿真實(shí)驗(yàn)和實(shí)物驗(yàn)證證明了方案的可行性。
關(guān)鍵詞:樹莓派;PX4飛控;多旋翼無人機(jī);自主著陸系統(tǒng)
中圖分類號(hào): TP391? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào):1009-3044(2019)13-0263-03
Abstract: The study of autonomous landing systems for multi-rotor UAVs plays an important role in their intelligent applications. Focusing on how to build a cost-effective multi-rotor UAV autonomous landing system by using Raspberry Pi 3B and open source Pixhawk flight controller, the hardware composition, development environment construction, software simulation and other aspects have been introduced in detail, which can provide useful reference for researchers with limited funds to build the system. Simulation experiments and physical verification prove the feasibility of the scheme.
Key words: Raspberry Pi; PX4 flight control; multi-rotor drone; autonomous landing system
無人機(jī)最初應(yīng)用于軍事領(lǐng)域,近年來在民用領(lǐng)域,特別是搜救、災(zāi)害監(jiān)管、測繪、安防、農(nóng)業(yè)、電力、交通、環(huán)保等領(lǐng)域均有無人機(jī)的身影。隨著現(xiàn)代技術(shù)的進(jìn)步,特別是人工智能技術(shù)的快速發(fā)展,未來無人機(jī)+行業(yè)應(yīng)用的模式具有廣闊的應(yīng)用前景。目前無人機(jī)還不能做到完成自主地執(zhí)行任務(wù),其背后都有操作人員在控制,而無人機(jī)的主要優(yōu)勢之一就是在無須大量人力勞動(dòng)參與的前提下進(jìn)行工作,因此提高無人機(jī)的自動(dòng)化和智能化水平是目前迫切需要解決的問題。自主著陸操作對于其能否智能地完成作業(yè)任務(wù)有重要影響,是學(xué)術(shù)界和工業(yè)界均希望迫切解決的關(guān)鍵技術(shù)。Ruchanurucks等[1]提出一種自主著陸輔助系統(tǒng)綜合方法,該方法利用跑道上的標(biāo)記作為算法的對象點(diǎn),采用透視n點(diǎn)(PnP))算法控制固定翼無人機(jī)自動(dòng)著陸。Wang等[2]采用紅外T形標(biāo)記概念,使得固定翼無人機(jī)能夠在任何天氣條件下著陸。對于多點(diǎn)特征情況,使用單應(yīng)性算法[3]來針對平面標(biāo)記進(jìn)行定位,但由于單應(yīng)性的線性特性,當(dāng)場景中出現(xiàn)一定程度的圖像噪聲時(shí),輸出姿勢會(huì)出錯(cuò),這會(huì)導(dǎo)致著落中墜機(jī)。
對于自主著陸的研究,學(xué)術(shù)界主要集中于算法,對如何搭建無人機(jī)自主著陸硬件系統(tǒng)則鮮有研究。本文著重研究如何通過樹莓派3B和開源Pixhawk飛行控制器構(gòu)建性價(jià)比高的多旋翼無人機(jī)自主著陸系統(tǒng),可給經(jīng)費(fèi)緊張的研究人員搭建系統(tǒng)提供有益參考。
1 Pixhawk飛行控制器簡介
Pixhawk是由PX4開源項(xiàng)目小組聯(lián)合3DR公司于2014年推出的飛行控制器[4],Pixhawk開源飛控項(xiàng)目已在國內(nèi)引起廣泛關(guān)注[5]。Pixhawk的開放性非常好,參數(shù)全部開放給開發(fā)者調(diào)整,其集成多種電子地圖,開發(fā)者可以根據(jù)當(dāng)?shù)厍闆r進(jìn)行選擇。Pixhawk被定位為下一代無人機(jī)飛控,系統(tǒng)具備的所有特征均符合未來無人機(jī)飛行控制系統(tǒng)未來發(fā)展的需求。Pixhawk飛行控制器的主要組成部分如下:
主控制器:32位STM32F427 ARM Cortex M4 核心外加浮點(diǎn)運(yùn)算單元,主頻168MHz;
故障保護(hù)協(xié)處理器:32位STM32F103;
存儲(chǔ)器:2M RAM和256K運(yùn)行內(nèi)存;
三軸加速度計(jì)/陀螺儀:InvenSense MPU6000,測量將三軸加速度和角速度,用于后續(xù)姿態(tài)控制;
16位陀螺儀:ST Micro L3GD20,用于測量旋轉(zhuǎn)速度;
14位加速度計(jì)/磁力計(jì):ST Micro LSM303D,用于確認(rèn)外部影響和羅盤指向;
氣壓計(jì):MS5611 MEAS,,用來測量高度。
2 基于Pixhawk的無人機(jī)組裝
采用Pixhawk飛行控制器結(jié)合自行采購的其他部件組裝無人機(jī),組成無人機(jī)的主要部件如表1所示。
組裝后的無人機(jī)實(shí)物圖如圖1所示,飛行控制器固件采用開源固件PX4,地面站采用QGroundControl,運(yùn)行于操作系統(tǒng)Ubuntu 16.04 LTS之上。
3基于樹莓派3B的無人機(jī)系統(tǒng)硬件構(gòu)成
樹莓派3B和Pixhawk飛行控制器的接線如圖2所示。Telem 2的5V連接樹莓派的5V (Pin 2);Telem 2的GND連接樹莓派的GND (Pin 6);Telem 2的RX連接樹莓派的TX (Pin 8);Telem 2的TX連接樹莓派的RX (Pin 10)。Pixhawk上,Telem 2的5V接口支持大電流輸出,可以給樹莓派供電,這樣樹莓派可作為機(jī)載電腦充當(dāng)決策者的角色,決定無人機(jī)的飛行路線。
樹莓派3B安裝raspbian-stretch版操作系統(tǒng),TF卡中寫入2018-11-13-raspbian-stretch.img系統(tǒng)鏡像,其內(nèi)核為Linux。樹莓派3B充當(dāng)高性能的機(jī)載指揮和決策平臺(tái),可讀取飛行控制器的狀態(tài)信息,運(yùn)行機(jī)器學(xué)習(xí)、圖像識(shí)別等程序,給飛行控制器發(fā)送指令,控制無人機(jī)的飛行。
4基于DroneKit的Python程序開發(fā)
樹莓派端采用Python進(jìn)行程序設(shè)計(jì),為達(dá)到快速開發(fā)的效果,采用DroneKit-Python庫,其提供了控制無人機(jī)的庫函數(shù),代碼獨(dú)立于飛行控制器,可運(yùn)行于機(jī)載電腦(本文將樹莓派3B作為機(jī)載電腦)上,可采用串口或無線方式通過MAVLink協(xié)議和飛行控制器通信。樹莓派操作系統(tǒng)raspbian-stretch或Ubuntu 16.04 LTS安裝DroneKit方法比較簡單,在終端輸入如下命令:
sudo pip install dronekit
4.1樹莓派3B下通用串口的設(shè)置
樹莓派3B通過串口和Pixhawk飛行控制器相連接(如圖2),但是樹莓派3B增加了藍(lán)牙功能,這一功能正好占用了開發(fā)想要使用的串口,故需要關(guān)閉藍(lán)牙功能并更改串口配置,使之變?yōu)橥ㄓ么冢襟E如下:
1.關(guān)閉板載藍(lán)牙功能。打開終端,輸入語句:
sudo systemctl disable hciuart
2.恢復(fù)串口使用并設(shè)置為通用串口。
(1)編輯文檔 /boot/config.txt,命令如下:
sudo nano /boot/config.txt
在文檔末尾添加語句:
dtoverlay=pi3-miniuart-bt
(2)編輯文檔/boot/cmdline.txt,命令如下:
sudo nano /boot/cmdline.txt
將文檔中原來的console=serial0,115200 console=tty1修改為console=tty1,即刪除“console=serial0,115200 ”。
3. 依次執(zhí)行以下命令完成更新并重啟:
sudo apt-get update
sudo reboot
經(jīng)過上述步驟后,樹莓派3B的串口變?yōu)橥ㄓ么冢梢酝ㄟ^串口和飛行控制器通信。
4.2仿真環(huán)境搭建
在做樹莓派與飛行控制器聯(lián)調(diào)測試之前,應(yīng)先對樹莓派端的Python程序進(jìn)行仿真,以測試程序是否正確,這樣可最大程序地減少墜機(jī)的危險(xiǎn)。在Ubuntu 16.04 LTS下進(jìn)行仿真,環(huán)境的搭建步驟如下:
1.建立Pixhawk原生固件PX4編譯環(huán)境,具體可參考官方教程[6];
2.采用jMAVSim作為仿真軟件,在PX4源碼中自帶jMAVSim仿真源碼,路徑為:/Firmware/Tools/jMAVSim,因此不需要另外下載源碼。執(zhí)行如下步驟:
(1) 打開終端,切換至Firmware文件夾:
cd Firmware
(2) 輸入以下指令:
make posix_sitl_default jmavsim
上述指令意思為將Firmware目標(biāo)代碼編譯為posix系統(tǒng)軟件仿真代碼,并用JMAVSim仿真器打開編譯好的目標(biāo)文件。
若編譯成功,則打開三維仿真界面。在仿真過程中JMAVSim終端會(huì)顯示來自仿真四旋翼無人機(jī)的MAVLink指令。三維仿真界面效果圖如圖3所示。
若安裝過程中出現(xiàn)如下錯(cuò)誤:
"com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ARB n/a but required, profile > GL2 requested (OpenGL >= 3.1). Requested: GLProfile[GL3bc/GL3bc.hw], current: 3.0 (Compat profile, compat[ES2], FBO, hardware) - 3.0 Mesa 17.2.8"
則為OpenGL的版本問題,需要更新OpenGL版本,在終端按序輸入以下三條命令:
sudo apt-add-repository ppa:oibaf/graphics-drivers
sudo apt-get update
sudo ?apt-get dist-upgrade
在Ubuntu 16.04 LTS測試通過的Python程序在樹莓派3B上也能運(yùn)行。進(jìn)行仿真的Python程序部分源代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import time
from dronekit import connect, VehicleMode, LocationGlobalRelative
# 通過本地14540端口,使用UDP連接到JMAVSim
connection_string = '127.0.0.1:14540'
print('Connecting to vehicle on: %s' % connection_string)
# connect函數(shù)將會(huì)返回一個(gè)Vehicle類型的對象