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