概述
PX4IO SBUS驱动配合酷芯微使用缺陷
此版本驱动针对的是旧版中使用的NUTTX系统,不排除CHIBIOS中的已经解决这个问题
此驱动路径在modules/px4firmware/module中,具体代码手上没有所以暂时没法发
问题现象
目前可以看到的现象是在同一时刻所有输入通道信号全部突变,变化方向不一定,根据日志的显示,有通道跳至最大值,有通道跳至SBUS协议中对应的0值。其中固定值通道也会有变化,因此怀疑是解析数据出现问题。
问题解决
通过排查无线端传输的数据可以确认是没有问题的,当前使用的是酷芯微的2.4G/5.8G,其具备专用的遥控器信号通道和SBUS输出,当时排查了很久,没有怀疑过是飞控解包存在问题。
旧版中使用的SBUS解包并没有逻辑上的漏洞,其流程很线性,开始时判定sbus的包头,确认后缓存后续数据直到长度达到25-uint8_t,之后判定包头以及包尾的信息决定包的属性,最后提取各通道数据传输至上层。
这个解包确实没有毛病,一般都是这样写的,但是其在完整的收到第一个SBUS包之后,其状态并没有恢复到寻找包头,而是进入第二个步骤,先缓存数据到25-uint8_t,再判断包头是否正确,可以预见当此sbus通讯中存在杂波时会出现数据的错乱,同时遥控器信号中肯定会出现0x0F这样类似包头的数据,于是就导致了解包错位,所有通道的数据出现了跳变。
此问题对于飞机的控制一般不会有大的影响,因为一般对于默认的1-4通道,尤其是油门都有后续的处理,但是其余的通道一般都是3次连续就判定成功,3次的话不改动就是300ms。
解决的办法很简单,由于目前使用的仅需要遥控器信息,所以屏蔽了除SBUS外的pos和voltage部分;包尾判定后状态置为寻早包头即可。目前后续测试再未出现此问题,当然如果硬件设计上能够保证通讯的干净确实不用考虑这个问题。
之前PPM是由于飞控的硬件存在问题也会有这个现象,确实飞控的东西都得小心啊,不然就得我的牢房很大,要不要进来爽一下了~
最后
以上就是呆萌朋友为你收集整理的ardupilot-PX4IO SBUS驱动缺陷导致的遥控器信息突变PX4IO SBUS驱动配合酷芯微使用缺陷的全部内容,希望文章能够帮你解决ardupilot-PX4IO SBUS驱动缺陷导致的遥控器信息突变PX4IO SBUS驱动配合酷芯微使用缺陷所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复