石學文,趙曉晨,王慶蘭,徐雍倡,李印宏
(曲阜師范大學工學院,山東 日照 276800)
如今,基于機器人操作系統(tǒng)(robot operating system,ROS)的智能機器人系統(tǒng)的研發(fā)已經(jīng)成為機器人的發(fā)展趨勢。借助分布式計算、軟件復用和快速測試等優(yōu)點,ROS已經(jīng)成為智能機器人開發(fā)的標準平臺。麻省理工學院強調(diào)“自從ROS發(fā)布了1.0版本之后,ROS已經(jīng)成為機器人軟件的事實標準”[1]。本文基于ROS設計了差分輪式機器人系統(tǒng),通過對其系統(tǒng)建模、路徑導航算法和語音交互的研究,使其更趨于實用化。
基于ROS的差分輪式機器人系統(tǒng)的設計,通過先模型仿真后實物實現(xiàn)的方式完成輪式機器人架構(gòu)的確定。設計前,必須確定機器人的形狀及其實現(xiàn)的功能,然后按照功能確定適合的硬件與編程軟件,最后完成機器人系統(tǒng)的整體搭建[2]。
利用統(tǒng)一機器人描述格式(unified robot description format,URDF)文件創(chuàng)建機器人模型,完成對雷達、輪子、電機的模擬。URDF模型可以在rviz+ArbotiX與Gazebo仿真環(huán)境中運動,實現(xiàn)機器人的同步定位與建圖(simultaneous localization and mapping,SLAM),以及路徑規(guī)劃等功能。
URDF模型主要由link標簽、joint標簽組成。link標簽描述剛體部分的物理屬性,joint標簽描述機器人關節(jié)的運動學和動力學屬性。機器人URDF模型最下層的底板包括6個link標簽和5個joint標簽。link標簽分別為底座、直流電機、驅(qū)動后輪和萬向輪,joint標簽分別將電機、輪子等固定到底盤。使用宏定義聲明重復的代碼模塊實現(xiàn)支柱和第二層板,并在第二層板加上代表雷達的link標簽,以及連接雷達和板的joint標簽。最后使用xacro文件優(yōu)化該模型,并將模型顯示到rviz可視化工具中[3]。
分析差速輪式機器人的運動學模型,通過機器人的幾何特征和其輪子速度,求解機器人的運動方程[4]。輪式機器人運動學模型如圖1所示。
圖1 輪式機器人運動學模型Fig.1 Kinematics model of wheeled robot
假設輪式機器人局部坐標系的坐標原點C處在兩個輪子的中點,局部坐標系的yR軸與2個輪子的連線平行,與機器人的前進方向垂直;全局坐標系x軸與xR軸夾角為θ。兩個驅(qū)動輪直徑為r,兩輪的輪間距為l。
(1)
(2)
(3)
(4)
由ξi=R(θ)-1ξR,可得:
(5)
式中:ξi為全局坐標系機器人的運動狀態(tài)矢量;ξR為局部坐標系機器人的運動狀態(tài)矢量。
由此可得,差分輪式機器人的運動學模型:
(6)
(7)
其中:
(8)
機器人系統(tǒng)分為4個部分:執(zhí)行系統(tǒng)、驅(qū)動模塊、傳感系統(tǒng)和控制部分。本機器人采用直流電機作為執(zhí)行機構(gòu),電機驅(qū)動模塊作為執(zhí)行機構(gòu),里程計、雷達作為傳感系統(tǒng),樹莓派作為控制系統(tǒng)。機器人框架圖如圖2所示。
為了提升機器人的智能化水平以及用戶的使用體驗、減少日常使用時繁瑣的程序流程,采用基于樹莓派的ReSpeaker 4-Mic陣列,完成語音控制差分輪式機器人的移動。語音控制流程圖如圖3所示。
圖3 語音控制流程圖Fig.3 Flowchart of voice control
通過ReSpeaker 4-Mic陣列集成的Amazon Alexa語音服務,并采用snowboy軟件錄制聲音。ReSpeaker 4-Mic陣列捕獲語音信號,對信號進行預處理,并將信息發(fā)送到機器人上位機樹莓派中。通過識別的語音信號計算出其對應的運動指令,完成機器人自主移動的功能。該模塊在檢測到不同語音時,對應的指令燈會顯示不同的顏色,并且控制機器人移動。
系統(tǒng)軟件設計包括同步定位與建圖(simultaneous localization and mapping,SLAM)設計和路徑規(guī)劃設計。對比不同的SLAM算法后,采用更高效的FastSLAM算法同時完成定位與地圖構(gòu)建。路徑規(guī)劃分為兩部分,共同完成機器人的系統(tǒng)設計。全局路徑規(guī)劃采用蟻群算法,局部路徑算法采用規(guī)劃推理和動態(tài)窗口算法。
SLAM是指機器人從某一位置起,通過機器人自身傳感器感知的數(shù)據(jù)移動,在移動的過程中隨時檢測所處位置,并構(gòu)建地圖,以此實現(xiàn)機器人的自主定位與導航[5]。
2.1.1 FastSLAM分析
FastSLAM算法將SLAM分為定位與地圖構(gòu)建兩部分。FastSLAM的核心是采用粒子濾波器完成定位、擴展卡爾曼濾波(extended Kalman filter,EKF)完成創(chuàng)建地圖的任務。環(huán)境特征分別對應單個EKF,是一種由粒子濾波與EKF組成的算法。
FastSLAM假設近似處理后驗概率p(st,m|zt,ut,nt),st=(s1,s2,…,st)為機器人軌跡。
(9)
分解近似后驗概率,表達形式為確定路徑上的N個路標后驗概率與路徑后驗概率乘積。通過粒子濾波器采樣。每個粒子可以表述為:
(10)
FastSLAM主要由新位姿采樣、估計檢測得到的環(huán)境路標、重采樣組成。
①新位姿采樣。
(11)
對第i個粒子的具體處理過程如下。
①預測第1個粒子位姿狀態(tài)可表示為:
(12)
②觀測到環(huán)境特征路標,假設為mnt。預測的路標信息表示為:
(13)
Gm=
(14)
Gm=
(15)
③更新狀態(tài)。將傳感器測量得到的準確觀測值進行狀態(tài)更新。假設觀測值為zt,可表示為:
(16)
(17)
(18)
④擴展機器人路徑,并在新的位姿實現(xiàn)采樣。
(19)
(20)
p(mn|st,i,zt,ut,nt)=
(21)
簡化式如下:
p(mt|st-1,i,zt-1,ut-1,nt-1)
(22)
③重采樣。
通過概率測量值求逆得到歸一化值。以第i個粒子為例,可表示為ηi=p(zt|mn,st,i,zt-1,u)。利用g對其線性化多次逼近高斯分布處理,可以有效地解決這個問題[6]。
(23)
式中:zt為高斯分布的均值。
2.1.2 仿真分析
在MATLAB仿真平臺上,對FastSLAM和EKF-SLAM算法進行仿真試驗。試驗模擬移動機器人根據(jù)預測的軌跡點逆時針自主運行。圖4、圖5分別為運行EKF-SLAM算法(實線)或運行FastSLAM算法(虛線)的真實路徑與估計路徑對比圖。從結(jié)果可以看出,運行優(yōu)化的FastSLAM算法后,能夠使得機器人運動軌跡更貼近預測路徑。
圖4 EKF-SLAM路徑估計圖Fig.4 Simulation of EKF-SLAM path estimation
圖5 FastSLAM路徑估計圖Fig.5 Simulation of FastSLAM path estimation
圖6、圖7分別為FastSLAM、EKF-SLAM與真實狀態(tài)的位姿值對比圖和偏差絕對值對比圖。結(jié)果表明,相對于EKF-SLAM算法,FastSLAM算法的狀態(tài)值更貼近真實狀態(tài),其偏差絕對值更小[7]。
圖6 位姿值對比圖Fig.6 Simulation of pose value comparison
圖7 偏差絕對值對比圖Fig.7 Simulation of absolute deviations comparison
2.2.1 理論分析
路徑規(guī)劃流程圖如圖8所示。
圖8 路徑規(guī)劃流程圖Fig.8 Flowchart of path planning
通過將全局路徑規(guī)劃和局部路徑規(guī)劃相結(jié)合,達到自主導航的目的。全局路徑規(guī)劃通過已有地圖和指定位置,完成整體路徑上的規(guī)劃。局部路徑規(guī)劃主要完成近距離目標和避障路徑的規(guī)劃[8]。全局路徑規(guī)劃采用了蟻群算法。蟻群算法根據(jù)運動路徑上的每個位置點的啟發(fā)式距離信息所發(fā)生的概率,生成從起始點到目標點的一些可行的運動路徑。每條路徑代表螞蟻的一個移動軌跡。計算這些可行路徑的長度和信息素的相應增量,并使用信息素路徑函數(shù)修改路徑上的點,使所規(guī)劃的路徑由一些直線段連接。將修改后的路徑與最短路徑的長度進行對比。如果修改后的路徑比修改前短,則修改后的路徑為新的最短路徑。利用啟發(fā)式函數(shù)信息和基于信息素的軌跡,從起始點到目標點生成一條可行的路徑,則當前的路徑就是機器人的最短路徑[9]。
局部路徑規(guī)劃是通過動態(tài)窗口接近(dynamic window approaches,DWA)算法實現(xiàn)。DWA算法首先對機器人控制空間(dx,dy,dθ)進行離散采樣,然后進行采樣速度預測,通過合并特征的度量標準進行評測軌跡結(jié)果。如果存在障礙物與全局路徑接近,則舍棄該路徑,重新規(guī)劃新路徑。找到最佳路徑之后移動平臺發(fā)布相關速度[10]。
2.2.2 仿真分析
采用(20×20)m的二維柵格圖作為路徑規(guī)劃的仿真環(huán)境,左上角為起點,右下角為終點。蟻群算法中的迭代次數(shù)K=100,螞蟻個數(shù)M=50,信息素重要程度參數(shù)α=1,啟發(fā)式因子重要程度參數(shù)β=7,最大迭代次數(shù)NCmax=100,信息素增加強度系數(shù)Q=1。機器人運動軌跡如圖9所示,折線代表其規(guī)劃的路徑。
圖9 機器人運動軌跡Fig.9 Simulation of robot’s trajectory
圖10為蟻群算法收斂結(jié)果。由圖10可知,該算法在開始環(huán)節(jié)多次迭代后收斂,可防止算法局部最優(yōu)、提高算法收斂性。
圖10 蟻群算法收斂結(jié)果Fig.10 Simulation of convergence results based on ant colony algorithm
通過機器人的SLAM與導航避障功能,機器人可以在無人干預的情況下自主完成未知環(huán)境的SLAM功能,導航路徑會根據(jù)地圖信息的完善而不斷優(yōu)化。SLAM構(gòu)建完成后,隨機放置障礙,機器人會重新規(guī)劃最優(yōu)路徑并避開障礙物。試驗分析分兩部分[11-12]。
①模型仿真。仿真部分采用Gazebo軟件同步顯示,如圖11為仿真模型測試圖。采用Gazebo軟件中的Building Editor工具創(chuàng)建了一個類似房間的仿真環(huán)境,并在仿真房間內(nèi)放置仿真機器人。通過程序設置隨機關鍵點后,仿真機器人根據(jù)關鍵點導航,構(gòu)建的SLAM在rviz可視化工具中實時更新。在地圖構(gòu)建完成后,輸入指定點導航,并在房間內(nèi)隨機放置障礙。機器人會在檢測到障礙物的同時,重新規(guī)劃路線,完成避障任務[11]。
圖11 仿真模型測試圖Fig.11 Robot simulation model test
②實物測試。機器人對所在的房間構(gòu)建地圖并通過rviz軟件顯示。在菜單欄中點擊“2D Nav Goal”按鈕并隨機選擇一個目標點,機器人就會規(guī)劃路徑向指定地點前進。在rviz軟件中,可以通過機器人傳感器數(shù)據(jù)和顯示機器人所在位置完成對機器人的實時監(jiān)控[12]。
本文提出的URDF仿真模型加運動學模型分析的建模方法,為差分輪式機器人系統(tǒng)設計提供了一種快速、有效的設計方法。試驗結(jié)果表明,通過采用優(yōu)化算法,使差分輪式機器人系統(tǒng)能快速構(gòu)建SLAM地圖和精準完成路徑規(guī)劃,并能通過語音指令控制機器人的運動,使其避開障礙、準確到達指定地點。本文設計的基于ROS的差分輪式機器人系統(tǒng),為其環(huán)境感知與多傳感器信息融合方面的研究提供了可靠平臺,對基于ROS的家庭陪護機器人系統(tǒng)的開發(fā)具有借鑒意義。