從單機到多機的無人機與機器人集群的SLAM綜述
本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。
前言
在本系列,我將會更新我的博士畢業論文“Decentralized and Distributed Collaborative Simultaneous Localization and Mapping System for Aerial Swarms”的中文科普版,有別于更專業的原版,這一版本主要包括更多的圖片,相關工作帶有的評述和思考,結果展示;降低一部分算法細節。本系列文章大概會是中文互聯網最適合入門多機SLAM的論文之一;讀者也可以通過本系列文章對移動機器人感知進行一些了解。
由于工程量巨大(我的thesis大概有150多頁),所以請讀者做好本系列文章會更新到夏季的心理準備。一個比較好的預期是每周或者每半個月會寫一篇。也請關注我的專欄方便接收更新。
什么是SLAM?為什么我們需要多機SLAM?
一個良好的科普通常從生活中的現象開始,本文也不例外。到2023年,掃地機器人已經走入了千家萬戶。
一個良好的掃地機器人不僅僅能夠靈活的繞開障礙物,也能自動返回到充電器附近對自己進行充電。實現這一技術的核心就是SLAM(實時定位與地圖構建,由于這個中文名實在太長,后文簡稱SLAM)
使用D^2SLAM估計出的不同機器人移動軌跡
使用D2SLAM構建出的稠密地圖
大家可能都知道GPS能確定自己的位置,然而GPS很容易受到干擾,在室內環境中更完全無法使用,其基本原理又限制了精度。SLAM技術就像是人類的眼睛+小腦,是幾乎一切移動機器人的基礎。其目標包括了兩個:確定機器人自身在三維空間中的位置和姿態,并且構建出周邊環境的地圖。這是人類和動物與生俱來的本能,在機器人上是相當復雜的。
隨著國內機器人產業的大發展,SLAM技術也在這兩年逐漸普及開來,典型的應用幾乎涵蓋了正在改變世界的大部分工業產品:正大量出貨的自動駕駛汽車,逐漸普及開的VR/MR虛擬現實設備和“元宇宙”,市面上的高價無人機,各家各戶的掃地機器人,海底撈的送貨小車等等。
坦白的說,時至今日,隨著視覺,Lidar(激光雷達)兩開花,現在的SLAM技術已經趨于成熟,請看下面香港大學林博 @ziv.lin 的工作。
香港大學林博的杰作,激光視覺融合的SLAM:https://github.com/hku-mars/ImMesh
香港大學林博的杰作,激光視覺融合的SLAM:https://github.com/hku-mars/ImMesh
在單機slam逐漸成熟的同時,研究屆也正在轉向一些更加困難的課題,這其中就包括了多機SLAM。
為什么我們需要多機SLAM?
設想我們有一群無人機
我們希望他們能在狹窄的室內環境或者森林中自由飛翔,去執行救災,探險等任務。那么想要這些無人機不要在物理上打成一片,我們就必須做到幾點:
- 確定每個無人機自身在空間中的位置。
- 確定其他無人機相對于無人機自身在空間中的位置。
- 每個無人機對周圍的環境進行感知。確定障礙物的位置。
比較早期的研究者和商業公司,選擇了一種粗暴的方式解決這一問題,使用外部定位設施,包括昂貴的動作捕捉系統(對,就是拍電影和Vtuber出道要用的那個),UWB基站,或在在寬闊的室外架設基站,使用rtk-gps來飛行,幾乎所有已經商業化的無人機集群(表演)都使用了這一技術。
然而,非常精確的動作捕捉設備不僅僅昂貴,也局限于實驗室環境--你不能指望無人機去參加救災活動的時候先花幾個小時假設一套動捕或者UWB基站吧?GPS說過了,容易被干擾且局限于室外,那么有什么比較好的辦法解決這一問題呢?
答案就是多機的相對定位以及多機SLAM技術。
截至2023年,這一類技術已經替代了用了20年的動捕,逐漸成為了無人機集群的標配。正是相對定位/多機SLAM技術的發展,使得真正完全自主的無人機集群成為了可能,相關工作的視頻有兩個值的一看。一個是高飛師兄組的science robotics大作,aerial swarm in the wild[1],這篇文章是全世界第一個完整展現了自然環境中的高度自主的無人機集群的演示,使用的多機技術互相定位技術正是參考了(或者說受啟發?)接下來要介紹的我的工作Omni-swarm[2]
www.bilibili.com/video/BV1pv4y1K7zS/?spm_id_from=333.337.search-card.all.click&vd_source=5b500ce27249089310ee479674dfb683
其次是 @周博宇 博士和我合作的工作,Racer[3],這一工作展現了多個無人機集群對未知環境的探索。其定位方案則是直接使用的Omni-swarm
www.bilibili.com/video/BV1F14y1g7cG/?spm_id_from=333.337.search-card.all.click&vd_source=5b500ce27249089310ee479674dfb683
多機SLAM技術都有哪些?
在正式進入話題之前,我們要簡單的回顧一下現有的工作。目前的相對定位方案包括了如下幾類:
視覺方案
使用視覺進行,例如捕捉紅外燈光,marker,直接對其他無人機進行visual detection等;優勢是視覺測量精確的相對定位,缺點是歧義性:搞明白哪個飛機是哪個是最大的問題。對于這一問題,解決方案包括不同的燈光組合[4][5],算法硬解等[6]
UWB 信息
UWB可以提供十厘米上下精度的測距信息。使用UWB測距信息也可以用于輔助定位,但是單一uwb信息并不可觀,也缺乏定向信息。這使得我們需要和其他方法的融合[7]。
地圖環境
使用環境地圖方案進行相對和絕對定位通常是一個不錯的想法[8],但是僅僅適用于環境特征較為稠密的室內,在室外則有諸多局限性。地圖環境定位的另一個問題是需要較大的通信帶寬。
我們的方案
這里給出我們方案思路的簡述,在后續文章會逐漸分析。
UWB-視覺去中心化定位
首先是針對相對定位和絕對定位這一問題,我首先研究了使用UWB-視覺融合的方法,不僅僅使用uwb和odometry(里程計)融合,同樣引入了精度更高的視覺檢測方法對精度進行增強。該方法已經在實驗中展現出了厘米級別的精度;并且是第一個在環境狹窄的室內實現緊密配合情況下飛行的無人機集群。后來高飛組在science robotics中使用的方案就和這一方案類似。
該文章發表在機器人研究頂會ICRA上,文章鏈接是 http://www.xuhao1.me/files/ICRA2020hao.pdf
www.bilibili.com/video/BV1y7411y7Qx/?spm_id_from=333.999.0.0&vd_source=5b500ce27249089310ee479674dfb683
更全能的Omni-swarm
在前文所做的實驗中,最令人頭疼的事情之一是狀態感知的初始化,作為一個高度自主的集群,我們希望他們能夠只依賴自己而不是預先輸入的信息完成初始化。于是后續對此方法進行了進一步改進,地圖方案也被融入,于是不僅僅能完成相對定位,更展現出了全局一致性,并且針對初始化問題和可觀測性進行了優化(ICRA版本需要運動來初始化,或者已知初始位置),這篇工作的名稱是Omni-swarm。Omni意為全向和全能,我們還發現了對無人機集群很重要的事情:使用全向攝像頭可以顯著的改善可觀測性。該文章也包含了迄今所有無人機相對定位的主流方案,所以被稱作“Omni”。該文章發表于機器人研究頂刊,IEEE Transaction on Robotics (TRO)上,https://ieeexplore.ieee.org/document/9813359,
代碼已經開源在:GitHub - HKUST-Aerial-Robotics/Omni-swarm: A Decentralized Omnidirectional Visual-Inertial-UWB State Estimation System for Aerial Swar.
www.bilibili.com/video/BV1FV411H7Kg/?spm_id_from=333.999.0.0
Racer:未知環境的無人機群探索
在Omni-swarm的基礎上,我們進行了現實環境的無人機探索任務,這是世界第一個完全去中心化的無人機群自主探索研究,正是去中心化且全能的“omni-swarm”,是這種任務成為了可能。這篇文章同樣發表于TRO上,https://ieeexplore.ieee.org/abstract/document/10038280
Racer飛行測試時的地面站截圖,該地面站由我本人開發。
www.bilibili.com/video/BV1F14y1g7cG/?spm_id_from=333.337.search-card.all.click&vd_source=5b500ce27249089310ee479674dfb683
在Racer的研究中,我又得到了不少啟發:1,自主無人機群僅僅在無人機互相距離較近的時候有相互高精度定位的必要,飛遠了自然也沒有必要互相避障了,這時候相對定位精度的重要性自然降低。2.當無人機相距較遠的時候,互相并不碰面,這時候我們更關注的是全局一致性:也就是地圖不能隨著飛行軌跡的飛行而飄移,要飛一圈回來,飛機仍然在之前的地方,這樣地圖才能進行后續的應用。3.是uwb和視覺檢測用起來有時候很麻煩,容易被復雜環境干擾。我們需要一個更加可靠且通用的方案,UWB也好,視覺檢測也好,可以作為“dlc”掛進去,也可以根據環境的不同不去掛載。
D2SLAM:分布式,更高精度和全局一致性
在這些思考的基礎上,我又加入了分布式計算的思想,做出了我博士期間的最后一個工作 SLAM。分布式和去中心化的聯合SLAM系統。SLAM根據前文做出的反思引入了兩個(在我看來比較重要的)觀念:
- 無人機群的“近場“狀態估計(near-field state estimation),當無人機集群中的飛機距離較近,通信良好的時候,我們有必要(為了互相避障和緊密協作)也有能力建立高精度的局部定位(自身狀態估計)和無人機的互相定位。我把這部分能力稱作近場估計
- “遠場“狀態估計(far-field state estimation),當無人機群中的飛機互相距離較遠時,為了任務的完整性,我們關注的是地圖全局一致性,也就是地圖不能亂跑,這種能力被我稱作遠場估計。
SLAM的貢獻在于良好的解決了上面的兩種問題;在延續了我們已有的全向視覺的思想的同時,引入了分布式計算來改善計算效率。這篇文章已經投稿至TRO(是的我們就是這么熱愛TRO), 預印本已經放在,https://arxiv.org/abs/2211.01538, 并且代碼開源在了 https://github.com/HKUST-Aerial-Robotics/D2SLAM (文檔和數據集逐步完善中)
www.bilibili.com/video/BV1eY4y1Q7j1/?spm_id_from=333.999.0.0
使用D2SLAM重建的實驗室
本系列文章后續會略微詳細介紹我們的算法,和我個人的一些思考,時間有限更新不一定穩定。敬請關注。感興趣的也可以先下載對應的論文。
小結
無人機群的狀態估計是構建一個自主集群的最關鍵的基礎技術之一,并且還在不斷的發展中,有大量的問題未被解決。相比于路徑規劃,互相避障,環境探索等任務,被大眾所知的程度也更低一些。本系列文章從我個人的研究出發,希望能給大家一個對此問題的基礎認知。也希望更多朋友參與到這一問題的研究中來。