QGC開發 解析apm飛控新定義的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結果:
在這裏插入圖片描述

完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章