索引:
这节我们主要介绍与DJI SDK相关的无人机,以及使用DJI无人机时很重要的一个调参软件。DJI SDK支持的无人机机型较多,且不同机型存在差异较大。在这里不对无人机产品功能做详尽的介绍,以DJI SDK开发者视角介绍在开发过程中怎么关注和了解DJI 无人机的产品应用。而且将针对性的介绍一个较重要的调参软件,也是在开发过程中,开发者很常用的一个模拟器仿真软件--DJI Assistant2。
了解DJI无人机
使用DJI SDK的目的是对DJI无人机功能应用进行拓展,本质上是使用无人机这款产品。DJI SDK的功能都是基于无人机平台,所以了解DJI无人机是必不可少的步骤。开发者作为DJI无人机的直接用户,建议详细阅读用户手册。对应的机型官方都会发布详细的用户手册,随着机型功能的更新,用户手册也会同步更新。
M300官方资料下载链接:
https://www.dji.com/cn/matrice-300/downloads
下载资源中的releasenote,官方发布的固件版本和更新说明都会在此文档中进行说明,官方发布新固件后,用户们可以阅读此文档及时了解和更新。
用户手册是最详细的官方资料,当需要快查M300的技术特性时,也可以前往技术参数页面:
https://www.dji.com/cn/matrice-300/specs
本节结合DJI SDK开发与无人机使用特性,将主要的关注点提炼出来,可以做一个初步的了解。在后续的开发和使用中,可以参考此说明,并查阅用户手册有针对性的详细了解。
-
遥控器和官方APP--DJI Pilot
DJI无人机搭配DJI遥控器控制飞行,每架无人机都需要配备遥控器来搭配使用,DJI遥控器控制是DJI无人机目前唯一安全可信的控制器方式。无人机本身非网联无人机,使用SDK开发网联无人机也会检查遥控器的连接。常见的问题,使用OSDK开发网联控制时,不连接遥控器和DJI Pilot APP起飞,将会有半径50m,高30m的飞行区域限制。成功起飞后,OSDK可脱控飞行,飞机不掉电重启的情况下,将不再受限。一旦飞机掉电重启,再次起飞将会重新检查遥控器和Pilot APP的连接。
M300遥控器与无人机之间的主要通信链路是走的OcuSync行业版高清图传技术,也支持LTE链路。因为LTE链路通常是作为备份链路,使用SDK开发且需要使用遥控器与无人机的无线链路时,请使用OcuSync链路,SDK的很多功能在LTE上并未做适配,比如OSDK/PSDK与MSDK通信不支持LTE链路。
因为是机载端与地面通信的DJI链路,SDK的开发使用基本都会使用到这个链路。结合SDK我们展开说说:
-
Mobile SDK,是连接在遥控器上进行APP开发,通过遥控器与无人机的无线链路与飞机通信。没有遥控器,MSDK无法正常使用。
-
Onboard SDK,Onboard SDK是在机载计算机端进行二次开发的SDK,可用于机载端控制无人机飞行,可以开发脱控飞行,但上电起飞也会检测遥控器和APP连接。机载计算机端OSDK应用程序与遥控器端APP(Pilot或MSDK)交互,也通过此链路。
-
Payload SDK主要用于集成第三方负载,似乎与遥控器端没有直接交互,但是负载通常是通过遥控器APP端可视化,负载与遥控端的数据交互也通过此链路。
这里提到的无线链路是指物理层的链路,在使用SDK时其实无需关注到此物理层链路,只需要了解到使用DJI无人机时与地面的通信是通过什么实现的。在SDK层均通过API抽象出来成数据通道,开发者通过SDK开发机载端与遥控端通信时,只需要关注SDK提供的发送端与接收端API以及发送的数据即可。所以,遥控器与机载链路信号强度也会影响到SDK收发数据。
官方APP-DJI Pilot不可通过API来访问收发数据,SDK使用pilot APP通常是使用OSDK/PSDK的widget功能,实际也是数据的收发。在第六篇功能详解widget功能介绍中,我们将详细讲解widget功能通信和使用。
说明:
DJI遥控器与无人机的无线链路是DJI图传链路,机载端使用OSDK或PSDK开发时也可以安装和开发无线链路,但是此链路只能通过OSDK或PSDK设备端接入。此为OSDK/PSDK应用功能的拓展,非DJI无人机及DJI SDK本身功能,将在SDK介绍和功能应用拓展中详细介绍。
-
移动控制
移动控制是由飞控完成,通过MSDK、OSDK开放API给开发者可以通过程序实现对飞机的移动控制。
以下是比较典型的几种功能,
-
起飞/降落/返航:OSDK和MSDK中均有提供起飞、降落、返航的API,API通过指令发送给飞控。起飞、降落、返航的逻辑无法通过API设置。
-
起飞指令完成高度,1.2m。
-
降落到0.7m会有降落保护悬停,可在APP上确认降落。使用SDK可使用强制降落或确认降落API。
-
自动返航,确认返航点自动调整机头防线。自动返航中无法调整机头朝向,以及无法控制飞行器向左、右飞行。
-
视觉系统工作时:距离返航点50m内触发返航,将以当前高度返航。距离返航点50m以上触发返航,将以返航高度返航;若飞行器高于返航高度,将以当前高度返航。
-
视觉系统失效时:将以返航高度返航;若飞行器高于返航高度,将以当前高度返航。
-
-
-
joystick虚拟遥感:OSDK、MSDK均提供joystick功能。使用joystick功能需要先获取控制权,OSDK仅支持无人机在P模式下获取控制权。
-
航线任务:航线任务是飞行控制的一个完整飞行方案。Pilot、MSDK、OSDK的航线任务功能基本是一致的,通过Pilot/MSDK/OSDK预先设定好一系列的任务点或航线、以及航点动作,上传给飞控。飞控控再根据设定的航点或路线来顺序执行。所以SDK端使用航线任务时,是通过API上传航点,启停航点任务等控制性指令。
-
SDK控制飞行时,SDK控制飞机的最大速度受飞机最大速度限制。
-
GPS/RTK
M300机型仅提供GPS定位方案,无法使用外部的GPS。
M300RTK原理需补充
-
遥测数据订阅
遥测数据是无人机飞行状态的相关数据以及无人机上传感器产生的数据,数据发送的频率以及数据类型是由飞控端发布,SDK端从飞机订阅相关数据,可以在飞机及传感器支持的最大频率内设置,不可以超过飞控发布的最大频率。
-
避障
M300提供了六向视觉避障,其避障逻辑由飞控执行,SDK提供的接口只是用于开/关避障功能。APP上提供了设置避障距离控件,包括刹停距离和告警距离,达到告警距离时飞机会自动开始减速,不一定到刹停距离才停止,刹车距离与运行速度有一定的关系。
-
相机云台
SDK支持的相机云台型号需要无人机适配该机型。
-
禁飞区
禁飞区为飞机特性,使用SDK控制飞行时,同样受禁飞区限制。
-
模拟仿真
无人机本身存在着一定的安全风险,使用SDK开发控制飞行时,建议先在模拟器中充分仿真验证,确保安全的情况下再实际飞行测试。DJI Assistant2是官方提供的调参软件,且提供模拟器仿真功能。DJI Assistant2仿真工具必须连接到DJI实体无人机上才可进行仿真实验。
下一节我们重点介绍DJI Assistant2的使用。
调参及仿真软件 -- DJI Assistant2
DJI Assistant2是DJI 无人机官方提供的调参软件,以及模拟仿真器。DJI Assistant2上还有提供了PSDK/OSDK界面,用于OSDK/PSDK开发时的配置或查阅。
DJI官网软件下载的链接(不同的机型支持的DJI Assistant2版本可能不一样,支持产品栏可以查阅对应版本支持的机型,版本对应不上将无法正常识别飞机进行使用。
M300(M600/Pro、M200、M210、M2EA)支持的matrice版本): https://www.dji.com/cn/downloads/softwares/assistant-dji-2-for-matrice
附:
https://www.dji.com/cn/downloads/softwares/assistant-dji-2-for-autopilot
https://www.dji.com/cn/downloads/softwares/assistant-dji-2
DJI Assistant2的连接
DJI Assistant2是一个运行在PC(windows/Mac)上的软件,需要连接PC电脑和无人机才可正常使用。不同机型的调参接口以及连接线有细微差别,如下列出支持DJI PSDK/OSDK的主要几款机型以及连接说明。
-
M300调参接口,飞机上为type C端口,即使用USB-type C连接线。
-
M200系列,飞行器尾部的USB接口。连接线为双A-USB。
注:
-
M210系列无人机使用OSDK开发时,需要使用到双A USB连接线用作机载计算机与无人机通信的接口,此接口与调参软件连接接口复用。使用OSDK开发M210机型且需要使用USB通信时,无法同时使用DJI Assistant2模拟器进行仿真。具体参考硬件连接说明部分。
-
M300的OSDK接口与调参软件接口是独立的,均为type C型号接口。
-
A3/N3/M600调参软件接口
M600的飞控是使用的A3模块,DJI Assistant2连接端口为飞行器状态指示灯(LED模块)下方的Micro USB接口。
注:
-
M600/Pro使用的是A3,但是其固件非通用A3固件版本,M600与A3/N3适配的DJI Assistant2版本也不一样,具体参考上面提供的链接。硬件连接完全一致。
DJI Assistant2的运行
硬件连接正确,飞机上电启动,PC上启动DJI Assistant2,DJI Assistant2即可正常识别接入的机型。点击设置界面可以通过开关控件使能或关闭其对应的功能。注意PSDK、OSDK相关激活服务。主要用于PSDK 3.0之前的OSDK 4.1/OSDK 3.9 APPID/KEY的激活,如果设置界面关闭,将无法激活OSDK APPID/APPKEY。
登录开发者中心申请的DJI账号。
注意:
-
不登录账号,可以使用调参设置功能和模拟功能,但是PSDK界面使用受限。
-
PSDK/OSDK开发时使用的APPINFO与DJI账号对应,即APPINFO创建在登录的DJI账号下。
DJI Assistant2界面
固件升级
此界面用户可以用来查看飞机固件,操作升级/刷新/降级飞机固件。
日志导出
此界面是用于用户导出无人机的log。M300机型无人机log已经加密,导出来的日志,开发者和用户将无法直接查看,请结合具体问题与DJI技术支持联系。
-
为方便导出log和时间对应 飞机开机开始记录log,Assistant2中log显示时间为关机时间(断电时间),导出log文件名名称是导出log时计算机本地时间。 选择对应时间的log,可选择多个时间并点击保存到本地即可导出。
校准
M300提供了六项的双目视觉传感器,这个界面是用来校准M300双目视觉传感器,这部分操作与SDK关系也不大,按照操作指引去操作就好。
模拟器
DJI Assistant2提供的模拟器是较简单的飞行模拟和仿真环境,打开模拟器后可以看到下图所示界面,点击开始仿真即可开始。
-
模拟器设置中的经纬度(角度值),表示起飞点经纬度,当仿真中上传的航点距离较远时,可以更新和设置此起飞点经纬度。
-
右击仿真飞机界面可以进入setup,可以用来设置或保存飞行轨迹。
-
DJI Assistant2提供的模拟器仅能仿真GPS环境,当开始仿真后,仿真环境就自动进入了GPS信号良好的环境,与飞机实际的GPS信号强度没有关系。
-
仿真环境中部分飞机数据是构造的虚假数据,若需要获取飞机相关数据,比如加速度、姿态等,建议在实际飞机上读取(关闭模拟器)。
-
模拟器不能模拟RTK环境(APP上启用RTK后,控制飞行将会失败)、不能模拟云台负载设备。
Payload SDK
Payload SDK界面提供了PSDK开发的负载设备功能的配置控件或状态显示。
说明:
-
不登录开发者账号或者登陆与PSDK负载APPINFO不匹配的开发者账号,这个界面就会无法显示,或者显示控件不全。
-
需要连接skyport/x-port,此界面才会有显示。
-
需要先将skyport/X-PORT绑定,波特率是对应的PSDK负载与skyport/X-PORT串口通信的波特率。
-
下图所示,已经绑定,PSDK串口通信的波特率为460800。负载连接状态未连接表示PSDK程序没有启动,PSDK程序正常启动且与skyport通信正常,负载连接状态将显示已连接。
-
连接PSDK负载设备后,固件升级界面也将显示连接的skyport/X-PORT固件,使用DJI Assistant2可进行升级/降级/刷新等操作。
-
使用X-PORT,对应的界面还会有X-PORT相关的云台设置和调整的控件,其他设置与Skyport v2一致。
Onboard SDK
Onboard SDK界面是与OSDK开发相关的设置界面。OSDK 4.1与PSDK 3.0版本中的OSDK功能,此界面设置有更新。
OSDK 4.1版本,必须要先勾选启动API控制,勾选遥控失控不切SDK,设置波特率。 PSDK 3.0版本,启动API控制在飞机固件(PSDK3.0对应的V3固件)中默认开启。波特率由代码配置设置,运行程序后,飞机将与PSDK协商设定波特率。使用PSDK 3.0版本不需要先通过DJI Assistant2来启动API控制和设置波特率。但是此界面在PSDK 3.0运行过后更改,飞机依旧会生效。PSDK 3.0成功运行后慎重更改启动API控制和波特率设置,否则可能导致SDK与飞机的通信失败。
其他设置说明:
-
遥控失控不切SDK,实际上表示的是设置允许OSDK脱控飞行。当勾选此功能后,遥控器失去连接,此时若OSDK拥有控制权的情况下,OSDK可以继续执行控制,飞机不会进入遥控失联逻辑。 当不勾选此选项时,只要遥控器失联,飞机就会进入遥控失联逻辑。 对应的SDK失控策略,对应的当OSDK拥有控制权,且已经勾选遥控失控不切SDK后,当遥控器失联,且OSDK与飞机断开连接,飞机会执行OSDK的失联策略。
-
数据传输率和数据类型,以及地面站状态推送功能,均与OSDK的广播包功能有关系,当需要通过OSDK的广播方式读取对应的数据时,需要先勾选地面站状态推送,且设置对应的数据广播频率。
-
Waypoint mission(v1)的状态回调,必须要勾选地面站状态推送,否则,其状态回调不会被触发。
-
广播数据包通过串口传输到OSDK机载计算机端,全开放数据发送,可能会导致串口通信带宽不够出现奇怪的现象,且PSDK 3.0中OSDK端口已经停止了广播方式的维护,建议OSDK端口通过订阅方式获取遥测数据,广播包在此界面全部设置为不发送。
评论
0 条评论
请登录写评论。