简述大疆无人机对接

本文涉及的产品
性能测试 PTS,5000VUM额度
可观测可视化 Grafana 版,10个用户账号 1个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【2月更文挑战第7天】本文介绍了对接大疆无人机的主要目的,包括实时画面获取、飞行数据监测、操控飞行、媒体管理和业务功能开发等,并列举了多种开发接口如MobileSDK、UXSDK、云开发API等。重点讨论了MobileSDK在Android平台的应用,包括SDK集成步骤、直播推流和获取飞机实时数据的细节。另外,UXSDK用于加速应用开发,提供预设UI组件。上云API则简化了无人机与第三方云平台的集成,支持MQTT、HTTPS和WebSocket协议,适用于行业级无人机。对接流程涉及Pilot2和Dock的配置,以及数据传输和业务功能处理。文章还提及了如何对接多个飞机的方法。

[toc]

概述

一般而言,对接大疆的无人机的目的有如下方面:

  • 获取无人机飞行过程中的实时画面,用来直播
  • 获取飞机飞行数据(如实时高度,实时经纬度,实时飞机姿态等)
  • 获取飞机静态数据(如飞机基本信息、飞行记录、电池信息等)
  • 操控飞机飞行(如起飞、降落,改变高度,操作操控杆,设定航飞任务,拍照,录视频等)
  • 媒体管理(下载飞机记载内存卡中的文件等)
  • 其它业务功能开发(如态势感知,固件升级,多飞机集中管控等)

至于应用场景,那就太广泛了,如消防、测绘、林业等等,可以赋能各行各业。

从开发者官网可以看到对接方式有如下:

  • 应用开发:MobileSDK,UXSDK,WindowsSDK
  • 设备开发:PayloadSDK,EdgeSDK,OnBoardSDK
  • 云开发:大疆智图API,上云API
  • 私有化服务:4G私有化增强图传服务

其中有些已经过时,停止维护(如WindowsSDK,IOSSDK,OnBoardSDK),本文着重介绍MobileSDK和上云API,MobileSDK也仅仅围绕Android,因为IOS版本已经废弃。

大疆无人机的构成由飞机和遥控器组成,对接大疆的无人机本质是对接遥控器,因为无人机和遥控器通信是私有协议而且是近场通信,官方叫法是“图传”。大致的流程如下:

飞机 <---> 遥控器 <---> 三方平台

其中:

  • 飞机和遥控器是私有协议进行近场通信
  • 遥控器和三方平台是IP链路进行通信,遥控器中有一个定制版的安卓系统
  • 三方平台指非大疆软件系统,即对接方系统

另外,还有一个叫大疆机场(dock)的产品,它是一个硬件产品,顾名思义就是用来停放飞机的,一个机场对应一个飞机。那么这种情况下流程就变成了:

飞机 <---> 机场(dock) <---> 三方平台

MSDK对接

MSDK简介

Mobile SDK是一款软件开发套件,旨在让开发者能够访问DJI无人机和手持相机产品的丰富功能。该SDK通过兼顾更底层的功能,诸如飞行稳定,电池管理,信号传输和通信等,简化了应用程序开发的过程。这样,开发者就不需要具备丰富的机器人或嵌入式系统背景知识,而可以专注于DJI产品相关的行业应用开发。适用于基于android和ios的应用软件集成,目的是使用android/ios应用软件控制飞行器;获取飞行器数据(视频、图片、传感器数据)。移动应用、飞机遥控器、飞机的连接方式如下:

Image1.png

MSDK集成步骤

