周海冰, 陶重犇, 孫云飛, 班建民, 高涵文
(蘇州科技大學 江蘇省建筑智慧節能重點實驗室, 蘇州 215009)
近幾年來, 導航機器人研發勢頭良好, 許多國內外的研究機構已經開發出了各種類型的導航機器人平臺.但依舊存在機器人研發成本高、智能化水平低等問題[1].一些導航機器人平臺是基于承載能力有限的小型移動底盤開發而來. 由于缺少相應計算與感知能力的支持,因此對于機器人的導航精度或信息處理能力產生影響,比如iRobot Create掃地機器人; 另一些導航機器人平臺是按照定制要求設計的. 其硬件通用性與擴展性較差. 比如Willow Garage公司的PR2機器人、波士頓動力公司的RTCs導航機器人和斯坦福大學的STAIR1導航機器人平臺等; 還有針對教學與科研而開發的全套尺寸導航機器人, 比如Pioneer系列的導航機器人. 但是該類機器人不僅硬件兼容性較差, 而且價格昂貴[2].
目前, 導航機器人主要基于地圖來實現運動路徑的規劃、運動控制與自主導航. 然而, 由于許多現有的導航機器人實驗平臺不僅硬件通用性、兼容性較差,而且存在傳感器感知能力與計算能力不足等問題, 從而導致在室內環境地圖構建時普遍存在累積誤差的問題. 宋宇等人提出利用一種平方根容積Rao-Blackwillised粒子濾波SLAM算法, 來減少非線性模型的累積誤差,并提高環境地圖的構建精度[3]. 楊鴻等人基于Kinect深度攝像頭, 首先利用SURF算子提取圖像的特征點并匹配, 并結合RANSAC算法剔除可能存在的誤匹配點, 完成初始配準, 再運用ICP算法對采集到的深度圖像進行精確配準, 最后得到三維環境地圖[4]. 該方法生成的地圖雖然精度較高, 但是計算量巨大, 且較為耗時.Yu等人提出利用雙目視覺獲得深度信息, 并基于場景分割理論構建信息不確定數學模型, 并根據概率的方法構建三維柵格地圖[5]. 該算法需要對雙目獲取的圖像進行融合, 在解決地圖精度的同時, 也存在計算量較大的問題.
針對上述建圖研究中普遍存在的累計誤差問題,本文首先按照模塊化設計思想開發一臺導航機器人實驗平臺, 并提出一種融合了先驗估計的最大期望算法,用于修正建圖時由于導航機器人車輪打滑產生的累積誤差. 從而實現準確的室內環境地圖構建.
本文選用ARM Cortex-M3微處理器作為導航機器人的主控系統, 并包含通信、感知、電機、顯示和電源五個終端模塊. 主控系統以集中式控制的方式實現數據存儲與運算, 終端只負責與主控系統間的數據傳輸. 本文設計的主控系統按照模塊化理念設計系統的各個部分, 從而保證系統可擴展性[6]. 本文設計的導航機器人硬件總體結構如圖1所示.
本文設計的導航機器人底盤如圖2所示. 主控系統是整個機器人的控制中心, 主要負責整個系統的控制決策, 以及機器人導航的實時計算. 電源模塊由一個24 V的蓄電池構成, 經過電壓轉換處理后為機器人系統供電. 顯示模塊由深度攝像頭組成, 主要通過把攝像頭攝取圖像信息傳送到主控系統進行處理. 通信模塊利用無線網絡向上位機傳輸數據, 并由上位機負責對數據的進一步處理. 電機驅動模塊負責執行主控系統對步進電機的控制指令.

圖1 導航機器人硬件總體結構圖

圖2 本文設計的機器人底盤
步進電機工作原理是實現電脈沖信號與角位移或線位移之間的轉換. 電機在額定功率范圍內的轉速只與信號的頻率和脈沖數有關, 與負載無關. 因此在驅動模塊的軟件設計中只需考慮信號的頻率和脈沖數[7]. 在本系統中由微處理器的定時器產生一定頻率的脈沖信號, 再通過步進電機驅動器轉變, 使其達到不同的速度.
本文設計的驅動模塊程序流程圖如圖3所示, 在對驅動模塊進行初始化與復位后, 確定目標距離, 并計算出電機需要走的步數和脈沖當量. 電機根據接受的信號以一定方向轉動固定角度. 同時分別利用脈沖個數精確控制電機的角位移量, 利用脈沖頻率控制電機轉動速度與加速度, 從而實現調速.

