MAVLink的全稱是Micro Air Vehicle Link(微型航空器鏈接)。它是一種輕量級通信協(xié)議,主要用于無人機(jī)和其他小型飛行器的數(shù)據(jù)交換。這個協(xié)議設(shè)計(jì)得非常高效,適用于資源受限的系統(tǒng),并且能夠通過串行通信或者無線網(wǎng)絡(luò)(如Wi-Fi或無線電)傳輸控制指令和傳感器數(shù)據(jù)。
Mavlink消息(我們稱之為'msg')是由任務(wù)規(guī)劃器(MP),也就是地面站控制(GCS),編碼后通過USB串行或遙測(就是遙控器)發(fā)送給飛行器的飛控軟件(APM(或者PX4)的字節(jié)流。編碼只是將數(shù)據(jù)放入數(shù)據(jù)幀中,并通過通道以字節(jié)形式發(fā)送,同時添加一些錯誤校正。
每個message是由一系列消息幀frame組成,幀的數(shù)據(jù)結(jié)構(gòu)就是byte數(shù)組,每個幀的結(jié)構(gòu)如下:
最前面6個字節(jié)(0-5)是消息頭
消息頭后面是可變長度0-255個字節(jié)的傳輸數(shù)據(jù)payload
最后兩個字節(jié)是校驗(yàn)和。
單個消息不超過263字節(jié)(Mavlink版本1.0)或280字節(jié)(Mavlink版本2.0)。
發(fā)送方始終填寫系統(tǒng)ID和組件ID字段,以便接收方知道數(shù)據(jù)包的來源。
系統(tǒng)ID是每個飛行器或地面站的唯一ID。地面站通常使用較高的系統(tǒng)ID,如“255”,而飛行器默認(rèn)使用“1”()。地面站或飛行控制器的組件ID通常為“1”。飛行器上的其他支持MAVLink的設(shè)備(如伴侶計(jì)算機(jī)、云臺)應(yīng)使用與飛行控制器相同的系統(tǒng)ID,但使用不同的組件ID。
消息ID字段表示消息的類型,可以在common.xml和ardupilot.xml中看到。例如,HEARTBEAT消息的ID是“0”。以下舉例三種最常見的消息類型:
1) MAVLINK_MSG_ID_HEARTBEAT: 0
a. 這是最重要的信息。GCS 不斷向 APM/PX4 發(fā)送消息(每 1 秒一次),以確定是否與之連接。這是為了確保在您更新一些參數(shù)時,MP 與 APM 同步。如果錯過一定數(shù)量的心跳,就會觸發(fā)故障安全(機(jī)制),然后直升機(jī)降落、繼續(xù)執(zhí)行任務(wù)或者返航(也稱為 RTL)。故障安全選項(xiàng)可以在 MP 中的配置/設(shè)置故障安全選項(xiàng)中啟用/禁用。但一般不會禁用。
2) MAVLINK_MSG_ID_REQUEST_DATA_STREAM: 66
傳感器、遙控通道、GPS位置、狀態(tài)等等數(shù)據(jù)
3)MAVLINK_MSG_ID_COMMAND_LONG: 76
表示消息是對無人機(jī)的操作命令,比如懸停、返回、著陸、任務(wù)開始、上/下動力(Arm/Disarm)、重啟等等。
不要誤會,Arm/Disarm和武器沒有關(guān)系。這個命令用于啟用或禁用飛行器的動力系統(tǒng)。"Arm" 表示啟用動力系統(tǒng),準(zhǔn)備起飛;而"Disarm" 表示禁用動力系統(tǒng),防止意外起飛。
最后,說一下常見的自動駕駛儀軟件系統(tǒng)
APM(ArduPilot Mega)和PX4(Proton eXtended 4)都是開源的自動駕駛儀軟件系統(tǒng),用于控制無人機(jī)、機(jī)器人和其他無人駕駛車輛。它們提供了豐富的功能,包括飛行控制、導(dǎo)航、傳感器融合等,并且可以在多種硬件平臺上運(yùn)行。
APM(ArduPilot Mega)
● 用途:主要用于固定翼飛機(jī)、多旋翼無人機(jī)和地面車輛。
●?開發(fā)語言:C/C++。
●?社區(qū)支持:擁有龐大的開發(fā)者和用戶社區(qū),提供豐富的教程和文檔。
●?特點(diǎn):支持多種傳感器(如IMU、GPS、氣壓計(jì)等)。
●?提供多種飛行模式(手動、穩(wěn)定、定高、自駕等)。
●?可以通過地面站軟件(如Mission Planner)進(jìn)行配置和監(jiān)控。
PX4
●?用途:主要用于多旋翼無人機(jī)和固定翼飛機(jī)。
●?開發(fā)語言:C/C++。
●?社區(qū)支持:同樣擁有龐大的開發(fā)者和用戶社區(qū),提供詳細(xì)的文檔和教程。
●?特點(diǎn):支持廣泛的硬件平臺(如Pixhawk系列、NuttX RTOS)。
●?強(qiáng)大的傳感器融合算法,提高飛行穩(wěn)定性。
●?提供API接口,便于集成到其他應(yīng)用中。
二者的主要區(qū)別
●?架構(gòu):APM使用的是模塊化的架構(gòu),而PX4采用的是更現(xiàn)代的微服務(wù)架構(gòu)。
●?傳感器融合:PX4的傳感器融合算法更為先進(jìn),能夠提供更高的精度和穩(wěn)定性。
●?擴(kuò)展性:PX4在擴(kuò)展性和可配置性方面更具優(yōu)勢,更適合復(fù)雜的應(yīng)用場景。
●?用戶界面:APM提供了較為友好的地面站軟件(如Mission Planner),而PX4則依賴于QGroundControl等第三方地面站軟件。