大疆在行业的机器里面开放了一套特别的SDK,Onboard SDK:
官方的说明是这样的
按照我的理解就是,行业机器本身就性能强劲,完全可以放一个高性能的计算机上去,比如Intel的NPC,英伟达的TX2等,进行空中的实时处理。这个过程中势必要使用一个中间层连接记载计算机和无人机,这个中间层就是我们的重点。
三种连接方式
Linux,众所周知的开源之魂,主要是有视频流的处理任务的时候使用这个。
ROS是目前来讲成熟的机器人开发平台,如果使用ROS开发,将会拥有ROS的海量包,其实TT小飞机也是有ROS包的,如果未来有可能,一个M300装着300个TT在空中释放当武器也不是不可以。
后面是STM32,强实时性的RTOS,重实时性和控制,轻视觉和大带宽的场景。
几乎把所有的接口都开放了,比较好
支持的机型都是行业应用以及单独的飞控
一些相机也是支持ONB SDK
https://developer.dji.com/products/#!/onboard
具体的可以去这里了解,也可以咨询我
还有一个SDK是专门控制云台的SDK,我没有研究明白
我们这次的主角就是它了
https://github.com/dji-sdk/Onboard-SDK/tree/4.1
开源的地址。
解压打开,一会儿使用
可以看一下SDK的支持情况
M300是香饽饽,都支持,而且还在持续更新。
https://developer.dji.com/cn/document/26cd55ae-ef09-4463-b941-d6bb2bb98461
这是OSDK的3.0的版本位置。
DJI 相机媒体文件元数据白皮书正式发布,该文档描述了存储媒体文件元数据的格式和各个字段的含义。 开发者通过使用该白皮书,能够了解媒体文件中各个元数据以及相应字段的信息,在利用媒体文件元数据的基础上实现图像分析或建模等行业应用。
中文翻译导致公式难以辨认
这里截取英文版本
https://docs.opencv.org/4.3.0/d4/d94/tutorial_camera_calibration.html
来源在此,校准图像
结构
DJI 视频定时元数据
目录结构
.
├─dji 大疆定义的元数据proto文件
├─google 定义的google proto文件
└─dvtm_product.proto 产品相关元数据proto文件
时间戳
飞机的姿态信息
云台的信息
OSDK 是一个用于开发无人机应用程序的开发工具包,基于OSDK 开发的应用程序能够运行在机载计算机上,开发者通过调用OSDK 中指定的接口能够获取无人机上的各类数据,经开发者设计的软件逻辑和算法框架,执行相应的计算和处理,生成对应的控制指令控制无人机执行相应的动作,实现如自动化飞行、负载控制和视频图像分析等功能。
各种SDK在交互
OSDK分为以下几种功能:
TX1不是不可以用,主要看接口
STM32 控制 无人机:
平台的编译链,需要注意的地方
整体看起来Linux是最强大的,所有功能都支持,其次是ROS,STM32对获取视频流无望,没有高速接口,但是成本最低。
开发前需要使用调参软件打开API
无人机控制权限的等级由高至低依次为遥控器、基于MSDK 开发的移动端APP 和基于OSDK 开发的应用程序。
https://www.dji.com/cn/downloads/softwares/assistant-dji-2
为降低基于OSDK 开发的应用程序因内部故障导致无人机损毁或意外事件的发生,DJI 强烈要求开发者使用DJI Assistant 2中的模拟器模拟无人机的飞行状态,并根据模拟器中的数据和日志信息调试应用程序,降低无人机损毁或意外事件发生的风险,避免不必要的损失。
M300 RTK 支持开发者使用DJI Assistant 2 中的模拟器模拟基于OSDK 开发的应用程序。
那我没有机器也就是说可以编写了。试试看
先下载个说明书看看
https://dl.djicdn.com/downloads/matrice-300/20211125UM/M300_RTK_User_Manual_CHS_v3.0.pdf
就是无人机连电脑,模拟飞行
打开的模拟器的虚拟场景
气死我了,没飞机你还用不了,我又把我飞机取出来了
初始化画面
初始化的设置
右键可以控制飞行轨迹是否打开
飞机后面
飞机前面
都2021年了,还能入手Dji Mavic Air吗?对这个无人机感兴趣的可以戳前面看。
DJIFlightController
中的DJISimulator
md,昨天后半夜刚把AS卸载,造孽啊。。。
https://developer.dji.com/cn/document/99c67a52-3279-48e6-bf39-85677dfae617
可以使用3D游戏引擎 Unity3D ,在移动应用程序中显示模拟数据和飞机飞行行为(就像DJI官方应用程序中的“飞行模拟器”一样)。
可惜了,还得要飞机,。。。几万块钱,啧
继续看文档:
连接M300的时候用的是串口
没有实物飞机,不清楚这边的接口
记载的计算机和飞控的连接,USB2.0
前面装负载,就是镜头模组
接口定义
说明: 接入机载计算机后,请使用DJI Assistant 2 的Onboard SDK 配置界面设置M300 RTK 上OSDK 接口的波特率。
96w,。。。。我的天,确实牛
开发前需要这个应用
https://libusb.info/
关于视频流这些就是要用USB,安装这个库
http://www.ffmpeg.org/
这个是对视频流的一些处理
算法处理,官方应该是推荐的OpenCV,跟着就对了。
上面分别是第三方的Linux系统的一些说明,ROS也有,因为我没有机器就不做演示了,就是配置环境而已。
使用STM32板子连接的时候,引脚的定义,我这里分为了三组
串口协议,假期一定要研究明白。
官方推荐了一个野火的板子,具体的修改的地方
按照流程,现在就可以开发了。but,没机器,继续看:
在SDK的位置处,有一个配置的文件
app_id : //开发者的ID
app_key : //App Key
device: //串口端口号
bauderate : //串口波特率
acm_port : //ACM 端口号
写这些东西
编译也简单:
mkdir build && cd build
cmake .. 或 cmake .. -DADVANCED_SENSING=ON(使用视觉功能)
make
搜索这个视觉两个位置
Cmake不是很熟悉,可以看懂(假期学)
如果上面高级视觉这个定义有,就把括号里面的编译参数加上
ROS开发也是简单,基本流程:
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
catkin_init_workspace
我看看我2022年会不会有钱,有就买个A3的飞控,也可以开发。预算2k???不知道够不够。。。我这个PX4和APM有点像小玩具,PX4寄出去修了,做的老哥手艺咋样。。。
STM32 的 ID和key的配置位置
我们可以看看源码实现
这是这个关于密码的结构体定义
在这里定义
最后把字符串的信息给这个activate函数
上面的函数都来自于这里。。。我怎么看起来了源码(假期看C++)
回调函数这个是个重点,下去预习下,一次搞会,每次都出现。
应用程序通过DJI Onboard SDK 中的Vehicle
类调用DJI OSDK 的功能,因此使用OSDK 开发应用程序时,请先引入OSDK 开发包。
有点像一个头文件的管理器
两个名字空间
Vechile对象牛,不懂不搞个drone?搞个卡车。。。我不理解
我们看看它的实现怎么样?我像这个类的实例化应该是一堆初始化线程?
上面是类
下面是Linux的定义,抛真,收!
这个关闭也是很有看头,关了很多东西
好了,就当看完了,有机会我们细研究
引入OSDK 帮助文件
使用如下语句在程序中引入OSDK 帮助文件后,在Linux 平台上开发的应用程序即可读取用户的配置文件,激活DJI 的无人机。
#include <dji_linux_helpers.hpp>
OSDK 为开发者提供了同步和异步调用的接口。
步骤
关键是这个回调函数的设计。
经纬300,4w大概
经纬200好像性价比高些,就是OSDK,MSDK,PSDK好像不可以在一起使用,除了这个都挺好的。
看着不错