新闻中心

入门大疆 SDK 开发前,你需要了解SDK的种类功能

相关案例 2018-01-08 14:54

  SDK(SoftwareDevelopmentKit),即软件开发工具包,用来开发适用于某个产品(比如DJIPhantom4)或某个平台(比如Windows)的软件,通常由产品或平台的厂商提供给开发者使用。在这个工具包里通常包括各种各样的调试工具、API文档、开发指南和模拟器。

无人机的配件工具

  而在大疆SDK里(以MobileSDK为例),为开发者提供的工具有:


  允许接入DJI产品的iOS/Android的代码库


  飞行模拟器及一些可视化工具


  调试工具及远程日志记录


  示例代码及教程


  开发者指南及API文档


  开发者可以利用这些SDK的工具,从无人机的相机、云台、飞控状态信息获取等接口入手,通过大疆提供的代码库向无人机发送多种控制指令,完成特定的飞行任务。


  P.S.对于编程新手来说,可能也会经常听到API(ApplicationProgrammingInterface)并想了解其与SDK的关系,江苏启飞刚好在网络上找到这么一张图,很好地阐释了各个名词之间的关系:

api和sdk的关系

  大疆SDK的种类


  大疆官方提供了移动端、机载端和视觉导航系统的SDK(MobileSDK,OnboardSDK和GuidanceSDK)。


  MobileSDK几乎全线支持大疆的硬件产品,在开发平台上支持现在主流的两大移动端系统平台:iOS和Android,换句话说,通过MobileSDK最后开发出来的就是我们常见的手机/平板app,只不过这个app在开发的时候调用了部分MobileSDK的API并封装成一个个可以用于操控无人机的功能。


  OnboardSDK则更强调在机载平台(包括妙算、禅思系列镜头、飞行控制器)上进行开发,属于硬件开发的范畴,更多的是处理数据通讯协议,通过发送码流来达到控制无人机的目的,对于有高运算数据处理需求的开发者来说,大疆的机载电脑(如妙算)和OnboardSDK就是很好的选择了。


  GuidanceSDK,顾名思义,就是为Guidance导航系统而设的SDK,通过SDK你可以从Guidance硬件上获取到各种输出数据,包括实时三维速度、IMU数据,五向超声波距离等等。


  用大疆SDK可以做什么?


  这取决于官方SDK提供的API种类,以及开发者的想象力。为了推广其SDK项目,大疆过去曾开展过SDK开发者大赛和编程马拉松比赛。想了解在这些比赛中开发者利用大疆SDK都玩出了什么「花样」,可以通过下方的文章链接进行回顾:


  历届DJI开发者大赛优秀作品汇总


  另外,AppStore或GooglePlay上也有不少基于大疆SDK开发的app,具体可参考江苏启飞之前推荐的部分软件:


  无人机航测用什么软件?这里给大家推荐这7款


  需要准备哪些方面的知识(以MobileSDK为例)


  不同产品的需求和使用场景会对开发基础有不同的要求,比如在测绘行业的,你需要了解有关GIS的知识,需要开发图像识别的,则需要掌握如OpenCV等图像处理的算法。这里只针对普遍的情况进行概括:


  iOS/Androidapp开发:这意味着你需要掌握Swift/Kotlin或其他适用于iOS/Android这两个平台的开发语言。这个其实与无人机并没有关系,但它是最基础的,因为大疆(Mobile)SDK开发本质上就是开发iOS/Android平台上的app。如果这块知识没掌握好,很可能在阅读API文档的时候便会遇到很大的麻烦。


  DJI产品组件:因为文档是英文的,所以需要熟悉一台无人机各组件的名称、用途及参数范围,对于刚从互联网转行到无人机行业的开发者来说,这点尤为重要。


  SDK框架:因为无人机有很多组件及子组件构成,所以需要大概了解每个组件都分别继承哪几个大类。


  飞行控制理论:无人机app的开发是面向三维的开发,了解空间坐标系系统(负责定位),及Roll、Pitch和Yaw的原理(负责移动)将会对开发很有帮助。


  API文档:最后才是SDK里最核心部分,你可以根据需求或自己的想法调用不同API来控制你的无人机。当然这部分的内容可以边开发便查阅。


  当一切都准备就绪后,便可以尝试运行SDK提供的示例代码了。


  小结


  由于安全原因,大疆并非完全开源,在涉及到限高、禁飞区等安全问题,开发者还是没法通过SDK来突破这些限制的。另外,对比开源飞控(如Pixhawk),大疆飞行系统更为稳定,也让开发者更为放心地进行开发。


  虽然基于大疆(Mobile)SDK的开发本质上还是写app,但因其控制的产品需要在半空中移动,对公共安全还是有一定的威胁,所以在真机测试前一定要先在模拟器上多番测试,对程序稳定性有较高的把握后,再找一个空旷少人的地方进行真机测试。


上一篇:基于无人机倾斜摄影系统的三维精细模型制作
下一篇:GIS可视化有关向地理地图映射数据的城市量化分析方法