魯青青 宋志強 陳豪





摘 要:首先通過樹莓派3B和開源Pixhawk飛行控制器構建性價比高的多旋翼無人機,將Google深度學習框架TensorFlow應用于多旋翼無人機著陸地標識別,采用卷積神經網絡模型,將無人機拍攝的停機坪、飛機場、水面、建筑物、森林、草地、道路等圖片作為訓練集輸入神經網絡,通過多次訓練校正神經網絡參數,得到可用于多旋翼無人機著陸時可識別停機坪的神經網絡模型,為多旋翼無人機的自主著陸奠定了基礎。
關鍵詞:樹莓派;PX4飛控;多旋翼無人機;著陸地標識別
中圖分類號: TP391 ? ? ? ? ? ? ? 文獻標識碼: A
0? 引言
隨著現代技術的進步,特別是人工智能技術的快速發展,未來無人機+行業應用的模式具有廣闊的應用前景。多旋翼無人機的起飛和著陸無需跑道,特別是其懸停的特征對于監視一些感興趣的區域具有非常大的吸引力。自主著陸操作技術對于其能否智能地自主完成任務具有較大的影響,這也是學術界和工業界均希望迫切解決的關鍵技術,多旋翼無人機能夠安全精準地完成自主著陸成為多旋翼無人機技術應用發展的重難點之一。深度學習技術近幾年在圖像、機器視覺、自然語言處理等領域取得了重大突破,基于TensorFlow的深度學習技術應用日益廣泛[1-3],將其應用于多旋翼無人機自主著陸地標識別是有益的嘗試。
1? 基于Pixhawk的無人機組裝
采用Pixhawk飛行控制器[4]結合自行采購的其他部件組裝無人機,組成無人機的主要部件如表1所示。
組裝后的無人機實物圖如圖1所示,飛行控制器固件采用開源固件PX4,地面站采用QGroundControl,運行于操作系統Ubuntu 16.04 LTS之上。
基于Pixhawk飛行控制器的無人機主要硬件配置[5]:
主控制器:32位STM32F427 ARM Cortex M4 核心外加浮點運算單元,主頻168MHz;
故障保護協處理器:32位STM32F103;
存儲器:2M RAM和256K運行內存;
三軸加速度計/陀螺儀:InvenSense MPU6000,測量將三軸加速度和角速度,用于后續姿態控制;
16位陀螺儀:ST Micro L3GD20,用于測量旋轉速度;
14位加速度計/磁力計:ST Micro LSM303D,用于確認外部影響和羅盤指向;
氣壓計:MS5611 MEAS,,用來測量高度。
2? 基于樹莓派3B的無人機系統硬件構成
樹莓派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接口支持大電流輸出,可以給樹莓派供電,這樣樹莓派可作為機載電腦充當決策者的角色,決定無人機的飛行路線。
樹莓派3B安裝raspbian-stretch版操作系統,TF卡中寫入2018-11-13-raspbian-stretch.img系統鏡像,其內核為Linux。樹莓派3B充當高性能的機載指揮和決策平臺,可讀取飛行控制器的狀態信息,運行機器學習、圖像識別等程序,給飛行控制器發送指令,控制無人機的飛行。將連接有攝像頭的樹莓派與無人機通過串口連接后,樹莓派通過無人機供電,搭載樹莓派的無人機實物圖如圖3所示。
3? 著陸地標識別系統設計
3.1? 著陸地標圖片獲取
樹莓派系統上電啟動后自動啟動拍照程序。通過無人機在距離地面2米、4米、8米、12米時拍攝的停機坪照片(確保模型訓練的強度),作為著陸地標(停機坪)訓練集。每次拍攝200張照片,每張照片拍攝時延時3秒,Python程序源代碼如下:
import cv2
import os
import numpy as np
import time
i=0
cap = cv2.VideoCapture(0)
while(1):
# get a frame
ret, frame = cap.read()
dir_name='/home/pi/video/'
if not os.path.isdir(dir_name):
os.makedirs(dir_name)
if i<200:
now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))
cv2.imwrite(dir_name+now+'.jpg',frame)
time.sleep(3)
i+=1
else:
cap.release()
cv2.destroyAllWindows()
os._exit(0)
無人機在距離地面8米時,拍攝的其中一幅停機坪照片如圖4所示。
3.2? 其他圖片獲取
除通過無人機實際拍攝停機坪圖片作為訓練、測試圖片外,還從百度圖片中下載水面、飛機場、建筑物、森林、草地、道路等圖片,和著陸地標一起形成7個類別的訓練集和測試集。
3.3? 圖片預處理
訓練前,首先對獲取的圖片進行預處理,將圖片轉維(reshape)成64×64大小,以節省訓練時間。程序部分包括:制作Tfrecords數據,將圖像的大小轉換成64*64,讀取Tfrecords數據獲得各個圖像所對應的image和label,為后續的操作提供數據支持。完整的圖像識別步驟如圖5所示。
3.4? 模型構建及模型訓練
建立神經網絡模型,將數據輸入到神經網絡訓練,并保存訓練好的網絡參數。模型結構表如表1所示。
表1網絡模型結構表
3.5? 基于DroneKit的Python程序開發
樹莓派端采用Python進行程序設計,為達到快速開發的效果,采用DroneKit-Python庫,其提供了控制無人機的庫函數,代碼獨立于飛行控制器,可運行于機載電腦,本研究將樹莓派3B作為機載電腦,可采用串口或無線方式通過MAVLink協議和飛行控制器通信。樹莓派操作系統raspbian-stretch或Ubuntu 16.04 LTS安裝DroneKit方法比較簡單,在終端輸入如下命令:
sudo pip install dronekit
樹莓派3B通過串口可和Pixhawk飛行控制器通信。
3.6? 實驗環境搭建
在做樹莓派與飛行控制器聯調測試之前,應先對樹莓派端的Python程序進行仿真,以測試程序是否正確,這樣可最大程序地減少墜機的危險。在Ubuntu 16.04 LTS下進行仿真,環境的搭建步驟如下:
1. 建立Pixhawk原生固件PX4編譯環境,具體可參考官方教程[6];
2. 采用jMAVSim作為仿真軟件,在PX4源碼中自帶jMAVSim仿真源碼,路徑為:/Firmware/Tools/jMAVSim,因此不需要另外下載源碼。執行如下步驟:
(1) 打開終端,切換至Firmware文件夾:
cd Firmware
(2) 輸入以下指令:
make posix_sitl_default jmavsim
上述指令意思為將Firmware目標代碼編譯為posix系統軟件仿真代碼,并用JMAVSim仿真器打開編譯好的目標文件。
若編譯成功,則打開三維仿真界面。在仿真過程中JMAVSim終端會顯示來自仿真四旋翼無人機的MAVLink指令。三維仿真界面效果圖如圖6所示。
若安裝過程中出現如下錯誤:
"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上也能運行。將訓練好的模型應用于無人機著陸仿真,無人機檢測到停機坪后,飛控就可以控制無人機飛向停機坪。代碼通過仿真測試后,將連接無人機的代碼修改為:vehicle= connect(‘/dev/ttyAMA0’,baud=57600,wait_ready=True),即可進行樹莓派3B和無人機通過串口連接后的真機測試。
4? 結束語
多旋翼無人機的自主著陸系統研究對于其智能應用具有重要作用。著重研究如何通過樹莓派3B和開源Pixhawk飛行控制器構建性價比高的多旋翼無人機自主著陸系統,從硬件構成、開發環境搭建、基于TensorFlow的著陸地標識別、軟件仿真等方面作了較為詳細的介紹,可給經費緊張的研究人員搭建系統提供有益參考,仿真實驗證明了方案的可行性。機載電腦與飛行控制器相連,機載電腦作為指揮和決策平臺,采用Python程序結合DroneKit庫開發機器學習、圖像識別等程序,以便機載電腦控制飛行控制器的動作,使之具備更高的智能。本文通過樹莓派3B作為機載電腦,詳細闡述了這一方案的可行性,對于使用Pixhawk開源飛行控制器的開發者進行二次開發具有很好的借鑒意義。
參考文獻:
[1] 劉帆, 劉鵬遠, 李兵, et al. TensorFlow平臺下的視頻目標跟蹤深度學習模型設計[J]. 激光與光電子學進展, 2017,(9):283-291.
[2] 馮偉, 易綿竹, 馬延周. 基于TensorFlow的俄語詞匯標音系統[J]. 計算機應用, 2018,38(4):971-977.
[3] 張春露, 白艷萍. 基于TensorFlow的LSTM模型在太原空氣質量AQI指數預測中的應用[J]. 重慶理工大學學報(自然科學), 2018, 32(8):143-147.
[4] 華清遠見.飛行控制器Pixhawk簡介[EB/OL].http://emb.hqyj.com/Column/7615.html,2018-08-15/2019-04-26.
[5] 楊小川, 劉剛, 王運濤, 等. Pixhawk 開源飛控項目概述及其航空應用展望[J]. 飛航導彈, 2018,(4): 25-32.
[6] DroneCode.Linux開發環境[EB/OL]. http://dev.px4.io/zh/ setup/dev_env_linux.html, 2019-01-01 /2019-04-26.