機器人定位、建圖和導航詳解
說到機器人自主定位導航解決方案及技術,大家腦海里肯定會浮現「定位」、「建圖」、「避障」、「路徑規劃」等字眼。
定位
在思嵐提供的自主定位導航解決方案中,主要是通過雷達和里程計的數據來進行定位。雖然激光雷達在一定範圍之內會糾正里程計的誤差,但在某些特殊環境下(如雷達掃描的有效點較少時),里程計的準備度還是會影響定位的效果。
因此,對於需要自主定位導航的服務機器人而言,電機里程計的精準度,往往是決定整個機器人定位精度的關鍵因素之一。
里程計類型的選擇:
常用的機器人底盤電機編碼器按實現原理來分類,包括光電編碼器及霍爾編碼器;按照其編碼方式分類,主要包括增量型和絕對型。
對於基於slamware的機器人底盤來說,里程計的解析度需要在1mm以下,且總誤差最多不能超過5%,如果超過此數值,機器人將無法正常實現定位導航的功能。因此,無論選擇哪種編碼器,必須要達到其精度的要求。可以參考以下判斷公式: (2π/每轉編碼器脈衝數)×輪子半徑≤0.001米 註:輪子半徑單位為米系統電機應答流程:
SLAMWARE Core 每間隔delta時間,會向底盤發送左右輪的速度,向前為正,向後為負,即SET_BASE_MOTOR(0x40)。底盤會回復此時的左右輪里程計的累計值,即GET_BASE_MOTOR_DATA(0x31)。
請注意,無論輪子向前運動或向後運動,里程計的度數均遞增,因為SLAMWARE Core在下發速度時,已經區分了向前還是向後。
SLAMWARE Core發送SET_BASE_MOTOR的請求報文為, 速度的單位為mm/s:
里程計代碼示例詳見:
https://wiki.slamtec.com/pages/viewpage.action?pageId=1016369
那麼,對於里程計而言,我們該如何判斷其定位數據是否準確呢?下面,就要藉助可擴展的機器人管理與開發應用軟體:Robo Studio
首先,先將準備工作做好:
在調試之前,請找到一處合適測試的區域,該區域需有清晰的邊界,比如,矩形的空房間。安裝好Robo Studio,並連接上機器人(如SDP Mini)。Robo Studio下載鏈接及在線文檔可至思嵐官網下載安裝。
利用Robo Studio調試里程計準確度測試方法:
1.將機器人控制到離一面直牆若干米的位置,面朝直牆,如下圖所示。
2.將之前建好的地圖清除掉,點擊清空地圖,此時,機器人當前的區域會重建。當前區域重建好之後,可以點擊暫停建圖,停止地圖更新。 最後,可以將暫停定位開啟,開啟後,將關閉激光定位,僅用里程計的數據來定位。
3.控制機器人向前朝牆運動,觀察激光點是否和牆重合,如果和牆重合,證明裡程計較為準確;
如果激光點超出牆,證明底盤上報的里程計數據要大於實際運動的距離,里程計偏大。
如果激光點在牆之內,證明底盤上報的里程計數據要小於實際運動的距離,里程計偏小。
如果激光點和牆重合,可以繼續控制機器人倒退,左右轉動,看看激光點是否和周圍環境匹配;
接著,我們再來聊聊與「建圖」相關的話題
建圖
地圖作為機器人自主定位、避障、規劃路線的依據之一,其重要程度不言而喻。
雷達作為建圖的重要工具,在整個自主定位導航過程中充當著「眼睛」的角色。下面,小編就用思嵐的RPLIDAR 建圖作案例說明。
1)雷達的安裝方法及相關注意事項:
1. 雷達水平安裝角度:0度 ~ +2度 (傾角朝上);
2. 雷達掃描開口角度:建議270度及以上,最好在機器人正前方和正後方均有開口, 至少需要大於220度;
3. 雷達盲區:15cm, 建議雷達在安裝時,可以略往底盤結構中心靠近,以減少盲區;
2)雷達安裝是否水平對slamware解決方案的建圖及定位有重要影響:
1. 影響測距精度,進而影響建圖精度和定位精度;
2. 如若雷達掃描平面水平向下傾斜,激光點會掃描到地面,這種情況下建圖則會導致障礙物錯亂,定位則會導致定位漂移;
3)雷達安裝完畢後,緊接著就是建圖之前的準備工作,主要如下:
1. 盡量在待掃區域里沒人或者人較少的時間點進行掃圖;
2. 盡量清除待掃區域中經常移動的物體(如經常移動的人群、搬動的桌子、盆飾等等);
3.對於場景中的反光,透光,吸光等物體(如:鏡子、玻璃等),在條件允許的情況下,盡量在機器人的雷達掃描平面處貼上其他不影響雷達正常掃描的材料;
4)建圖時的技巧:
1. 開機建圖時,機器人最好面朝一堵直牆,且讓雷達儘可能多的掃到更多的有效點;
2.在商場或者一些大環境應用場景下建圖時,最好讓機器人先去完成建圖閉環,再去詳細掃描環境里的各個小細節;
3.擦除未探明的區域
在機器人的行走區域內,可能會出現一些掃圖時未完全探明的區域(主要跟雷達測距半徑有關),在Robo Studio操作軟體中,此處區域顯示為灰色(如下圖紅圈處所示),如果在此範圍內,確實不存在任何障礙物,可用白色橡皮擦將此灰色區域擦除,成為已探明區域;
下圖為RoboStudio的工具欄,紅圈處為白色橡皮擦:
4.除了可用白色橡皮擦擦除構建區域中的未探明區域之外,還可擦除地圖區域中不斷移動的物體(如:移動的人群,後期會隨時搬移的障礙物等);
5.盡量保證地圖的完整性,在機器可能的行走路徑上,所有周圍360度的區域,均需要用雷達探明,目的是增加地圖的完整性,使得激光匹配的參照點更多;
6.如果地圖已經建好,盡量不要在已建好的地圖區域反覆來回行走,請儘快保存地圖。點擊Robo Studio上面的sync map按鈕,同步地圖後保存地圖;
如何判斷掃好的地圖符合定位導航的要求:
1.地圖中障礙物邊緣是否清晰;
2.地圖中是否存和實際環境不一致的區域(如:有無閉環);
3.地圖中是否存在機器人行動區域內的灰色區域(如:未掃描到的區域);
4.地圖中是否存在後續定位時將不存在的障礙物(如:移動障礙物);
5.地圖中是否能保證機器人在活動區域內的任何位置,360度的視野範圍內,均已經探明;
定位導航
說到定位導航,就離不開導航模塊SLAMWARE的幫助,SLAMWARE,硬幣大小、薄薄的晶元,別看他麻雀雖小,功能可是樣樣齊全。
吶,就是下圖這貨~
這塊小晶元可謂是濃縮了思嵐的核心技術,內含SLAM定位導航演算法,基於RPLIDAR提供實時定位和自主導航功能,同時支持串口和乙太網交互導航信息,可進行靈活多樣的功能拓展。
SLAMWARE自主定位導航方案分為商用和家用版本,適用於多種應用場景,滿足多種需求,可靠性、可擴展性強,提供穩定可靠的現場表現。
自主定位與建圖
SLAMWARE模塊在自主定位導航技術中最為重要的功能為定位導航及建圖,採用激光SLAM技術,無需對環境進行修改,即可在未知場景中完成實時定位。
SharpEage精細化構圖技術
利用SharpEdge構圖技術構建高精度、厘米級別地圖,無需二次優化修飾,直接滿足用戶心理預期,提升定位導航高效率;
擴展開發,靈活適配
SLAMWARE提供豐富的通訊介面,可結合SDK進行靈活、多樣的功能擴展;
多感測器融合導航
受制於激光的特性,SLAMWARE自主定位導航方案在遇到玻璃、純黑物體或其他平面物體時,是無法進行識別的。
因此,SLAMWARE支持超聲波感測器,防跌落感測器、碰撞感測器和深度攝像頭的數據,利用多種感測器信息融合,實現更加智能、實用的自主運動。同時,SLAMWARE還可以實現基於激光特徵識別的回充對接技術。
多感測器融合導航
SLAMWARE模塊在定位導航及建圖過程中會涉及到大量對地圖和坐標的操作。因此,小嵐需要結合SLAMWARE模塊中所建的地圖,以及SDK中的一些地圖相關介面進行說明。
SLAMWARE SDK中坐標系統以及地圖數據說明:
以Robo Studio開發軟體為例,紅色箭頭所指為地圖坐標X軸正向, 綠色箭頭所指為Y軸正向,藍色點為坐標零點,紅色三角箭頭為機器人所在位置。默認情況下,機器人開機的位置,即為地圖零點位置。機器人朝向為X軸正向,為0度,角度逆時針增加。
關於如何從SLAMWARE模塊中獲取整張地圖數據並將mapdata轉換成bmp,詳見wiki代碼示例:
https://wiki.slamtec.com/pages/viewpage.action?pageId=1016631
推薦閱讀:
※機器人會彈鋼琴嗎?
※俄羅斯軍工製造的「烏蘭」-9機器人系統是遙控殺人武器?
※5G網路下的日本人形機器人在MWC上亮了,讓世界觀眾看呆
※小手宇宙少兒編程好不好,看了你就知道
※Cassie Robot---的研發歷程 之『ATRIAS』Robot
TAG:同時定位和地圖構建SLAM | 機器人 |