QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)

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

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

QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第1张图片 QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第2张图片

在VSCode中打开ArduCopter代码,打开子模块,如下编译器截图中操作即可:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第3张图片

由于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); 发送消息。
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第4张图片

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

debug如下:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第7张图片

2. qgc 加入解析mavlink

把生成的mavlink头文件,如下图:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第8张图片
加入如下文件夹中:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第9张图片
然后把,如下图中的 ardupilotmega.h中打开:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第10张图片
由于msgid是223,crc 是67, len 1, len_min 1, 如下填写那个校验,就可以在代码里加入解析了。
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第11张图片

在如下文件中加入解析:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第12张图片
然后debug:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第13张图片
void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t message)中添加解算case:

QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第14张图片

debug结果:
QGC开发 解析apm飞控新定义的mavlink消息(ubuntu)_第15张图片

完成

你可能感兴趣的:(APM,Mavlink,QGC)