圖3 驅動模塊流程圖
控制軟件用于步進電機的速度的升降, 其結果對電機工作穩定性、速度升降快慢、以及定位精度等均會產生影響. 本文采用變速控制方法. 在啟動時以低于響應頻率的速度運行, 再逐漸提高速度直至恒定速度.當即將抵達終點時逐漸減速, 直至低于響應頻率速度,最終速度降低至停機. 距離較長時的速度特性曲線如圖4所示.

圖4 機器人運行速度特性曲線
感知模塊的作用是使機器人具備感知外界環境的能力, 并對感知到的環境做出相應反應[8]. 在感知模塊軟件設計中, 主要是對激光測距進行編程和實現. 激光測距的實現就是時差數據的采集過程. 本文設計的激光測距控制程序流程圖如圖5所示. 該程序主要完成激光數據的循環采集, 并將隨時間的變化量傳回主控系統.
程序開始時的初始化包括定時器和外部中斷的初始化. 反射光中斷由外部中斷觸發, 中斷程序由定時器實現. 比如在實驗中按照 0.5 ms實現一次中斷. 可通過計算前后兩次的中斷次數得到時間變化量. 從而計算出障礙物與機器人之間的距離.

圖5 激光測距控制程序流程圖
常見的地圖構建方法首先利用里程計和激光測距儀分別采集距離數據和位置數據. 在對機器人在地圖中的坐標進行定位后, 再將其坐標信息添加至地圖中.然而, 由于機器人從動輪經常出現車輪打滑等原因容易產生累積誤差. 傳統建圖方法無法有效地解決地圖的閉合問題. 因此, 本文針對該問題提出了一種融合了先驗估計的最大期望概率建圖方法. 該算法實現過程如文.
將t時刻機器人最可能的位置表示為

首先對公式(1)采用梯度下降方法求解, 再將求解出的位置對應的激光測距儀探測數據ot, 分別添加至地圖mt. 從而得到新地圖mt+1:


在t=0 時位于坐標系原點. 已知t–1 時刻機器人位置st–1概率分布為那么結合測距數據ot和機器人的運動at–1可得:

其中,η表示歸一化量,mt–1是已知的地圖.
利用Markov定位算法更新公式(4):


最后, 利用最大期望概率算法更新后的地圖如公式(7)所示:

在環境地圖構建過程中, 給定機器人位置的返向修正量可以表示為:

在安裝有運動捕捉系統的實驗室, 利用本文提出的基于最大期望值的增量式建圖算法, 開展二維環境建圖和導航機器人自主導航實驗. 運動捕捉系統在實驗中用于準確地提供機器人實時坐標. 本文設計的導航機器人在Linux操作系統中完成編程, 并用于實際實驗, 以便驗證本文提出算法在修正累積誤差方面的效果. 該型導航機器人實物圖如圖6所示.

圖6 本文設計的導航機器人實驗平臺
實驗過程是利用本文設計的導航機器人在對室內環境建圖的同時, 對機器人自身進行定位, 并且地圖和機器人位置信息將不斷更新. 利用本文提出的最大期望算法將電機里程計修正數據與傳感器獲取的環境信息進行融合, 并在構建好的地圖中進行路徑規劃和自主導航. 導航機器人路徑規劃和自主導航過程如圖7所示.

圖7 本文設計的機器人構建地圖后進行自主導航
本文在地圖中任意選擇6個坐標點, 用于本文提出的算法對累計誤差進行修正, 并對坐標修正的性能進行評估. 對應的6組實驗結果如表1所示, 其中的坐標單位是米. 由表1中的數據可知, 利用本文提出地圖構建算法修正后的坐標值接近實際值. 此外, 修正后的橫坐標與縱坐標數據與實際坐標之間的平均誤差分別為5.3 cm和3.7 cm. 由于機器人的位置誤差已達厘米級, 從而滿足了室內環境地圖構建的要求. 因此, 本文提出的增量式最大期望概率建圖算法能有效地、準確地對室內環境進行地圖構建.
本文針對目前導航機器人設計中存在的通用性差、計算能力和感知能力弱、硬件無法兼容等問題,基于模塊化設計思想設計了一臺導航機器人. 并針對導航機器人在建圖時普遍存在的累積誤差問題, 提出了一種融合了先驗估計的增量式最大期望概率建圖算法. 由于導航機器人的工作環境通常較為復雜, 在完成環境地圖的初步構建之后, 如何通過導航機器人具備不斷維護隨環境動態更新的地圖, 將是下一步的研究內容.

表1 本文算法修正前后坐標之間的比較 (單位: m)