前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dji-MSDK浅析

Dji-MSDK浅析

作者头像
云深无际
发布2022-01-05 08:18:03
1K0
发布2022-01-05 08:18:03
举报
文章被收录于专栏:云深之无迹

虽然OSDK功能强大,但是它使用起来可能不是那么容易,可能需要Linux主机下的开发能力较多,这年头搞C和C++要不是后端,要不就是嵌入式的那帮人。

而MSDK可能使用Java,kotlin,Swift等常用的语言,更加让人上手快些,而且相对来说,功能缺失的也不是很严重,刚刚好。

主要是满足IOS和安卓的平台

功能上面覆盖了,控制和信息交互以及在意的航点功能,这个航点功能为我们用无人机完成一些应用有了保障。

相对于OSDK只能在昂贵的行业机器上面应用,MSDK显得很通用,很平易近人,几乎完成了全系列机型的适配工作。

包括一些我们平时不常见的产品:大疆 OSMO + 入手初体验.上,这里我也曾经写过一些东西。

手持产品也是有了支持

代码语言:javascript
复制
https://developer.dji.com/cn/products/#!/mobile

具体产品也可以在这里去查找,也可以咨询我。

代码语言:javascript
复制
https://developer.dji.com/cn/mobile-sdk/downloads/

SDK只是一些接口,可以去上面我的链接处下载。

这些是测试用demo

代码语言:javascript
复制
https://github.com/orgs/dji-sdk/repositories?q=&type=all&language=java&sort=

SDK可以去这里下载

解压后可以看到大量的demo,可以直接使用

关于MSDK的具体开发,是调用已经封装好的API,这里进行一些简单的分类:

首先是对各种组件的集中管理功能。

真真正正控制的子组件,编写程序的时候也是回调用这里大量的方法

这里的API是赋予了飞行器真正的可以工作的能力。

因为航点任务使用的多:

航点就是在飞行的路径要去执行一些任务的点

在航点任务中,飞行器将在航点之间飞行,在航点执行动作,并调整航点之间的航向和高度。

航路点是飞机将飞往的物理位置。实际上,创建一系列航路点将为飞机制定飞行路线。动作也可以添加到航点,当飞机到达航点时会执行这些动作。

飞机以基本速度在航路点之间自动飞行。但是,用户可以通过使用俯仰操纵杆来改变速度。如果将杆向上推,速度会增加。如果将操纵杆向下推,则速度会减慢。可以向下推操纵杆以停止飞行器,并进一步推动以开始使飞行器沿着它来的路径返回。

当飞行器以相反的顺序通过航点时,不会在每个航点执行航点动作。如果松开摇杆,飞行器将再次按原顺序穿越航点,并继续执行航点动作(即使之前执行过)。

如果飞机沿着航路点任务一直拉回第一个航路点,那么它会悬停在原地,直到操纵杆被释放到足以让它再次从头到尾完成任务。

对于一个飞行的状态,你可以去访问它:

会在这些状态里面的一个

在执行航点的过程中可以去干预去往下个航点的速度,飞行器在航路点之间飞行时,你可以通过遥控器上的油门摇杆来调整飞行速度.

getMaxFlightSpeed当操纵杆被推到最大偏转时,这个偏移量是多少。

例如,如果maxFlightSpeed为10 m/s,那么将油门操纵杆向上推将增加10 m/s的飞行器速度,而向下推则使飞行器速度减去10 m/s。

如果遥控器摇杆未处于最大偏转,则偏移速度将在 [0, getMaxFlightSpeed]之间以 1000 步的分辨率进行插值。

如果偏移速度为负,则飞行器将向后飞行到先前的航路点。当它到达第一个航点时,它会悬停在原地,直到应用正速度。getMaxFlightSpeed范围为 [2,15] m/s。

飞到这个位置,可以做一些动作:

  1. 原地停留
  2. 拍照
  3. 录制
  4. 旋转机身
  5. 改变云台的俯仰角,就是可以直射地面还是平视前方

上面的录音,翻译错误,是录制视频的意思

当然我们也查询当前这个航点的执行情况。具体访问的状态去看上面的飞行状态。

看到这里是不是感觉索然无味,发出就这的声音~

不要慌,还有V2的航点API,让你天马行空的发挥你的创造力!

你是否需要每次的航点坐标用来做数据的可视化:

这个方法会帮助你

如果我们对一个高程感兴趣呢?毕竟不是所有的路都是平坦的。

我们可以使用这样的方法获得相对的高度

在两个航点间的飞行路径应该这么设置呢?我想直飞过去的时候少,如果航点之间就几米倒是可以~

我们可以选择这样的几种轨迹

有时候我们无人机在改变一个航向的时候,需要关注一个细节就是旋转方向:

这样的

我们可以记录这些方向来生成可视化的飞行日志。

还有好多,不一一说了,使用到再看。

说点好玩的API,我们经常想让一个无人机连续的跟着一个动的东西,比如车,动物,怎么办?

在FollowMeMission这个任务中:飞机被编程为跟踪并保持与某个物体(例如人或移动的车辆)之间的恒定距离。你可以使用它使飞行器跟随 GPS 设备,例如带有 GPS 信号的遥控器或移动设备。使用 WiFi 连接时 Mavic Pro 不支持。Spark 不支持它。

  1. 获取纬度
  2. 获取经度
  3. 获取高度
  4. 剩下一个就是航向角

可以设置这个

因为是追着GPS的信号跑,那就有可能没有捕捉到这个信号,所以有很多的状态。

还有一个有趣的是,热点任务,就是绕着一个半径干活.在 Hotpoint 任务中,飞机将围绕一个称为 Hot Point 的指定点以恒定半径重复飞行。用户可以控制飞行器以特定半径和高度绕热点飞行。在执行过程中,用户还可以通过物理遥控器修改其半径和速度。

还有两个飞行任务,我懒的写了,我好饿啊、、、

两个航点之间使用的贝塞尔曲线拟合路径

有个特殊的方法就是获取现在无人机在哪里使用。

MSDK的开发难度相对较低,就是API的调用,不过无人机开发和普通开发有点不一样。这个东西有点和解析几何相关,本质上就是一个曲线的分解,然后加入一点时间的控制。

无人机开发,毕竟是一个飞行的东西,安全测试不可少。

MSDK覆盖的机器种类非常的齐全,提供的功能也涵盖了无人机的方方面面,dji在这方面还是比较良心的。

OSDK是侧重于实时控制的,可以和MSDK联动开发,打造满足需求的应用。

这篇文章有个小尾巴,是关于无人机的控制权问题,下篇文章再讲。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
手游安全测试
手游安全测试(Security Radar,SR)为企业提供私密的安全测试服务,通过主动挖掘游戏业务安全漏洞(如钻石盗刷、服务器宕机、无敌秒杀等40多种漏洞),提前暴露游戏潜在安全风险,提供解决方案及时修复,最大程度降低事后外挂危害与外挂打击成本。该服务为腾讯游戏开放的手游安全漏洞挖掘技术,杜绝游戏外挂损失。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档