无人机 | A3 PRO 外设进阶
A3 Pro 外设进阶
SDK
SDK (Software Development Kit),即软件开发包,一般是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等,建立应用软件时的开发工具的集合。通俗来说,就是第三方服务商提供的实现产品软件某项功能的工具包。
举例:
队长让我完成Cygnomatic网站上的某个业务功能,我觉得开发难度太大了,效率很低下。随后我了解到了华为云频台上的相关功能,于是在基于华为云SDK下,通过编码调用华为云API,可以访问华为云的资源和数据。
API
API (Application Programming Interface),即应用程序接口,一般是一些预先定义的函数,目的是提供应用程序与开发人员基于软件或硬件得以访问一组例程的能力,而又无需访问源码或理解内部工作机制的细节。
举例:
队长让我完成Cygnomatic网站上的无人机技术方案查询软件,我觉得要提高工作的效率,于是在写查询的代码中,引入了Megrez平台的查询接口,这样就能轻松的实现。
API和SDK的区别
API是一个函数,有特定的功能;SDK是一个很多功能函数的集合体,是一个工具包
API是数据接口,SDK是开发集成工作环境,需要在SDK的环境下来调用API
API接口对接过程中所需的环境需要自行提供。SDK不仅提供开发环境,还能提供很多API
主控器额外端口说明
5号口:RF接收机接口(DJI Lightbridge 2)
6号口:DJI智能电调通信接口 iESC
12号口:API串口通信接口(Onboard SDK)
13号口:F5-F8 多功能PWM输入/输出接口
14号口:F1-F4 多功能PWM输出接口
RF接收机接口
RF接收机接口和第15号口的S-BUS接收机接口,有什么区别呢?
可以看到,RF接收机接口,是利用D-BUS连接线连的。
而我们用的接收机,天地飞接收机RF206S,走的是S-BUS连接线。
D-BUS | S-BUS | W-BUS
这就意味着,这两种接收机使用的是不同的通信协议。
但是实际上,我们使用的天地飞接收机RF206S,在官方文档上写的是W-BUS协议。那么,这三者究竟有什么区别呢?
D-BUS协议
在遥控器的语境中,D-BUS是定制的或特定品牌的通信协议。
在这里,自然是指DJI遥控器通用协议。其本质和S-BUS应该差别不大,只是有一些细微的区别。具体细微的区别是什么,目前还没有研究。
不仅仅是无人机飞控,Robomaster开发板上预留的遥控器留给DR16的遥控器接口,也是D-BUS协议的。但是,在A3 Pro的说明书上,DR16的接收机是连接在S-BUS上的。这是不是意味着,实际上S-BUS和D-BUS其实就是同一个东西?
S-BUS协议
这是Futaba公司开发的,用于遥控模型的通信协议,能够通过单一信号线传输达16个通道的控制信号。这种串行通信协议允许更简洁的接线和高效的信号传输。
S-BUS使用的是RS232C串口的硬件协议作为自己的硬件运行基础。使用TTL电平,使用负逻辑,波特率为100k(不兼容115200)
W-BUS协议
在WFLY官方的说明中,W-BUS是其专门的通信协议。但是,在A3 Pro上我没有找到任何的W-BUS接口。
但是,D-BUS在我看来已经是留给了大疆专门的Lightbridge了。因此,只有S-BUS的口是可以用的。
网络上一查,说是W-BUS和S-BUS可以兼容。于是尝试将其连接在了S-BUS上,发现WFLY的遥控器可以可以控制电机。这就意味着W-BUS和S-BUS的兼容时完全可以实现的。
那么,这是否说明了S-BUS,D-BUS,W-BUS其实本质上是一样的呢?
通过广泛的检索,我找到了这样一条blog:
深度解析FUTABA的SBUS协议(/天地飞遥控器的WBUS协议/Robomaster接收机的DBUS协议)到底是啥?_futaba sbus-CSDN博客
这一条blog的观点是,无论是SBUS(日本FUTABA,所以航模,车模爱好者都知道的公司,一个好点遥控器近万了),还是WBUS(天地飞遥控器接收机用),亦或者DBUS(Robomaster官方接收机用),我们可以适当的认为,这三种协议其实全部都是由FUTABA公司最早的SBUS协议,换了个名字过来的。其协议解码代码目前完全兼容。
如果真的是这样,就可以不需要再纠结了。
对于S-BUS的更详细内容,请参阅 电控 | S-BUS协议及其衍生协议
iESC智能电调通信接口
ESC(Electronic Speed Control),即电调,电子调速器。而iESC是大疆开发的智能电调通讯转接器,其通讯总线为485总线。转接器可以接8个电调,要求电调必须是具有对应通讯接口的DJI智能电调。
iESC在A3/A3 PRO的说明书里是找不到的。经过一番检索,发现其说明要在N3的用户手册中才能找到,详情请查阅 N3_用户手册 。
下方的这个8通道板子,就是智能电调通讯转接器iESC。其实体图还是得在咸鱼上才能看见。
连接之后,在调参软件DJI Assistant 2
中能够找到看可以进行电调升级的地方。
但是天行者系列应该不会使用到大疆的智能电调,所以仅作为了解即可。T-Motor的XU8-X是FOC电调,不可进行升级,也没有升级的必要。
API串口通信接口
API的意思,在前文中已经详细的讲述。而这里的API接口所支持的,默认是Onboard SDK。
Onboard SDK
Onboard SDK,又称为OSDK,是大疆开发的,用于开发无人机应用程序的开发工具包。开发者通过调用OSDK中指定的接口能获取无人机上的各类数据,经开发者设计的软件逻辑和算法框架,执行相应的计算和处理,生成对应的控制指令,控制无人机执行相应的动作。如实现自动化飞行、负载控制和视频图像分析等功能。
这意味着,我发现了一个新世界。如果OSDK开发,就可以解决诸多目前的难题。如,目前的无人机无法通过遥控器在空中直接关闭电机而导致出现死亡螺旋;无人机的IMU会受到GPS信号的影响等等。甚至,可以结合我已经在做的其他项目的内容,如ORB-SLAM3的视觉建图与自主导航,激光雷达SLAM与自主导航等等。
详细内容,我也已经找到了。之后会专门开一个专栏学习该专题。
详情请参阅 DJI Developer—Onboard SDK 。
设备连接
需要使用一个USB转TTL模块,将TTL端的端口与无人机API接口相连,USB端接入电脑。
通过DJI的上位机(即DJI Assistant 2),设置API串口波特率为921600。ROS 默认订阅的主题相对较多,为保证ROS 与基于OSDK 开发的应用程序间有足够的通信带宽,UART 的波特率应大于921600,修改完上位机,需要重新启动飞机)
具体的开发前期准备步骤,请参阅 搭建DJI 无人机Onboard SDK ROS开发环境及测试_大疆a3飞控 osdk开发-CSDN博客 。
多功能PWM接口
四个可以独立输出的通道,和四个I/O通道,可以连接DJI设备,如DJI Zenmuse Z15系列云台、DJI智能起落架,或SDK设备,可以自定义。
具体的应用方式,可见一个应用场景 Tarot 电动脚架与DJI A3飞控连接设置教程_哔哩哔哩_bilibili 。
D-RTK
D-RTK GNSS是专为A3系列飞行控制系统开发的高精度导航定位系统,通过实时动态差分技术将三维定位精度由米级提升至厘米级,集成定位、定高和测向功能,弥补了传统GPS、气压计和指南针的不足,为高精度应用需求提供精准、可靠的系统解决方案。
D-RTK是连接在A3 Pro的CAN1上的。对于Robomaster而言,是绝对用不上的。
Lightbridge 2
Lightbridge 2是一款广播级一体化高清图传设备,具有体积小、功耗低、灵敏度高等特点。最大通信距离为5km,支持高达1080p60的高清视频传输。因为它集成了遥控器,因此Lightbridege 2集成了接收机的功能,因此需要连接D-BUS的RF接口。
有专门预留之嫌,所以设计了这么一个专门的D-BUS接口。对于Robomaster而言,是绝对用不上的。
PMU iBAT接口
非常难以找到iBAT的相关信息。在几个不同的用户手册中也找不到,根据命名方式和经验,这很可能是大疆预留的PMU的升级接口。由于不向用户开放,因此并不会详细的告诉用户具体的用户,也没有相关的调参软件可以共给用户自行优化升级。
需要声明的是,能够外接SDK的接口,除了API,还有CAN2。