虽然OSDK功能强大,但是它使用起来可能不是那么容易,可能需要Linux主机下的开发能力较多,这年头搞C和C++要不是后端,要不就是嵌入式的那帮人。
而MSDK可能使用Java,kotlin,Swift等常用的语言,更加让人上手快些,而且相对来说,功能缺失的也不是很严重,刚刚好。
主要是满足IOS和安卓的平台
功能上面覆盖了,控制和信息交互以及在意的航点功能,这个航点功能为我们用无人机完成一些应用有了保障。
相对于OSDK只能在昂贵的行业机器上面应用,MSDK显得很通用,很平易近人,几乎完成了全系列机型的适配工作。
包括一些我们平时不常见的产品:大疆 OSMO + 入手初体验.上,这里我也曾经写过一些东西。
手持产品也是有了支持
https://developer.dji.com/cn/products/#!/mobile
具体产品也可以在这里去查找,也可以咨询我。
https://developer.dji.com/cn/mobile-sdk/downloads/
SDK只是一些接口,可以去上面我的链接处下载。
这些是测试用demo
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。
飞到这个位置,可以做一些动作:
上面的录音,翻译错误,是录制视频的意思
当然我们也查询当前这个航点的执行情况。具体访问的状态去看上面的飞行状态。
看到这里是不是感觉索然无味,发出就这的声音~
不要慌,还有V2的航点API,让你天马行空的发挥你的创造力!
你是否需要每次的航点坐标用来做数据的可视化:
这个方法会帮助你
如果我们对一个高程感兴趣呢?毕竟不是所有的路都是平坦的。
我们可以使用这样的方法获得相对的高度
在两个航点间的飞行路径应该这么设置呢?我想直飞过去的时候少,如果航点之间就几米倒是可以~
我们可以选择这样的几种轨迹
有时候我们无人机在改变一个航向的时候,需要关注一个细节就是旋转方向:
这样的
我们可以记录这些方向来生成可视化的飞行日志。
还有好多,不一一说了,使用到再看。
说点好玩的API,我们经常想让一个无人机连续的跟着一个动的东西,比如车,动物,怎么办?
在FollowMeMission这个任务中:飞机被编程为跟踪并保持与某个物体(例如人或移动的车辆)之间的恒定距离。你可以使用它使飞行器跟随 GPS 设备,例如带有 GPS 信号的遥控器或移动设备。使用 WiFi 连接时 Mavic Pro 不支持。Spark 不支持它。
可以设置这个
因为是追着GPS的信号跑,那就有可能没有捕捉到这个信号,所以有很多的状态。
还有一个有趣的是,热点任务,就是绕着一个半径干活.在 Hotpoint 任务中,飞机将围绕一个称为 Hot Point 的指定点以恒定半径重复飞行。用户可以控制飞行器以特定半径和高度绕热点飞行。在执行过程中,用户还可以通过物理遥控器修改其半径和速度。
还有两个飞行任务,我懒的写了,我好饿啊、、、
两个航点之间使用的贝塞尔曲线拟合路径
有个特殊的方法就是获取现在无人机在哪里使用。
MSDK的开发难度相对较低,就是API的调用,不过无人机开发和普通开发有点不一样。这个东西有点和解析几何相关,本质上就是一个曲线的分解,然后加入一点时间的控制。
无人机开发,毕竟是一个飞行的东西,安全测试不可少。
MSDK覆盖的机器种类非常的齐全,提供的功能也涵盖了无人机的方方面面,dji在这方面还是比较良心的。
OSDK是侧重于实时控制的,可以和MSDK联动开发,打造满足需求的应用。
这篇文章有个小尾巴,是关于无人机的控制权问题,下篇文章再讲。