集群:集群通信與自組織網(wǎng)絡(luò))
184、飛控中的無人機(jī)集群:集群通信與自組織網(wǎng)絡(luò)一、從一次炸機(jī)事故說起去年夏天,我在某山區(qū)做四機(jī)編隊測試。三號機(jī)突然失聯(lián),緊接著二號機(jī)像喝醉了一樣撞向山體。事后分析日志,發(fā)現(xiàn)三號機(jī)在失聯(lián)前0.3秒發(fā)送了一個異常的位置更新包——坐標(biāo)偏移了200米,而二號機(jī)恰好用這個錯誤數(shù)據(jù)更新了自己的航點。這就是集群通信最要命的坑:你永遠(yuǎn)不知道一個錯誤的數(shù)據(jù)包會引發(fā)什么連鎖反應(yīng)。從那以后,我在集群通信代碼里加了三條鐵律:數(shù)據(jù)校驗、超時丟棄、異常隔離。今天這篇筆記,就聊聊這些用炸機(jī)換來的經(jīng)驗。二、集群通信不是簡單的“多對多”很多人以為集群通信就是每個無人機(jī)都廣播自己的狀態(tài),然后互相接收。真這么干,2.4G頻段在10架機(jī)以上就會變成一鍋粥。實際工程中,我傾向于把集群通信拆成三個層次:物理層:別用WiFi,別用藍(lán)牙。工業(yè)級場景老老實實上900MHz或2.4GHz的跳頻數(shù)傳模塊。我踩過最大的坑是某國產(chǎn)模塊標(biāo)稱“跳頻”,實際只在兩個頻道間切換,10架機(jī)同時發(fā)包時丟包率直接飆到40%。后來換了SiK固件的模塊,自己配了8個跳頻頻道,才算穩(wěn)住。鏈路層:必須做TDMA(時分多址)。每個無人機(jī)分配一個固定時隙,比如50ms一個周期,10架機(jī)就是每架5ms。別想著CSMA/CA那種隨機(jī)競爭,空中無人機(jī)的位置更新延遲超過100ms就可能撞機(jī)。我見過有人用Lora的CAD檢測做載波監(jiān)聽,結(jié)果在山區(qū)多徑環(huán)境下檢測成功率不到60%。