qgc 解析飞控新定义的mavlink消息(ubuntu)

1. 飞控中添加一条自定义mavlink包

加一个遥控和mavlink摇杆切换状态显示,也就是远程操控时候下面两货的切换:

在这里插入图片描述 在这里插入图片描述

在VSCode中打开ArduCopter代码,打开子模块,如下编译器截图中操作即可:
在这里插入图片描述

由于223在ardupilotmega.xml中没用到,故用了:

    </message>
    <message id="223" name="MAVLINK_REMOTE_OK">
             <description>mavlink remote contro1.</description>
            <field name="Mavlink_remote" type="uint8_t">valid length of buf</field>
    </message>

uint8_t ff=2; mavlink_msg_mavlink_remote_ok_send(chan,ff); 发送消息。
在这里插入图片描述

再在
然后编译代码:
sudo sim_vehicle.py -v ArduCopter -f quad --console --map -D
编译代码:
开头用的软件在环仿真,调式了很久,用qgc的qDebug发现根本没发出来。在这里插入图片描述
在qt5中搜索 mavlinkpro ,得到MAVLinkProtocol.cc,如下图:
在这里插入图片描述
在mavlink接收端加入 qDebug()<< b.toHex();就能打印出所有qgc接收到的mavlink消息包,如图:
在这里插入图片描述
用软件在环仿真,居然没有发出自定义的mavlink消息包。然后拿出cubeblack ,就能发消息了,qgc也能接收。

debug如下:
在这里插入图片描述

2. qgc 加入解析mavlink

把生成的mavlink头文件,如下图:
在这里插入图片描述
加入如下文件夹中:
在这里插入图片描述
然后把,如下图中的 ardupilotmega.h中打开:
在这里插入图片描述
由于msgid是223,crc 是67, len 1, len_min 1, 如下填写那个校验,就可以在代码里加入解析了。
在这里插入图片描述

在如下文件中加入解析:
在这里插入图片描述
然后debug:
在这里插入图片描述
void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t message)中添加解算case:

在这里插入图片描述

debug结果:
在这里插入图片描述

完成

发布了97 篇原创文章 · 获赞 56 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/hanjuefu5827/article/details/105498660