SDK(Software Development Kit),即软件开发工具包,用来开发适用于某个产品(比如 DJI Phantom 4)或某个平台(比如 Windows)的软件,通常由产品或平台的厂商提供给开发者使用。在这个工具包里通常包括各种各样的调试工具、API 文档、开发指南和模拟器。
而在大疆 SDK 里(以 Onborad SDK 为例),为开发者提供的工具有:
允许接入 DJI 产品的基于LInix的C++的代码库
飞行模拟器及一些可视化工具,如DJI Assistant 2
调试工具及远程日志记录
示例代码及教程 开发者指南及 API 文档
开发者可以利用这些 SDK 的工具,从无人机的相机、云台、飞控状态信息获取等接口入手,通过大疆提供的代码库向无人机发送多种控制指令,完成特定的飞行任务。
Onboard SDK 则更强调在机载平台(包括妙算、禅思系列镜头、飞行控制器)上进行开发,属于硬件开发的范畴,更多的是处理数据通讯协议,通过发送码流来达到控制无人机的目的,对于有高运算数据处理需求的开发者来说,大疆的机载电脑(如妙算)和 Onboard SDK 就是很好的选择了。
需要准备哪些方面的知识(以 Onboard SDK 为例)
不同产品的需求和使用场景会对开发基础有不同的要求,比如在测绘行业的,你需要了解有关 GIS 的知识,需要开发图像识别的,则需要掌握如 OpenCV 等图像处理的算法。这里只针对普遍的情况进行概括:
Onborad SDK 开发:这意味着你需要很好的掌握C++语言,因为你的程序代码都是基于C++来编写的。这个其实与无人机并没有关系,但它是最基础的。如果这块知识没掌握好,很可能在阅读 API 文档的时候便会遇到很大的麻烦。
DJI 产品组件:因为文档是英文的,所以需要熟悉一台无人机各组件的名称、用途及参数范围,对于刚从互联网转行到无人机行业的开发者来说,这点尤为重要,具体可参考 https://developer.dji.com/cn/onboard-sdk/documentation/introduction/homepage.html
SDK 框架:因为无人机有很多组件及子组件构成,所以需要大概了解每个组件都分别继承哪几个大类。点击查看https://developer.dji.com/cn/onboard-sdk/documentation/introduction/sdk-architectural-overview.html
飞行控制理论:无人机 app 的开发是面向三维的开发,了解空间坐标系系统(负责定位),及 Roll、Pitch 和 Yaw 的原理(负责移动)将会对开发很有帮助。(Note:这个可以到最后再去了解)
API 文档:最后才是 SDK 里最核心部分,你可以根据需求或自己的想法调用不同 API 来控制你的无人机。当然这部分的内容可以边开发便查阅。
当一切都准备就绪后,便可以尝试运行 SDK 提供的示例代码了,具体操作流程参见:https://developer.dji.com/cn/onboard-sdk/documentation/sample-doc/flight-control.html