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