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结果:
完成