● sdk版本:V4和V5不兼容,自20220321开始主推V5,V4将封存仅修改严重bug
● V5仅支持android,需要android studio IDE
● 申请appkey:https://developer.dji.com/user/apps/#all
● 将官方Sample 跑起来:用来学习和理解(github地址:https://github.com/dji-sdk/Mobile-SDK-Android-V5)
● 将MSDK集成到自己的android项目中
● 编写代码和MSDK的接口进行交互
● 打包成APK,安装到遥控器上面使用
● APK可以通过ip链路和私有云服务交互

直播推流

  • V4\V5不可以后台推流,当前页面必须有Surface画面渲染,不得最小化,跳转页面。
  • V5支持RTMP(不支持RTMPS)、国标GB28181、RTSP和Agora声网(WebRTC),V4仅支持RTMP
  • 直播协议设置
    • RTMP,需要setUrl。
    • GB28181,需要setServerIP,setServerPort,setServerID,setAgentID,setPassword,setLocalPort和setChannel。
    • RTSP,需要setUserName,setPassword和setPort(需要设置为8554)。
    • Agora,需要setChannelId,setUid,setToken和enableSafety。
  • 拓展:本身DJI的H.264码流中的SEI字段在行业版V3固件以前是空的,在V3固件之后添加了信息,由于维护成本等诸多因素,我们不对外开放DJI的H.264码流的SEI的解析。我们了解到有的用户希望在H.264码流中的SEI中解析出无人机的地理位置和姿态信息,我们提供了更好的解决方案。
    • 如果你使用Mobile SDK与私有云连接,你可以通过Mobile SDK的接口获取这些信息通过移动设备的网络传输到私有云平台。
    • 如果你使用DJI Pilot 2与私有云连接,你可以通过上云API将这些信息通过移动设备的网络传输到私有云平台。

获取飞机实时数据

  • 通过KeyAircraftLocation3D可以获取飞行器的三维坐标,坐标系为WGS84,高度为相对起飞点高度。
  • 通过KeyAircraftAttitude和KeyAircraftVelocity可以获取飞行器的姿态和速度,坐标系为NED。
  • 通过KeyTakeoffLocationAltitude可以获取起飞点的海拔高度,该数据不精确。
  • 通过KeyUltrasonicHeight可以获取飞行器底部的超声波模块的测距高度
  • 调用KeyStartTakeoff将使飞行器起飞。
  • 调用KeyStartAutoLanding将开始降落,飞行器降落到离地0.7米左右悬停。此时KeyIsLandingConfirmationNeeded将变为true,调用KeyConfirmLanding确认最终降落。

UX SDK

仅适用于android,ios,旨在加快移动应用的开发,提供了UI元素及开箱即用的组件。UXSDK实际上是使用MSDK的接口封装出来的具备MSDK功能的UI控件,所以它同样依赖MSDK。

制作UXSDK的目的是为了缩短开发者开发MSDK相关app的开发周期,通过我们预先制作好的控件,可以让开发者快速地开发出类似DJI Pilot的app。UXSDK 4.X,这个版本的UXSDK使用了很多MSDK内部(未开放)的方法,所以这个版本的UXSDK无法开源,由于UI控件无法做到高度的定制化,所以只能给啥用啥,4.16将会成为它的最后一个版本,后续再发版本只会发4.16.X的维护版本。

UXSDK 5.X,这个版本的UXSDK会被设置为开源版本,它将使用MSDK 5.X版本的所有对外接口、Key来实现。未来我们也会持续更新UXSDK 5.X版本,为其提供更加丰富的控件,由于其为开源版本,欢迎开发者对其进行定制化或者制作新的UI控件更新到公共社区。

UXSDK V5将会以开源框架的形式存在于官方Sample中,以后不再有UXSDK V5这个概念存在,开发者可以在MSDK V5的官方Sample中看到一个开源的类似DJI Pilot 2的UI开源框架。

上云API

上云API简介

DJI 上云 API 主要是采用业界通用的 MQTT、HTTPS 和 WebSocket 协议,把飞机的能力抽象成物联网设备的物模型,开发者可以很方便的基于这个物模型进行业务开发,同时不用去关心飞机本身复杂的飞行控制问题。此外,上云 API 内置到 DJI Pilot 2 和大疆机场中,开发者无需重新开发 App,即可把无人机接入云平台。

业务架构图

Image2.png

目前对于 DJI 无人机接入第三方云平台,主要是基于 MSDK 开发定制 App,然后自己定义私有上云通信协议连接到云平台中。这样对于核心业务是开发云平台,无人机只是其中一个接入硬件设备的开发者来说,重新基于 MSDK 开发 App 工作量大、成本高,同时还需要花很多精力在无人机功能接口适配上,从而导致整体的方案开发进度较为缓慢。

Image3.png

上云 API 的推出主要期望解决开发者重新造轮子的苦恼。对于没有 App 深度定制需求的开发者,直接可以采用 DJI Pilot 2 来和云平台通信,使开发商可以更加专注于上云业务接口的开发与实现。

Image4.png

软件架构图

Image5.png

上云API主要用来对接专业级、行业级无人机,消费级无人机并不支持,机型支持如下:

Image6.png

上云API对接步骤

  • 类型:目前有两种方式可以和三方云进行对接,第一个是pilot2,它是遥控器上面的一个安卓程序;第二个是dock,它是大疆机场。
  • 信息传递流程为:飞机--->网关(带pilot2的遥控器 or 机场)--->三方云
  • 环境清单;
      * 前端(ts,vue,websocker,linux,高德地图开放平台js api)
      * 后端(java,mysql,mqtt,redis,websocket);
      * 版本(java >=11,mysql8.0.26,EMQX4.4.0,redis6.2,nginx1.20.2,vue3.0.5,nodejs17.8);
      * docker可选
    
  • 在大疆开发者网站注册成为开发者(https://developer.dji.com/cn/user/apps/#all)
  • 在大疆开发者网站创建应用,拿到API交互所需的APP ID、APP 秘钥、APP License
  • 将官方Sample 跑起来:用来学习和理解(github地址:https://github.com/dji-sdk/Cloud-API-Demo-Web,https://github.com/dji-sdk/ DJI-Cloud-API-Demo)
  • 开发三方云平台(登录页面;http服务;mqtt服务;推拉流服务等)
  • 在pilot中配置第三方云平台登录地址,并登录,token会存储到pilot中
  • 在pilot中配置其它第三方云平台的信息
  • pilot和第三方云进行数据的传输和业务功能的处理;dock和第三方云进行数据的传输和业务功能的处理
  • pilot程序退出或者飞机下线,断开和第三方云的链接
  • 目前一个机场只能用一个飞机,当飞机下线后,dock和三方云平台的链接也将终止

Pilot上云

Pilot怎么安装

Pilot2 不提供单独的安装包,无法单独获取安装包,只能通过升级固件安装Pilot。目前Pilot2 不提供单独的安装包,需要升级遥控器固件到指定的版本,遥控器固件中提供了内置的安装包。如果升级了遥控器,但是Pilot2 没有升级,需要进入遥控器的设置,手动卸载当前Pilot2 版本。升级方式:通过上方下载地址下载离线安装包进行离线升级,通过调参软件DJI Assistant 2(行业系列)升级对应的遥控器固件版本。

配置三方云平台地址

如下图所示,在DJI Pilot 2的主页面云服务栏目中有“开放平台”入口,然后在开放平台页面中输入访问的URL链接即可发起连接。由于首次请求H5页面,并没有Token信息,所以需要服务器端开发一个H5登录页面,DJI Pilot 2在每次配置完访问链接,都先去拉取该页面,然后后续的获取Token动作均由该H5页面完成

Image7.png

Image8.png

直播

仅关注 DJI PILOT 交互流程,先不用理会“机场”交互流程,机场的交互流程下面会详细讲

Image9.png

获取飞机数据

Dock上云

Dock上云简介

机场上云需要借助遥控器内安装的 DJI Pilot 2。如下图示,开发者可按照 Pilot 内的指示一步步操作完成上云。在上云过程中,需要完成设备的检查(如急停按钮的检查、网络是否已经连接等)、将飞行器与机场对频、填写上云配置信息(如填写 MQTT 账号密码以实现 MQTT 连接)等操作。

目前一个机场只能用一个飞机

dock上云需要先通过Pilot2配置三方云平台登录界面,登录完成后拿到了三方云平台信息(mqtt服务地址,流媒体服务地址等),这些信息下发到dock,后续dock和三方云平台进行交互。

直播方案

直播功能主要是把无人机相机负载和大疆机场的监控视频码流发给第三方云平台进行播放,用户可以方便的在远程web页面点击直播。直播功能支持直播的开始、停止、清晰度设置、镜头切换。第三方云平台需要预先部署MQTT网关以及流媒体服务器,DJI推流协议支持 Agora/RTMP/GB28181 等模式,其中MQTT网关主要用来做消息通信,配置信息设置和读取。

Image10.png

设备管理

设备管理功能支持设备向云端上报拓扑信息、推送设备属性、以及云端对设备的属性进行设置。让用户可以在云端查看以及调整设备状态,更为方便地展开工作。mqtt协议进行通信,通过此方式三方云平台可以获取到飞机的实时经纬度高度,云台三个角度等数据。

Image11.png

其中设备属性中可以获取到高度、云台三个角度信息、飞机三个角度信息、经纬度等,详见:https://developer.dji.com/doc/cloud-api-tutorial/cn/api-reference/dock-to-cloud/mqtt/aircraft/properties.html

如何对接多个飞机

  • 上云api:每一个飞机都通过各自的网关(Pilot2app或者dock)连接到三方云平台
  • MSDK:每一个飞机都通过与之配对的遥控器中的app(此app由非大疆公司开发)和私有云服务连接
  • 对接现成的平台:大疆司空2平台(目前为公有云产品无法私有化部署);已经实现了GBT28181的平台

引用

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
移动开发 Java API
大疆无人机对接
本文介绍了大疆无人机对接第三方云平台的方案,包括设备对接和CloudAPI对接两种方式,重点讨论了CloudAPI对接。CloudAPI对接方案通过DJI Pilot 2或大疆机场将无人机与第三方云平台连接,实现低门槛接入,无需重复开发APP。方案优势在于让开发者更专注于业务开发,而非无人机功能适配。文章详细阐述了对接流程,包括环境准备、申请APPKey、对接流程、直播功能及获取无人机实时数据等内容,并提供了丰富的接口说明和技术支持资源。
1145 3
大疆无人机对接
|
3月前
|
人工智能 安全 量子技术
大疆DJI无人机等你来拿,蚂蚁集团agentUniverse 多智能体框架有奖征文
agentUniverse有奖征文活动来啦!分享agentUniverse的实践经验、亦或是剖析市面上各路智能体技术理念、对比开源框架的洞见,都有机会获得大疆无人机!
大疆DJI无人机等你来拿,蚂蚁集团agentUniverse 多智能体框架有奖征文
|
编解码 监控 物联网
【学员源鑫笔记】韦东山物联网流媒体实战项目-智慧家居视频监控系统(值得收藏)
【学员源鑫笔记】韦东山物联网流媒体实战项目-智慧家居视频监控系统(值得收藏)
747 0
|
存储 监控 算法
2022赛季RoboMaster 空中机器人六轴无人机云台程序框架开源
2022赛季RoboMaster 空中机器人六轴无人机云台程序框架开源
441 0
|
机器学习/深度学习 存储 传感器
自动驾驶的“天眼”!聊一聊高精地图领域中所有主流的制作方案(下)
在过去几年中,自动驾驶一直是最受欢迎和最具挑战性的话题之一。在实现完全自主的道路上,研究人员利用了各种传感器,如激光雷达、相机、惯性测量单元(IMU)和GPS,并开发了用于自动驾驶应用的智能算法,如目标检测、目标分割、障碍避免和路径规划。近年来,高清晰度(HD)地图引起了广泛关注。
自动驾驶的“天眼”!聊一聊高精地图领域中所有主流的制作方案(下)
|
自动驾驶 搜索推荐 BI
【氚云】翰动无人机|系统一飞冲天,业务如虎添翼
翰动无人机|系统一飞冲天,业务如虎添翼
293 0
【氚云】翰动无人机|系统一飞冲天,业务如虎添翼
|
JavaScript 前端开发 物联网
ThingJS官方案例(五):物联网室内3D定位导航,上下楼怎么办?
用户需要购买名牌香薰,又或者用餐时想吃泰国菜,在庞大、复杂又容易迷路的购物中心,并不是易事。国内购物中心内几乎都遍布了Wi-Fi热点,其实利用Wi-Fi热点进行室内定位和导航,在技术层面已经成熟。
ThingJS官方案例(五):物联网室内3D定位导航,上下楼怎么办?
|
人工智能 监控 数据可视化
ThingJS:部署物联网不用买买买,互联互动是切入点
部署物联网,不是让你无止尽地采购和学习新技术,不妨看看企业早就拥有的设备,形成互联互动
ThingJS:部署物联网不用买买买,互联互动是切入点
|
数据可视化 物联网 虚拟化
腾讯滨海大厦 智能楼宇 智慧建筑 3D可视化管理系统-优锘科技-ThingJS物联网开发案例
基于ThingJS平台开发的智慧楼宇3D可视化系统,是以3D虚拟化技术为基础,以数字化、可视化、智能化理念为目标,构建园区、楼宇、室内、智能设备的逐级可视;基于三维场景及集成的智能楼宇管理系统,以直观、动态的形式展示楼宇内所有智能设备的空间分布及工况;以高亮、动画的形式展示楼宇内业务管线流向及工作原理;以悬浮信息牌的形式展示楼宇内智能实时监测、告警信息;以图表、数据对比形式展示楼宇内综合能耗统计;对需控制或应急处理的智能设备可进行远程开关操作。
7188 0