黃一航 解迎剛 馬曉宇 張祖貽 張天倫



摘 要:通過物聯網傳感器和數據分析技術,機器人可以獲得更廣泛的態勢感知,從而更好地執行任務。文中根據機器人大賽動態避障賽程的集體要求,搭建了基于ROS平臺工業機器人開源平臺,應用Python語言進行Gazebo虛擬現實系統的搭建,基于雙目視覺完成了靜態避障與動態避障功能,完成了機器人大賽的具體比賽。
關鍵詞:移動機器人;ROS平臺;Gazebo系統;智能避障;傳感器;物聯網
中圖分類號:TP391文獻標識碼:A文章編號:2095-1302(2020)04-00-03
0 引 言
近幾年,各行各業服務型機器人發展迅猛,服務機器人逐漸參與到人們的生活中。服務型機器人是最為實用也是最貼近人類生活的存在,爭位在服務型機器人行業中并沒有得到太多學者的研究,但在救援或者戰爭的環境下爭位機器人還是起到比較重要的地位。因此一些本學科的專家,提倡讓學生自主發揮想象力,使學生對機器人的研究更上一個臺階,同時提髙學生對機器人的興趣,培養學生良好的工作實踐能力,培養學生對機器人技術的興趣和熱情。
中國機器人大賽是目前中國影響力最大、綜合技術水平最高的機器人學科競賽之一,是我國最具影響力、最權威的機器人技術大賽、學術大會和科普盛會,是當今中國智能制造技術和高端人才的重大交流活動。本次比賽是以TurtleBot機器人為硬件基礎的,讓我們更深一步的學習了TurtleBot的技術原理與應用方法。
1 中國機器人大賽具體技術和規則要求
比賽規則是在Gazebo虛擬系統中,控制TurtleBot機器人。那么得分原則有如下兩個標準:
(1)機器人從起點出發,能成功到達終點,則獲得基礎加分;
(2)機器人從起點到終點用時越短,加分越多。
因此要考慮兩個因素:
(1)如何讓機器人自助規劃路徑,使其能夠避開障礙物并且行駛到終點;
(2)如何讓機器人規劃出最優路徑,使其能夠在最短的時間內到達終點。
機器人大賽比賽規則見表1所列。
在此任務中,障礙位置由服務器在客戶端程序首次啟動時給出,需要參賽選手對機器人的運動進行很好的控制,并制定好路徑規劃策略。在該任務中,將會有以下幾個任務點。
(1)場景一:有3個障礙物,分別位于1/4線,1/2線,3/4線。該場景下,最高分為10分,避開所有障礙得6分;最短時間者獲4分,第二名2分,第三名1分,其他人不得分。
(2)場景二:有6個障礙物,分別位于1/4線,1/2線,3/4線,每條線路上均有兩個障礙。該場景下,避開所有障礙得6分;最短時間者獲4分,第二名2分,第三名1分,其他人不得分。
(3)場景三:地面上隨機存在6個障礙物。該場景下,最高分為15分,避開所有障礙得11分,避開5個障礙得8分,避開4個障礙得5分;最短時間者獲4分,第二名2分,
第三名1分,其他人不得分。
(4)場景四:有5個障礙物,2個位于1/4線,2個位于3/4線,1個在1/2線處沿線隨機移動。在該場景下,最高分為15分,避開所有障礙得11分,避開出移動障礙物外所有障礙物并成功到達終點得7分;最短時間者獲4分,第二名2分,第三名1分,其他人不得分。
以上為本次比賽的規則,可見這個比賽的難度之大,要求之嚴格。
嚴格的要求中也有規則可循。障礙物的位置是固定的,而非移動的。而且障礙物的坐標是可以通過機器人的視覺獲取的。再一點,障礙物的形狀都是固定的,都是矩形的。因此避障算法只要解決兩個問題即可,第一就是要使機器人能夠獲取障礙物的位置坐標,第二就是使機器人能夠根據已知的環境,規劃出合理路徑。
2 比賽機器人的準備
2.1 硬件的準備
在本次比賽中使用TurtleBot二代機器人作為硬件基礎。TurtleBot 2的硬件主要有Yujin Kobuki移動底座、Kinect視覺傳感器、雙核筆記本、2 200 mA·h電池和可裝卸的結構模塊。TurtleBot 2使用目前最流行的ROS(Robot Operating System)作為操作系統,能實現3D建圖導航、跟隨等功能。機器人大賽TurtleBot機器人如圖1所示。
2.2 機器人中的物聯網感知和機器視覺
TurtleBot機器人裝有雙目視覺三維攝像頭和超聲波測距模塊。
攝像頭的作用是實現電腦與終端與機器人之間的物聯感知功能。攝像頭將拍攝的三維圖像傳送給數據處理電路,后者將模擬信號轉化為數字信號,將三維圖像分解為一個二維平面圖像和一組距離信號,方便計算機的應用。計算機接收到機器視覺視覺獲取的數據之后,將數據帶入到算法之中,先判斷是否運行避障算法,再使用獲取的數據進行路徑規劃,執行避障算法。算法執行完畢后,將規劃好的路徑信息數據傳送給機器人,機器人獲取路徑后,按照規劃好的路徑行駛。行駛過程中,繼續通過機器視覺獲取數據。重復上述過程,即可完成機器人與電腦終端之間的信息交互。實現機器視覺的物聯感知功能,實現人工算法對機器人的控制。
超聲波測距傳感器的作用是獲取機器人與障礙物之間的距離,并將距離數據傳送給電腦,與電腦中的通過三維圖像分解得來的距離信息進行比較。一方面是保證距離信息的正確性,另一方面是在機器視覺測距功能發生故障時,代替視覺測距,提供準確的距離數據。
所謂的機器視覺與物聯感知,就是將三維視覺雙目三維攝像頭和超聲波傳感器作為感知層;將電腦終端與機器人之間的無線網絡通信協議作為網絡層;Gazebo虛擬控制系統和機器人的運動模塊作為應用層,搭建了一個嵌入式物聯網體系。
嵌入式物聯網體系搭建完成之后,就可以實現電腦終端與機器人之間的信息交互,協同工作。
2.3 軟件系統和策略設計
TurtleBot的可以接受ROS系統的控制指令,也可以將機器人的運動狀態,如角速度,線速度等物理數值反饋給ROS系統,可以說ROS系統是TurtleBot運行的基礎。因此軟件環境搭建的第一步是電腦上搭建適合TurtleBot運行的ROS環境。第二步是在ROS 環境中搭建Gazebo虛擬現實系統。Gazebo是一款3D動態模擬器,能夠在復雜的室內和室外環境中準確有效地模擬機器人群。與游戲引擎提供高保真度的視覺模擬類似,Gazebo提供高保真度的物理模擬,其提供一整套傳感器模型,以及對用戶和程序非常友好的交互方式。
首先,安裝軟件運行環境,包括ROS系統和Gazebo系統,具體步驟如下:
(1)sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc)main"> /etc/apt/sources.list.d/ros-latest.list'
(2)sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
(3)sudo apt-get update
(4)sudo apt-get install ros-kinetic-desktop-full
(5)sudo rosdep init
(6)rosdep update
(7)echo "source /opt/ros/kinetic/setup.bash">> ~/.bashrc
(8)source ~/.bashrc
(9)sudo apt-get install ros-kinetic-turtlebot-gazebo
依次運行如下代碼之后,系統會自動安裝一段時間,然后就可以運行程序,運行程序的同時還要調用大量文件。運行步驟如下:
exportLD_LIBRARY_PATH=~/ros_scripts/plugin:$LD_LIBRARY_PATHroslaunch turtlebot_gazebo turtlebot_world.launch world_file:=/home/username/ros_scripts/world/world1-1(world_file:=your world_file's path)
這時Gazebo系統已經可以啟動。接下來的任務是在Gazebo系統中搭建比賽規定的環境。因此設置如下文件,使電腦能夠成為連接機器人硬件與控制軟件的服務器。
(1)how_to_run.py。該文件主要來寫參賽者想要如何控制小車的算法。
(2)robot.py。該文件主要是描述一個機器人類,在此處指的是小車。它有轉向和前進等各種功能,詳細信息可見代碼中的注釋。
(3)robot_ser.py。機器人服務端,主要接受客戶端傳來的指令來與gazebo進行交互。
(4)robot_cli.py。機器人客戶端,主要與服務端進行交
互,從服務端獲取狀態等信息,也可以對服務端發送信息用以控制小車。
(5)clock_ser.py。服務端時間類,主要是記錄比賽時間,與客戶端時間統一。
(6)clock_cli.py。客戶端時間類,主要是記錄比賽時間,與服務端時間統一。
(7)judge.py。裁判系統,主要記錄比賽時間,機器人狀態是否越界,是否成功完成比賽等。
(8)world.world。生成場景信息的文件。
其中how_to_run.py是路徑規劃文件,需要參賽者自己進行修改,使TurtlrBot機器人能夠合理的運行,在Gazebo系統生成的地圖上完成任務。world.world文件是生成地圖的文件,并且后面加上編號,就可以生成參賽者想要的地圖。
3 路徑規劃的實現
路徑規劃在具體實現時有多種算法可用,在本次比賽中采用計算量較小、實現比較容易的直角路線走法實現,即無數個直角組成的路徑。機器人首先向正前方行駛,檢測到前方有障礙物靠近時,執行避障算法。當檢測到障礙物遠離時,結束這條避障算法。當再次檢測到前方有障礙物靠近時,再次執行避障算法。
在執行避障算法的過程中,首先要利用機器人的機器視覺,獲取障礙物的三位圖像。然后將三維圖像以模擬信號的形式存儲下來,再將模擬信號轉化為數字信號。轉化為數字信號后,將三維圖像轉化為二維平面圖像,用于判斷障礙物的形狀。再從三維圖像中獲取機器人與障礙物的距離,用于規劃整體的避障路徑。
機器人在運行直角走法的過程中,并非像弧線算法那樣一次性規劃好整個路徑,而是每走一步,規劃一步,即每遇到一次障礙物,就要先判斷轉向方向,再規劃避開這個局部障礙的路徑。直角路線算法如圖2所示。
圖3所示為直角走法的運行結果,機器人從起點出發之后,成功到達終點。紅線標識的是機器人的行走路徑。
直角走法的算法優點是出錯率低,容錯率高。只要根據不同的地形,不同的障礙物形狀,一步一步地規劃路徑,一定能走到目標地點。缺點是用時長,時間復雜度高。由于要逐步規劃路徑,因此機器人每走一段距離就要停頓一下,規劃下一步的路徑,耗時長。況且比賽規則是用時越短,得分越高,因此直角規劃算法雖然能保證完成路徑,但不能保證快速完成。
4 結 語
機器人在運行直角走法的過程中,每走一步,規劃一步。直角走法適用于障礙物分散、數量多、體積小的避障環境,保證機器人能夠穩定地越過障礙物,完成避障。實際環境中,障礙物會是不同形狀,不同顏色。這就需要在三個方面改進機器人的避障策略:一是要增強機器視覺的識別能力,讓機器視覺能夠識別不同顏色、形狀復雜的障礙物;二是增加機器視覺的捕捉能力,能夠捕捉到移動障礙物的運動規律、運動狀態,方便機器人進行動態避障;三是增強數據處理程序的魯棒性和自洽性,使其在獲取上述復雜數據后,依然能夠進行數據處理,并將獲取的數據帶入路徑規劃算法之中。后續的比賽中將會從這三個方面進行改進。
注:本文通訊作者為解迎剛。
參考文獻
[1]解迎剛,楊曉芬,高博斌,等.基于混合模式的農產品質量追溯系統[J].物聯網技術,2018,8(3):61-62.
[2]賈衛平,蓋欣桐,張祥,等.基于ROS平臺機器人導航避障系統設計與開發[J].機械工程師,2019(10):16-18.
[3]王雷,石鑫.改進蟻群算法在移動機器人避障中的應用[J].南京航空航天大學學報,2019,51(5):728-734.
[4]王娟,吳憲祥,郭寶龍.基于改進粒子群優化算法的移動機器人路徑規劃[J].計算機工程與應用,2012,48(15):240-244.
[5]趙輝,郝夢雅,王紅君,等.基于改進A~*算法與天牛須搜索算法的農業機器人路徑規劃方法[J].科學技術與工程,2019,19(31):185-190.
[6]曹凱.移動機器人技術研究現狀與未來[J].信息系統工程,2013(5):140.
[7]楊明輝,吳垚,張勇,等.室內動態環境下的移動機器人自主避障策略[J].中南大學學報(自然科學版),2019,50(8):1833-1839.
[8]徐兵兵,郝榮飛.機器人路徑規劃技術的現狀與發展[J].電子技術與軟件工程,2018(24):81.
[9]范家琪.基于機器人群體避障學習的群智能算法的研究[D].上海:東華大學,2018.
[10]閆琳宇.室內動態環境下移動小車的路徑規劃技術研究[D].南京:東南大學,2018.
[11]陳順立.農業機器人路徑優化及軌跡跟蹤研究—基于遺傳算法[J].農機化研究,2017,39(8):17-21.
[12]熊菡.移動機器人全局路徑規劃及軌跡跟蹤研究[D].武漢:武漢科技大學,2014.