一種基于ros的移動機器人室內(nèi)環(huán)境探索系統(tǒng)與控制方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及的是一種有關(guān)移動機器人的控制方法,具體基于R0S (機器人操作系 統(tǒng),Robot Operating System),探索室內(nèi)環(huán)境的控制方法。
【背景技術(shù)】
[0002] 近年來,機器人領(lǐng)域發(fā)展迅速,例如災(zāi)難探測機器人、家用服務(wù)機器人、陪護機器 人、軍用機器人等均得到廣泛的應(yīng)用。移動機器人作為一種高度自主的智能體,具有靈活的 運動能力和強大的觀察設(shè)備,利用機器人的建圖功能代替人員深入危險的未知環(huán)境進行探 索,已經(jīng)成為救援工作的有效手段。盡管目前的各種救援機器人可以完成各種各樣的任務(wù), 但是救援機器人大部分依靠遙控操作,無法脫離人為控制在未知的復(fù)雜空間中移動。而在 災(zāi)難環(huán)境中,坍塌、煙塵充斥的環(huán)境空間是不可預(yù)知的,同時操作人員通過攝像機對災(zāi)難現(xiàn) 場的探索識別能力并不強,而且很大程度上受操作人員經(jīng)驗的影響。亟需一種可以對災(zāi)難 環(huán)境進行自主探索的智能移動機器人。
[0003] 同時,機器人也朝著復(fù)雜化、通用化以及工作環(huán)境不確定化發(fā)展,對代碼的復(fù)用 性、模塊化提出了較高的要求?,F(xiàn)有的Player、MOOS、CARMEN、YARP、Orocos、微軟Robotics Studio等操作系統(tǒng)無法滿足實際應(yīng)用的需求。ROS (Robot Operating System)是一種開 源機器人操作系統(tǒng),能夠提供類似于操作系統(tǒng)的功能,為機器人應(yīng)用系統(tǒng)提供硬件抽象、底 層驅(qū)動、消息傳遞和包管理,以及一些輔助開發(fā)工具,例如建立、編寫和運行多機通信系統(tǒng) 整合的程序。R0S操作系統(tǒng)的設(shè)計目標(biāo)就是為了提高代碼的復(fù)用性,所以采用一種分布式的 進程架構(gòu),使得程序具有高度的獨立性和低耦合性。
[0004] 考慮上述因素,本發(fā)明引入R0S機器人操作系統(tǒng)設(shè)計和構(gòu)建了一種移動機器人平 臺,硬件采用了 iRobot差分驅(qū)動底盤以及信息采集單元、數(shù)據(jù)處理單元、運動控制單元和 遠程監(jiān)控單元4個模塊。利用R0S分布式的進程框架優(yōu)勢,控制機器人更加方便快速地探 索室內(nèi)環(huán)境,得到室內(nèi)環(huán)境信息的二維地圖,達到更加有效地進行機器人災(zāi)難救援。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明設(shè)計了基于R0S的移動機器人室內(nèi)環(huán)境探索系統(tǒng)與控制方法。
[0006] 本發(fā)明采用的技術(shù)方案為:第一階段,機器人的改裝與基于R0S的程序配置;第二 階段,激光雷達的環(huán)境信息獲取與地圖拼接匹配;第三階段,構(gòu)建機器人與上位機間的無線 通信;第四階段,通過設(shè)置路徑規(guī)劃算法,使機器人自主行駛,并探索室內(nèi)未知環(huán)境。
[0007] 所述的一種基于R0S的移動機器人室內(nèi)環(huán)境探索系統(tǒng)與控制方法,通過以下步驟 實現(xiàn)。
[0008] 步驟一:以美國iRobot公司生產(chǎn)的iRobot Create為移動機器人平臺,進行改裝 與拓展。
[0009] 步驟二:采用R0S的導(dǎo)航棧(Navigation)來實現(xiàn)導(dǎo)航系統(tǒng)的具體框架,通過設(shè)置 TF坐標(biāo)變換系統(tǒng)、Costmap占有柵格地圖來完成導(dǎo)航棧的基本配置。
[0010] 步驟三:通過激光雷達獲取地圖信息,將激光雷達數(shù)據(jù)離散化。
[0011] 步驟四:將獲取的激光雷達信息進行掃描匹配。
[0012] 步驟五:利用Zigbee協(xié)議構(gòu)建機器人與上位機間的無線通訊,實現(xiàn)上位機對機器 人狀態(tài)獲取與對激光雷達獲取的二維圖進行實時監(jiān)控。
[0013] 步驟六:對機器人進行同步定位與建圖。
[0014] 步驟七:設(shè)置機器人的路徑規(guī)劃算法。
[0015] 步驟八:機器人進行自主行駛,同時探索室內(nèi)未知環(huán)境。
[0016] 下面對各步驟進行具體說明。
[0017] 所述步驟一的iRobot Create移動機器人平臺,保留了運動控制器和電源管理系 統(tǒng),去掉了吸塵功能,并擴展了傳感器。所構(gòu)建的移動機器人系統(tǒng)由四個部分組成,包括信 息采集單元、數(shù)據(jù)處理單元、運動控制單元和遠程監(jiān)控單元。其系統(tǒng)組成框圖如圖1所示。 其中,控制核心為基于ATOM凌動N270中央處理器的工控機。
[0018] 所述步驟二的R0S的導(dǎo)航棧的基本思想為:得到里程計和激光雷達數(shù)據(jù),同時輸 出速度命令給機器人底盤,導(dǎo)航棧配置如圖2所示。TF坐標(biāo)變換系統(tǒng)如圖3所示,TF系統(tǒng) 定義兩個坐標(biāo)系:一個坐標(biāo)系的原點位于機器人的底盤中心,另一個坐標(biāo)系位于激光雷達 的中心。將位于底盤的坐標(biāo)系定義為base_link,因為導(dǎo)航棧需要把該TF坐標(biāo)系放置為移 動機器人的旋轉(zhuǎn)中心。將位于激光雷達的坐標(biāo)系定義為base_laser。Costmap占有柵格 地圖通過完成激光雷達數(shù)據(jù)離散化處理獲得。
[0019] 所述步驟三的在地圖獲取階段,首先定義單元柵格的大小。該尺度將確定離散化 的程度。離散化的基本思想為:從機器人當(dāng)前所在坐標(biāo)開始,以單元柵格的尺寸向四周擴 散,使得平面內(nèi)鋪滿虛擬柵格,然后將激光雷達測距前端落到相應(yīng)的柵格內(nèi),由柵格的占有 概率值來代表所有落到該柵格內(nèi)的測距前端數(shù)據(jù)。該算法通過雙線性濾波實現(xiàn)。
[0020] 所述步驟四的完成激光雷達數(shù)據(jù)離散化后,也就得到了局部占有柵格地圖。然后 通過掃面匹配階段對激光雷達數(shù)據(jù)進行掃描匹配,也就是通過局部地圖對移動機器人位姿 進行估計,將局部環(huán)境地圖融合為全局環(huán)境地圖。
[0021] 所述步驟五的ZigBee通信協(xié)議為上位機和車和機器人之間的通信。包括機器人 的具體行進方向、運行路線等;包括機器人速度設(shè)定、啟動/停止;包括獲取的激光雷達數(shù) 據(jù)信息形成的環(huán)境二維地圖。
[0022] 所述步驟六的同步定位與建圖為基于Hector SLAM的自主建圖算法。Hector為 R0S機器人操作系統(tǒng)的開源導(dǎo)航和建圖庫,其系統(tǒng)構(gòu)架如圖4所示。
[0023] 所述步驟七的路徑規(guī)劃算法為Di jkstra算法,Di jkstra為改進的廣度優(yōu)先搜索 算法,Di jkstra算法的流程圖如圖5所示。
[0024] 所述步驟八的探索算法結(jié)合了現(xiàn)在常用的兩種策略。一種是向離機器人最近的前 端移動可以進行快速的地圖獲取,擴展未知區(qū)域。另一種同時考慮現(xiàn)有地圖中前端的大小, 前段較長的地方,這樣通過這里能夠擴展較大的未知區(qū)域。本專利對兩個策略取權(quán)重進行 加權(quán)。
[0025] 本發(fā)明的有益效果:移動機器人室內(nèi)環(huán)境探索系統(tǒng)與控制方法基于R0S系統(tǒng),利 用R0S提高了代碼的復(fù)用性的優(yōu)點,可快速遍歷整個室內(nèi)未知區(qū)域并進行探索。將未知區(qū) 域的二維環(huán)境圖掃描構(gòu)建出來并通過ZigBee無線協(xié)議傳至上位機,實現(xiàn)了整個未知環(huán)境 區(qū)域的探測與監(jiān)控。
【附圖說明】
[0026] 圖1是移動機器人系統(tǒng)構(gòu)架圖。
[0027] 圖2是R0S的導(dǎo)航棧系統(tǒng)構(gòu)架圖。
[0028] 圖3是TF坐標(biāo)變換系統(tǒng)圖。
[0029] 圖4是移動機器人基本平臺TF模型圖。
[0030] 圖5是格地圖的雙線性濾波。
[0031]圖6是占有柵格地圖離散化。
[0032] 圖7是Hector SLAM系統(tǒng)構(gòu)架圖。
[0033] 圖8是Hector mapping系統(tǒng)架構(gòu)圖。
[0034] 圖9是Di jkstra算法流程圖。
[0035] 圖10是Di jkstra算法示例圖。
【具體實施方式】
[0036] 下面結(jié)合附圖對本發(fā)明進一步說明。
[0037] 基于R0S的移動機器人室內(nèi)環(huán)境探索系統(tǒng)與控制方法由軟、硬件兩部分構(gòu)成。
[0038] 硬件部分包括:iRobot差分驅(qū)動底盤以及信息采集單元、數(shù)據(jù)處理單元、運動控 制單元和遠程監(jiān)控單元4個模塊。軟件部分包括:R0S導(dǎo)航棧、Hector SLAM的自主建圖算 法、上位機界面和程序、路徑規(guī)劃算法。
[0039] 具體實施步驟如下。
[0040] 步驟一:以美國iRobot公司生產(chǎn)的iRobot Create為移動機器人平臺,進行改裝 與拓展。
[0041] iRobot Create移動機器人平臺最大的特點是可以進行編程,根據(jù)官方提供的通 信協(xié)議,可以控制Create底盤的運動和碼盤數(shù)據(jù)的讀取,并且該機器人底盤具有運行穩(wěn) 定、續(xù)航時間長等特點。本專利在原有機器人的基礎(chǔ)上進行改裝,構(gòu)建適應(yīng)所需功能的移動 機器人,由四個部分組成,包括信息采集單元、數(shù)據(jù)處理單元、運動控制單元和遠程監(jiān)控單 元。數(shù)據(jù)采集單元主要為激光雷達,系統(tǒng)預(yù)留相關(guān)接口。運動控制單元中,Create機器人 底盤內(nèi)建光電編碼器,用于記錄系統(tǒng)輪子所轉(zhuǎn)過的角度,從而推算機器人的位姿。
[0042] 步驟二:采用R0S的導(dǎo)航棧(Navigation)來實現(xiàn)導(dǎo)航系統(tǒng)的具體框架,通過設(shè)置 TF坐標(biāo)變換系統(tǒng)、Costmap占有柵格地圖來完成導(dǎo)航棧的基本配置。
[0043] 棧為功能包的集合,同時棧也是R0S軟件發(fā)布的主要形式。棧有Manifest文件, 其名字為Stack, xml,用來標(biāo)識版本信息和功能包集的依賴信息。R0S導(dǎo)航棧需要使用TF 坐標(biāo)變換系統(tǒng)來發(fā)布機器人的坐標(biāo)變換樹。而坐標(biāo)變化樹即系統(tǒng)中不同坐標(biāo)系之間的偏 移。如圖3所示,移動機器人平臺擁有移動的底盤和位于底盤上方的激光雷達。在該機器 人上,TF系統(tǒng)定義兩個坐標(biāo)系:一個坐標(biāo)系的原點位于機器人的底盤中心,另一個坐標(biāo)系 位于激光雷達的中心。將位于底盤的坐標(biāo)系定義為base_link,因為導(dǎo)航棧需要把該TF坐 標(biāo)系放置為移動機器人的旋轉(zhuǎn)中心。將位于激光雷達的坐標(biāo)系定義為base_laser。本系統(tǒng) 的iRobot Create底盤所使用的TF變換由箭頭標(biāo)識。
[0044] 移動機器人得到從激光雷達采集的距離信息無法直接進行SLAM操作,因為這些 數(shù)據(jù)是基于激光雷達中心來表示的,即這些數(shù)據(jù)在basejaser坐標(biāo)系下。為了能夠使用這 些數(shù)據(jù),需要進行數(shù)據(jù)的坐標(biāo)變換,即從base_laser變換到base_link下。如圖3所示的基 本模型中,已知激光雷達測得位于在其正前方0. 3m處有障礙物,而激光雷達安裝于底盤前 方0. lm,上方0. 2m處。從而可以獲取從base_link到basejaser的坐標(biāo)變換關(guān)系,base_ link坐標(biāo)系平移(X: 0.1m, y: 0.0m, z: 0.2m)。這樣就可以得到障礙物到機器人底盤的 距離。如圖4所示,假設(shè)base_link為父節(jié)點,因為所有