
一般而言,對(duì)接大疆的無人機(jī)的目的有如下方面:
l獲取無人機(jī)飛行過程中的實(shí)時(shí)畫面,用來直播
l獲取飛機(jī)飛行數(shù)據(jù)(如實(shí)時(shí)高度,實(shí)時(shí)經(jīng)緯度,實(shí)時(shí)飛機(jī)姿態(tài)等)
l獲取飛機(jī)靜態(tài)數(shù)據(jù)(如飛機(jī)基本信息、飛行記錄、電池信息等)
l操控飛機(jī)飛行(如起飛、降落,改變高度,操作操控桿,設(shè)定航飛任務(wù),拍照,錄視頻等)
l媒體管理(下載飛機(jī)記載內(nèi)存卡中的文件等)
l其它業(yè)務(wù)功能開發(fā)(如態(tài)勢感知,固件升級(jí),多飛機(jī)集中管控等)
對(duì)接方式有如下:
l應(yīng)用開發(fā):MobileSDK,UXSDK,WindowsSDK
l設(shè)備開發(fā):PayloadSDK,EdgeSDK,OnBoardSDK
l云開發(fā):大疆智圖API,上云API
l私有化服務(wù):4G私有化增強(qiáng)圖傳服務(wù)
其中有些已經(jīng)過時(shí),停止維護(hù)(如WindowsSDK,IOSSDK,OnBoardSDK),著重介紹MobileSDK和上云API,MobileSDK也僅僅圍繞Android,因?yàn)镮OS版本已經(jīng)廢棄。
大疆無人機(jī)的構(gòu)成由飛機(jī)和遙控器組成,對(duì)接大疆的無人機(jī)本質(zhì)是對(duì)接遙控器,因?yàn)闊o人機(jī)和遙控器通信是私有協(xié)議而且是近場通信
飛機(jī) <---> 遙控器 <---> 三方平臺(tái)
l飛機(jī)和遙控器是私有協(xié)議進(jìn)行近場通信
l遙控器和三方平臺(tái)是IP鏈路進(jìn)行通信,遙控器中有一個(gè)定制版的安卓系統(tǒng)
l三方平臺(tái)指非大疆軟件系統(tǒng),即對(duì)接方系統(tǒng)
飛機(jī) <---> 機(jī)場(dock) <---> 三方平臺(tái)
Mobile SDK是一款軟件開發(fā)套件,旨在讓開發(fā)者能夠訪問DJI無人機(jī)和手持相機(jī)產(chǎn)品的豐富功能。該SDK通過兼顧更底層的功能,諸如飛行穩(wěn)定,電池管理,信號(hào)傳輸和通信等,簡化了應(yīng)用程序開發(fā)的過程。這樣,開發(fā)者就不需要具備豐富的機(jī)器人或嵌入式系統(tǒng)背景知識(shí),而可以專注于DJI產(chǎn)品相關(guān)的行業(yè)應(yīng)用開發(fā)。適用于基于android和ios的應(yīng)用軟件集成,目的是使用android/ios應(yīng)用軟件控制飛行器;獲取飛行器數(shù)據(jù)(視頻、圖片、傳感器數(shù)據(jù))。移動(dòng)應(yīng)用、飛機(jī)遙控器、飛機(jī)的連接方式如下:
lV4V5不可以后臺(tái)推流,當(dāng)前頁面必須有Surface畫面渲染,不得最小化,跳轉(zhuǎn)頁面。
lV5支持RTMP(不支持RTMPS)、國標(biāo)GB28181、RTSP和Agora聲網(wǎng)(WebRTC),V4僅支持RTMP
l直播協(xié)議設(shè)置
nRTMP,需要setUrl。
nGB28181,需要setServerIP,setServerPort,setServerID,setAgentID,setPassword,setLocalPort和setChannel。
nRTSP,需要setUserName,setPassword和setPort(需要設(shè)置為8554)。
nAgora,需要setChannelId,setUid,setToken和enableSafety。
l拓展:本身DJI的H.264碼流中的SEI字段在行業(yè)版V3固件以前是空的,在V3固件之后添加了信息,由于維護(hù)成本等諸多因素,我們不對(duì)外開放DJI的H.264碼流的SEI的解析。我們了解到有的用戶希望在H.264碼流中的SEI中解析出無人機(jī)的地理位置和姿態(tài)信息,我們提供了更好的解決方案。
n如果你使用Mobile SDK與私有云連接,你可以通過Mobile SDK的接口獲取這些信息通過移動(dòng)設(shè)備的網(wǎng)絡(luò)傳輸?shù)剿接性破脚_(tái)。
n如果你使用DJI Pilot 2與私有云連接,你可以通過上云API將這些信息通過移動(dòng)設(shè)備的網(wǎng)絡(luò)傳輸?shù)剿接性破脚_(tái)。
l通過KeyAircraftLocation3D可以獲取飛行器的三維坐標(biāo),坐標(biāo)系為WGS84,高度為相對(duì)起飛點(diǎn)高度。
l通過KeyAircraftAttitude和KeyAircraftVelocity可以獲取飛行器的姿態(tài)和速度,坐標(biāo)系為NED。
l通過KeyTakeoffLocationAltitude可以獲取起飛點(diǎn)的海拔高度,該數(shù)據(jù)不精 確。
l通過KeyUltrasonicHeight可以獲取飛行器底部的超聲波模塊的測距高度
l調(diào)用KeyStartTakeoff將使飛行器起飛。
l調(diào)用KeyStartAutoLanding將開始降落,飛行器降落到離地0.7米左右懸停。此時(shí)KeyIsLandingConfirmationNeeded將變?yōu)閠rue,調(diào)用KeyConfirmLanding確認(rèn)最終降落。
僅適用于android,ios,旨在加快移動(dòng)應(yīng)用的開發(fā),提供了UI元素及開箱即用的組件。UXSDK實(shí)際上是使用MSDK的接口封裝出來的具備MSDK功能的UI控件,所以它同樣依賴MSDK。
制作UXSDK的目的是為了縮短開發(fā)者開發(fā)MSDK相關(guān)app的開發(fā)周期,通過我們預(yù)先制作好的控件,可以讓開發(fā)者快速地開發(fā)出類似DJI Pilot的app。UXSDK 4.X,這個(gè)版本的UXSDK使用了很多MSDK內(nèi)部(未開放)的方法,所以這個(gè)版本的UXSDK無法開源,由于UI控件無法做到高度的定制化,所以只能給啥用啥,4.16將會(huì)成為它的最后一個(gè)版本,后續(xù)再發(fā)版本只會(huì)發(fā)4.16.X的維護(hù)版本。
UXSDK 5.X,這個(gè)版本的UXSDK會(huì)被設(shè)置為開源版本,它將使用MSDK 5.X版本的所有對(duì)外接口、Key來實(shí)現(xiàn)。未來我們也會(huì)持續(xù)更新UXSDK 5.X版本,為其提供更加豐富的控件,由于其為開源版本,歡迎開發(fā)者對(duì)其進(jìn)行定制化或者制作新的UI控件更新到公共社區(qū)。
UXSDK V5將會(huì)以開源框架的形式存在于官方Sample中,以后不再有UXSDK V5這個(gè)概念存在,開發(fā)者可以在MSDK V5的官方Sample中看到一個(gè)開源的類似DJI Pilot 2的UI開源框架。
DJI 上云 API 主要是采用業(yè)界通用的 MQTT、HTTPS 和 WebSocket 協(xié)議,把飛機(jī)的能力抽象成物聯(lián)網(wǎng)設(shè)備的物模型,開發(fā)者可以很方便的基于這個(gè)物模型進(jìn)行業(yè)務(wù)開發(fā),同時(shí)不用去關(guān)心飛機(jī)本身復(fù)雜的飛行控制問題。此外,上云 API 內(nèi)置到 DJI Pilot 2 和大疆機(jī)場中,開發(fā)者無需重新開發(fā) App,即可把無人機(jī)接入云平臺(tái)。
目前對(duì)于 DJI 無人機(jī)接入第三方云平臺(tái),主要是基于 MSDK 開發(fā)定制 App,然后自己定義私有上云通信協(xié)議連接到云平臺(tái)中。這樣對(duì)于核心業(yè)務(wù)是開發(fā)云平臺(tái),無人機(jī)只是其中一個(gè)接入硬件設(shè)備的開發(fā)者來說,重新基于 MSDK 開發(fā) App 工作量大、成本高,同時(shí)還需要花很多精力在無人機(jī)功能接口適配上,從而導(dǎo)致整體的方案開發(fā)進(jìn)度較為緩慢。
上云 API 的推出主要期望解決開發(fā)者重新造輪子的苦惱。對(duì)于沒有 App 深度定制需求的開發(fā)者,直接可以采用 DJI Pilot 2 來和云平臺(tái)通信,使開發(fā)商可以更加專注于上云業(yè)務(wù)接口的開發(fā)與實(shí)現(xiàn)。
l類型:目前有兩種方式可以和三方云進(jìn)行對(duì)接,第 一個(gè)是pilot2,它是遙控器上面的一個(gè)安卓程序;第二個(gè)是dock,它是大疆機(jī)場。
l信息傳遞流程為:飛機(jī)--->網(wǎng)關(guān)(帶pilot2的遙控器 or 機(jī)場)--->三方云
機(jī)場上云需要借助遙控器內(nèi)安裝的 DJI Pilot 2。如下圖示,開發(fā)者可按照 Pilot 內(nèi)的指示一步步操作完成上云。在上云過程中,需要完成設(shè)備的檢查(如急停按鈕的檢查、網(wǎng)絡(luò)是否已經(jīng)連接等)、將飛行器與機(jī)場對(duì)頻、填寫上云配置信息(如填寫 MQTT 賬號(hào)密碼以實(shí)現(xiàn) MQTT 連接)等操作。
目前一個(gè)機(jī)場只能用一個(gè)飛機(jī)
dock上云需要先通過Pilot2配置三方云平臺(tái)登錄界面,登錄完成后拿到了三方云平臺(tái)信息(mqtt服務(wù)地址,流媒體服務(wù)地址等),這些信息下發(fā)到dock,后續(xù)dock和三方云平臺(tái)進(jìn)行交互。
直播功能主要是把無人機(jī)相機(jī)負(fù)載和大疆機(jī)場的監(jiān)控視頻碼流發(fā)給第三方云平臺(tái)進(jìn)行播放,用戶可以方便的在遠(yuǎn)程web頁面點(diǎn)擊直播。直播功能支持直播的開始、停止、清晰度設(shè)置、鏡頭切換。第三方云平臺(tái)需要預(yù)先部署MQTT網(wǎng)關(guān)以及流媒體服務(wù)器,DJI推流協(xié)議支持 Agora/RTMP/GB28181 等模式,其中MQTT網(wǎng)關(guān)主要用來做消息通信,配置信息設(shè)置和讀取。
l上云api:每一個(gè)飛機(jī)都通過各自的網(wǎng)關(guān)(Pilot2app或者dock)連接到三方云平臺(tái)
lMSDK:每一個(gè)飛機(jī)都通過與之配對(duì)的遙控器中的app(此app由非大疆公司開發(fā))和私有云服務(wù)連接
l對(duì)接現(xiàn)成的平臺(tái):大疆司空2平臺(tái)(目前為公有云產(chǎn)品無法私有化部署);已經(jīng)實(shí)現(xiàn)了GBT28181的平臺(tái)
公眾號(hào) 掃碼咨詢
![]() | 上海市閔行區(qū)中春路4999號(hào)莘莊商務(wù)樓1326室 |
![]() | service@covond.com |
![]() | m.jxetj.com |
![]() | 交換機(jī):18017588179(孫經(jīng)理) 無人機(jī):13311882358(孫總) |