关于这个SDK我前面写过几篇文章,不过还不深入以及不深刻。这篇文章写了关于OSDK中消息订阅的相关内容。
Dji Onboard SDK(边缘高性能SDK)
大疆(Dji)SDK思路前的准备(上)
https://developer.dji.com/cn/onboard-sdk/downloads/这里是官网
https://github.com/dji-sdk/Onboard-SDK/tree/4.1
论坛里面有个人发出这样的声音,巧了,我正在封装。可能在一段时间后,我回去合并一下库,假如。。。人家合并我的话。
https://stackoverflow.com/questions/tagged/dji-sdk
著名搞基论坛上面有个tag,关于dji-sdk的,有空我撸一边

这里应该就是负责这个SDK的员工,点进去有有趣的东西
对于无人机的开发,第一个重要的事情是各个模块之间的信息交互。接着是两个切实相关的主题,控制无人机的飞行以及从无人机中取数据流,数据流可以是状态的信息也可以是从相机回传的视频流。

一个简单的思维导图
SDK虽然庞杂,但是信息的流转的最重要的,尤其是对于一个无人机的应用来说,保证信息流的传输正确是很重要的,所以SDK中有大量的ack,重连,超时等机制,如果没有这些,可能SDK看起来好些。
然后SDK是纯C++编写的,使用起来可能有些门槛,我C写的凑合对于C++我还得学一下啊。因为这个语言据说很上头,一直也不敢学。
无人机有好多传感器,这些数据是不停从各种传感器里面产生。而这些数据是混杂在一起的,具体获得他们是需要用消息订阅的模式,这个东西我感觉是有点和ROS的节点一样。

这是一个订阅节点的订阅的样子
首先就是指明节点的名字是什么,这里的设计是用了枚举,有很多的Topic,具体我会写。
UID 这个地方我理解是统一标识符,身份证的作用。
真实数据的大小,FC(飞控)提供的主题的最大频率,订阅主题的频率,订阅的ID。最后的指针指向存储最新数据的数据缓冲区中主题的地址 ,这个是收尾的工作,也好理解,一堆数据最后要用你得放个存放的位置,不是吗?

可以订阅的主题

部分截图

用于 TOPIC_BATTERY_INFO 和数据广播的结构,返回电池状态

另外,因为是编译型的语言,都关注数据类型
真正的好程序,可读性是第一位的。这里的名称容量,电压,当前值,百分比。无人机的续航是永远的痛,以及炸机这个事情emmmm。电池这个东西还是需要不停的去观测的。

罗盘状态

如果你订阅这个主题,会返回上面的数字的一种
那么你就可以通过接收这个返回值来写程序,比如你的3,那么就可能要发送悬停命令,在安全的情况下快速迫降,把这个东西解决了再工作。
再看个有趣的东西,

T是油门,RPY是姿态信息。下面的有点看不懂,不过三个就够用。其实写程序就是在不停的处理数据。
就像这里,你就可以可视化这个摇杆的情况或是无人机的情况。都是可以的,只是数据而已。

云台是无人机的主要负载,有时候也需要它的一些信息。比如可以在初始化的时候进行使用。

无人机的动力来源是来自无刷电机,无刷电机这个东西哇,你可以测量的东西多,与之相关的电调:上面就是我们的电调信息
就是这个数据类型有点看不懂了
这个是一个LB2遥控器的原生数据的获取???是个啥遥控器?

咦,也是LB2 RC full raw data 命名的真好

真还有这么个东西。。。看了看价格(告辞)

在飞控上面接的,如果我没有看错,是N3的飞控

这个场景就更屌了

一套dji的无人机方案,家境贫寒,告辞

好像买个这性价比也挺高的,还可以使用OSDK

这个订阅是对无人机飞行信息的订阅,注释比较简单
用到的时候我会说,我现在不想说

后面有大量的模板,我其实对这个模板没有多少认识
这个东西写完好好看有没有
我理解的模板:
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。
模板是创建泛型类或函数的蓝图或公式。
模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计

这个参数是我们的可订阅主题

回来的东西是四元数,都算好了都

这里是可返回的东西,是个结构体

同样是可以返回其它的内容

前面是传入的参数,后面是返回的东西

看这个电池的订阅就知道了
我们再看看电池的实现:

出现了这pack
作用:调整结构体的边界对齐,让其以一个字节对齐;
<使结构体按1字节方式对齐>
编译器中提供了 #pragma pack(n) 来设定变量以n字节对齐方式。
n字节对齐就是说变量存放的起始地址的偏移量有两种情况:
第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式,
第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。
结构的总大小也有个约束条件,分下面两种情况:
写鸡儿C系语言就是个这,没什么好办法

MOP此命名空间通过广播或订阅封装了所有可用的遥测主题。