MAVLINK協議


參考https://cloud.tencent.com/developer/news/48344

https://www.cnblogs.com/lovechen/p/5801679.html

https://www.cnblogs.com/lovechen/p/5809709.htm

https://www.jianshu.com/p/e57aa664103f

https://www.e-learn.cn/content/qita/1017591

是一種用於飛行器上的輕量級成熟通信協議,與很多自定的協議相比,它的開發難度非常小,有現成的配置工具,可直接生成MSG代碼(簡單來說,就是生成對應的函數接口供你直接調用即可),直接調用幾個相應的函數接口即可,不需要自己封裝、解析等;突出的優點在於配置調用比較簡單

 

 

1.配置

MAVLink通過xml文件,配置信息(MSG),這個MSG可以理解成我們需要接收或者發送的數據變量。比如:運動控制包含速度距離,xml配置如下:

 

 2.通過生成代碼 

從官網下載mavlink(git clone https://github.com/mavlink/mavlink.git)

mavlink官網(http://qgroundcontrol.org/mavlink/start),下拉到MAVLink Code and Generator如下圖,得到mavlink源碼有多種途徑,這里選取用python生成。即點擊MAVLink Generator (C/C++, Python)

git clone https://github.com/mavlink/mavlink mavlink-generator

或者用PYTHON進行安裝 pip install pymavlink,切換到mavlink-master目錄下然后運行python mavegenerate.py ,然后修改xml並生成C庫

 

 

3.調用代碼

代碼生成,只需要簡單調用兩個函數接口即可:

兩個函數即可:

mavlink_msg_motion_pack:封包函數接口;

mavlink_msg_to_send_buffer:轉換成發送的BUF

4編譯排錯:

keil工程里面全局編譯一下,會發現好多的錯誤。這個錯誤跟編譯器有關。一種方式是直接修改每一個錯誤,可以自行百度“mavlink移植 ”;當然還有一種方法,是在工程配置中加入如下配置:

--no_strict --gnu

目的是想讓MAVLink這段代碼采用gun的格式進行編譯,但是要注意其他的代碼需要保證是使用的keil的默認編譯器__CC_ARM進行編譯。再次編譯會發現沒有錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM