欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 一種基于DJI A3飛控的新型光流控制方式 [打印本頁]

作者: iTang    時(shí)間: 2020-1-15 15:08
標(biāo)題: 一種基于DJI A3飛控的新型光流控制方式
N3飛控ONBOARDSDK二次開發(fā)經(jīng)驗(yàn)分享
開發(fā)流程
步驟一:選擇開發(fā)方式
先去大疆的開發(fā)者網(wǎng)站(https://developer.dji.com/)看資料,我選擇的是ONBOARD SDK stm32(圖1),還有其他的開發(fā)方式,比如QT,ROS,LINUX等。
圖一
步驟二:觀看官方資料
首先要看下Documentation以及API Reference里面的資料(圖二),里面介紹了怎么進(jìn)行二次開發(fā)以及大部分API的用法。
                               圖二
步驟三:下載對應(yīng)軟件及代碼
根據(jù)自己的選擇,去Downloads里的ONBOARD SDK下載例程代碼以及DJI Assistant2(圖三)。
                             圖三
步驟四:注冊獲取開發(fā)ID和KEY
下載完代碼跟軟件后,可以看下Documentation中的Software Setup (圖四),需要在開發(fā)者網(wǎng)站里面注冊一個(gè)OSDK application ID and Key pair。
                                圖四
步驟五:將ID與KEY寫進(jìn)代碼
打開下載的代碼,點(diǎn)擊Activate.cpp,將自己的注冊的ID跟Key填進(jìn)去(圖五),那么,軟件部分其實(shí)已經(jīng)準(zhǔn)備好了。
                                圖五
步驟六:硬件連接,使能API控制,寫入訂閱信息頻率
接下來就是準(zhǔn)備好STM32F407的板子(如果沒有該型號,請自己移植下代碼)。按照Documentation 中的Hardware Setup,連接對應(yīng)的接口。官方例程中是采用串口三與N3飛控進(jìn)行通訊,串口二與電腦上位機(jī)通訊。串口二與電腦通訊,飛控初始化等出現(xiàn)任何問題可以在電腦端看到。因?yàn)槲沂褂玫陌遄哟谌慕邮沼米鱀BUS(硬件取反了),所以我把串口反過來用了。串口二用于與N3通訊,串口三用于與電腦通訊。飛控與板子連接好以后,打開電腦DJI Assistant2軟件,將N3飛控與電腦端連接,在DJI Assistant2軟件,選擇機(jī)型配置參數(shù)等,這個(gè)就不說了,自己百度,有很多教程。看下Documentation中的Software Setup,,有教程說明怎么配置API模式(圖六),使能API控制,并且需要選擇你要訂閱的信息的頻率。
                         圖六
可以看下我的代碼,我訂閱的一些信息是50HZ的,所以我訂閱的信息就在這個(gè)軟件選擇了50HZ。
步驟七:連接上位機(jī),跑官方例程,觀看現(xiàn)象
官方代碼中的main.cpp中,通過switch選擇你要試的例程(圖七),
                               圖七
然后此時(shí)可以將下載的代碼下載至板子中,打開DJI Assistant2中的模擬器(圖八),
                               圖八
可以看到飛機(jī)按照預(yù)設(shè)的軌跡進(jìn)行飛行。例如官方例程(圖九),飛機(jī)在虛擬器中會自動起飛距地面1.2米,然后往右邊方向飛行6米,再向前飛行6米,然后在回到原始位置并且降落。
圖九
飛機(jī)飛機(jī)如果測試到這里都沒問題,那么恭喜你,可以開始做室內(nèi)定位了。做定位之前,一定要把資料看一下,看下例程的代碼是怎么寫的,自己花點(diǎn)時(shí)間寫一下自己想實(shí)現(xiàn)的功能,然后可以在模擬器中看飛行效果,模擬器的飛行效果跟實(shí)際是差不多的,所以每次寫了新東西,需要現(xiàn)在模擬器試試,不要直接上飛機(jī)試。
步驟八:光流選型
要做室內(nèi)定位,那就要去買光流模塊以及激光模塊。光流模塊的話建議不熟悉光流算法的同學(xué)購買匿名的光流模塊。這款光流已經(jīng)融合了高度以及加速度計(jì)陀螺儀,數(shù)據(jù)比較好,用起來比較方便。光流數(shù)據(jù)主要用來水平定位,而激光高度數(shù)據(jù)要用來修正飛機(jī)飛行的高度,因?yàn)槭覂?nèi)純氣壓計(jì)定高是不穩(wěn)。具體實(shí)現(xiàn)過程代碼已經(jīng)寫明了注釋。如果想自己融合光流數(shù)據(jù)的同學(xué)可以購買JL3285A、優(yōu)象或者PMW3901,具體是實(shí)現(xiàn)過程就是使用陀螺儀的角速度數(shù)據(jù)與光流的像素?cái)?shù)據(jù)進(jìn)行融合,使得在原地?fù)u晃光流時(shí),可以用陀螺儀的數(shù)據(jù)去把光流的數(shù)據(jù)抵消掉,再把高度的信息加進(jìn)去融合,將最終的像素變化信息轉(zhuǎn)化為實(shí)際cm單位,再將該數(shù)據(jù)與地理坐標(biāo)系的加速度計(jì)進(jìn)行融合。這樣可以使得飛機(jī)在飛行的時(shí)候,下方有車子經(jīng)過不會嚴(yán)重干擾到。
定位思路 (代碼已注釋)
注意不一定要使用光流,也可以試試其他方法例如沈老師的vins
源算法+Realsense+manifold2.
網(wǎng)址https://zhuanlan.zhihu.com/p/59646674
SDK開發(fā)注意事項(xiàng)
                                 圖十
代碼文件:(大疆原先的例程都保留著沒有刪除)
Driver.cpp
板子初始化,并且判斷時(shí)間執(zhí)行對應(yīng)任務(wù)
Led.cpp   buzzer.cpp
主要用來提醒自己進(jìn)入SDK模式,自己用了蜂鳴器,比賽建議使用燈比較明顯,因?yàn)樗妮S噪聲太大
Time.cpp
原先大疆例程的系統(tǒng)時(shí)鐘以及定時(shí)器初始化
Control.cpp
主要是定位還有發(fā)送位置控制指令
Communication.cpp
初始化串口,用來與N3飛控以及電腦上位機(jī)通訊
Sub_information.cpp
用來訂閱相關(guān)信息
Pid.cpp
pid實(shí)現(xiàn)的函數(shù),建議大家有空可以試試自抗干擾(ADRC),不過任何改動可以在模擬器還有小飛機(jī)試試
Optical_flow.cpp
光流數(shù)據(jù)接收分析代碼,根據(jù)買的光流協(xié)議編寫





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1