周海冰, 陶重犇, 孫云飛, 班建民, 高涵文
(蘇州科技大學(xué) 江蘇省建筑智慧節(jié)能重點(diǎn)實(shí)驗(yàn)室, 蘇州 215009)
近幾年來, 導(dǎo)航機(jī)器人研發(fā)勢頭良好, 許多國內(nèi)外的研究機(jī)構(gòu)已經(jīng)開發(fā)出了各種類型的導(dǎo)航機(jī)器人平臺(tái).但依舊存在機(jī)器人研發(fā)成本高、智能化水平低等問題[1].一些導(dǎo)航機(jī)器人平臺(tái)是基于承載能力有限的小型移動(dòng)底盤開發(fā)而來. 由于缺少相應(yīng)計(jì)算與感知能力的支持,因此對(duì)于機(jī)器人的導(dǎo)航精度或信息處理能力產(chǎn)生影響,比如iRobot Create掃地機(jī)器人; 另一些導(dǎo)航機(jī)器人平臺(tái)是按照定制要求設(shè)計(jì)的. 其硬件通用性與擴(kuò)展性較差. 比如Willow Garage公司的PR2機(jī)器人、波士頓動(dòng)力公司的RTCs導(dǎo)航機(jī)器人和斯坦福大學(xué)的STAIR1導(dǎo)航機(jī)器人平臺(tái)等; 還有針對(duì)教學(xué)與科研而開發(fā)的全套尺寸導(dǎo)航機(jī)器人, 比如Pioneer系列的導(dǎo)航機(jī)器人. 但是該類機(jī)器人不僅硬件兼容性較差, 而且價(jià)格昂貴[2].
目前, 導(dǎo)航機(jī)器人主要基于地圖來實(shí)現(xiàn)運(yùn)動(dòng)路徑的規(guī)劃、運(yùn)動(dòng)控制與自主導(dǎo)航. 然而, 由于許多現(xiàn)有的導(dǎo)航機(jī)器人實(shí)驗(yàn)平臺(tái)不僅硬件通用性、兼容性較差,而且存在傳感器感知能力與計(jì)算能力不足等問題, 從而導(dǎo)致在室內(nèi)環(huán)境地圖構(gòu)建時(shí)普遍存在累積誤差的問題. 宋宇等人提出利用一種平方根容積Rao-Blackwillised粒子濾波SLAM算法, 來減少非線性模型的累積誤差,并提高環(huán)境地圖的構(gòu)建精度[3]. 楊鴻等人基于Kinect深度攝像頭, 首先利用SURF算子提取圖像的特征點(diǎn)并匹配, 并結(jié)合RANSAC算法剔除可能存在的誤匹配點(diǎn), 完成初始配準(zhǔn), 再運(yùn)用ICP算法對(duì)采集到的深度圖像進(jìn)行精確配準(zhǔn), 最后得到三維環(huán)境地圖[4]. 該方法生成的地圖雖然精度較高, 但是計(jì)算量巨大, 且較為耗時(shí).Yu等人提出利用雙目視覺獲得深度信息, 并基于場景分割理論構(gòu)建信息不確定數(shù)學(xué)模型, 并根據(jù)概率的方法構(gòu)建三維柵格地圖[5]. 該算法需要對(duì)雙目獲取的圖像進(jìn)行融合, 在解決地圖精度的同時(shí), 也存在計(jì)算量較大的問題.
針對(duì)上述建圖研究中普遍存在的累計(jì)誤差問題,本文首先按照模塊化設(shè)計(jì)思想開發(fā)一臺(tái)導(dǎo)航機(jī)器人實(shí)驗(yàn)平臺(tái), 并提出一種融合了先驗(yàn)估計(jì)的最大期望算法,用于修正建圖時(shí)由于導(dǎo)航機(jī)器人車輪打滑產(chǎn)生的累積誤差. 從而實(shí)現(xiàn)準(zhǔn)確的室內(nèi)環(huán)境地圖構(gòu)建.
本文選用ARM Cortex-M3微處理器作為導(dǎo)航機(jī)器人的主控系統(tǒng), 并包含通信、感知、電機(jī)、顯示和電源五個(gè)終端模塊. 主控系統(tǒng)以集中式控制的方式實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與運(yùn)算, 終端只負(fù)責(zé)與主控系統(tǒng)間的數(shù)據(jù)傳輸. 本文設(shè)計(jì)的主控系統(tǒng)按照模塊化理念設(shè)計(jì)系統(tǒng)的各個(gè)部分, 從而保證系統(tǒng)可擴(kuò)展性[6]. 本文設(shè)計(jì)的導(dǎo)航機(jī)器人硬件總體結(jié)構(gòu)如圖1所示.
本文設(shè)計(jì)的導(dǎo)航機(jī)器人底盤如圖2所示. 主控系統(tǒng)是整個(gè)機(jī)器人的控制中心, 主要負(fù)責(zé)整個(gè)系統(tǒng)的控制決策, 以及機(jī)器人導(dǎo)航的實(shí)時(shí)計(jì)算. 電源模塊由一個(gè)24 V的蓄電池構(gòu)成, 經(jīng)過電壓轉(zhuǎn)換處理后為機(jī)器人系統(tǒng)供電. 顯示模塊由深度攝像頭組成, 主要通過把攝像頭攝取圖像信息傳送到主控系統(tǒng)進(jìn)行處理. 通信模塊利用無線網(wǎng)絡(luò)向上位機(jī)傳輸數(shù)據(jù), 并由上位機(jī)負(fù)責(zé)對(duì)數(shù)據(jù)的進(jìn)一步處理. 電機(jī)驅(qū)動(dòng)模塊負(fù)責(zé)執(zhí)行主控系統(tǒng)對(duì)步進(jìn)電機(jī)的控制指令.
圖1 導(dǎo)航機(jī)器人硬件總體結(jié)構(gòu)圖
圖2 本文設(shè)計(jì)的機(jī)器人底盤
步進(jìn)電機(jī)工作原理是實(shí)現(xiàn)電脈沖信號(hào)與角位移或線位移之間的轉(zhuǎn)換. 電機(jī)在額定功率范圍內(nèi)的轉(zhuǎn)速只與信號(hào)的頻率和脈沖數(shù)有關(guān), 與負(fù)載無關(guān). 因此在驅(qū)動(dòng)模塊的軟件設(shè)計(jì)中只需考慮信號(hào)的頻率和脈沖數(shù)[7]. 在本系統(tǒng)中由微處理器的定時(shí)器產(chǎn)生一定頻率的脈沖信號(hào), 再通過步進(jìn)電機(jī)驅(qū)動(dòng)器轉(zhuǎn)變, 使其達(dá)到不同的速度.
本文設(shè)計(jì)的驅(qū)動(dòng)模塊程序流程圖如圖3所示, 在對(duì)驅(qū)動(dòng)模塊進(jìn)行初始化與復(fù)位后, 確定目標(biāo)距離, 并計(jì)算出電機(jī)需要走的步數(shù)和脈沖當(dāng)量. 電機(jī)根據(jù)接受的信號(hào)以一定方向轉(zhuǎn)動(dòng)固定角度. 同時(shí)分別利用脈沖個(gè)數(shù)精確控制電機(jī)的角位移量, 利用脈沖頻率控制電機(jī)轉(zhuǎn)動(dòng)速度與加速度, 從而實(shí)現(xiàn)調(diào)速.
圖3 驅(qū)動(dòng)模塊流程圖
控制軟件用于步進(jìn)電機(jī)的速度的升降, 其結(jié)果對(duì)電機(jī)工作穩(wěn)定性、速度升降快慢、以及定位精度等均會(huì)產(chǎn)生影響. 本文采用變速控制方法. 在啟動(dòng)時(shí)以低于響應(yīng)頻率的速度運(yùn)行, 再逐漸提高速度直至恒定速度.當(dāng)即將抵達(dá)終點(diǎn)時(shí)逐漸減速, 直至低于響應(yīng)頻率速度,最終速度降低至停機(jī). 距離較長時(shí)的速度特性曲線如圖4所示.
圖4 機(jī)器人運(yùn)行速度特性曲線
感知模塊的作用是使機(jī)器人具備感知外界環(huán)境的能力, 并對(duì)感知到的環(huán)境做出相應(yīng)反應(yīng)[8]. 在感知模塊軟件設(shè)計(jì)中, 主要是對(duì)激光測距進(jìn)行編程和實(shí)現(xiàn). 激光測距的實(shí)現(xiàn)就是時(shí)差數(shù)據(jù)的采集過程. 本文設(shè)計(jì)的激光測距控制程序流程圖如圖5所示. 該程序主要完成激光數(shù)據(jù)的循環(huán)采集, 并將隨時(shí)間的變化量傳回主控系統(tǒng).
程序開始時(shí)的初始化包括定時(shí)器和外部中斷的初始化. 反射光中斷由外部中斷觸發(fā), 中斷程序由定時(shí)器實(shí)現(xiàn). 比如在實(shí)驗(yàn)中按照 0.5 ms實(shí)現(xiàn)一次中斷. 可通過計(jì)算前后兩次的中斷次數(shù)得到時(shí)間變化量. 從而計(jì)算出障礙物與機(jī)器人之間的距離.
圖5 激光測距控制程序流程圖
常見的地圖構(gòu)建方法首先利用里程計(jì)和激光測距儀分別采集距離數(shù)據(jù)和位置數(shù)據(jù). 在對(duì)機(jī)器人在地圖中的坐標(biāo)進(jìn)行定位后, 再將其坐標(biāo)信息添加至地圖中.然而, 由于機(jī)器人從動(dòng)輪經(jīng)常出現(xiàn)車輪打滑等原因容易產(chǎn)生累積誤差. 傳統(tǒng)建圖方法無法有效地解決地圖的閉合問題. 因此, 本文針對(duì)該問題提出了一種融合了先驗(yàn)估計(jì)的最大期望概率建圖方法. 該算法實(shí)現(xiàn)過程如文.
將t時(shí)刻機(jī)器人最可能的位置表示為
首先對(duì)公式(1)采用梯度下降方法求解, 再將求解出的位置對(duì)應(yīng)的激光測距儀探測數(shù)據(jù)ot, 分別添加至地圖mt. 從而得到新地圖mt+1:
在t=0 時(shí)位于坐標(biāo)系原點(diǎn). 已知t–1 時(shí)刻機(jī)器人位置st–1概率分布為那么結(jié)合測距數(shù)據(jù)ot和機(jī)器人的運(yùn)動(dòng)at–1可得:
其中,η表示歸一化量,mt–1是已知的地圖.
利用Markov定位算法更新公式(4):
最后, 利用最大期望概率算法更新后的地圖如公式(7)所示:
在環(huán)境地圖構(gòu)建過程中, 給定機(jī)器人位置的返向修正量可以表示為:
在安裝有運(yùn)動(dòng)捕捉系統(tǒng)的實(shí)驗(yàn)室, 利用本文提出的基于最大期望值的增量式建圖算法, 開展二維環(huán)境建圖和導(dǎo)航機(jī)器人自主導(dǎo)航實(shí)驗(yàn). 運(yùn)動(dòng)捕捉系統(tǒng)在實(shí)驗(yàn)中用于準(zhǔn)確地提供機(jī)器人實(shí)時(shí)坐標(biāo). 本文設(shè)計(jì)的導(dǎo)航機(jī)器人在Linux操作系統(tǒng)中完成編程, 并用于實(shí)際實(shí)驗(yàn), 以便驗(yàn)證本文提出算法在修正累積誤差方面的效果. 該型導(dǎo)航機(jī)器人實(shí)物圖如圖6所示.
圖6 本文設(shè)計(jì)的導(dǎo)航機(jī)器人實(shí)驗(yàn)平臺(tái)
實(shí)驗(yàn)過程是利用本文設(shè)計(jì)的導(dǎo)航機(jī)器人在對(duì)室內(nèi)環(huán)境建圖的同時(shí), 對(duì)機(jī)器人自身進(jìn)行定位, 并且地圖和機(jī)器人位置信息將不斷更新. 利用本文提出的最大期望算法將電機(jī)里程計(jì)修正數(shù)據(jù)與傳感器獲取的環(huán)境信息進(jìn)行融合, 并在構(gòu)建好的地圖中進(jìn)行路徑規(guī)劃和自主導(dǎo)航. 導(dǎo)航機(jī)器人路徑規(guī)劃和自主導(dǎo)航過程如圖7所示.
圖7 本文設(shè)計(jì)的機(jī)器人構(gòu)建地圖后進(jìn)行自主導(dǎo)航
本文在地圖中任意選擇6個(gè)坐標(biāo)點(diǎn), 用于本文提出的算法對(duì)累計(jì)誤差進(jìn)行修正, 并對(duì)坐標(biāo)修正的性能進(jìn)行評(píng)估. 對(duì)應(yīng)的6組實(shí)驗(yàn)結(jié)果如表1所示, 其中的坐標(biāo)單位是米. 由表1中的數(shù)據(jù)可知, 利用本文提出地圖構(gòu)建算法修正后的坐標(biāo)值接近實(shí)際值. 此外, 修正后的橫坐標(biāo)與縱坐標(biāo)數(shù)據(jù)與實(shí)際坐標(biāo)之間的平均誤差分別為5.3 cm和3.7 cm. 由于機(jī)器人的位置誤差已達(dá)厘米級(jí), 從而滿足了室內(nèi)環(huán)境地圖構(gòu)建的要求. 因此, 本文提出的增量式最大期望概率建圖算法能有效地、準(zhǔn)確地對(duì)室內(nèi)環(huán)境進(jìn)行地圖構(gòu)建.
本文針對(duì)目前導(dǎo)航機(jī)器人設(shè)計(jì)中存在的通用性差、計(jì)算能力和感知能力弱、硬件無法兼容等問題,基于模塊化設(shè)計(jì)思想設(shè)計(jì)了一臺(tái)導(dǎo)航機(jī)器人. 并針對(duì)導(dǎo)航機(jī)器人在建圖時(shí)普遍存在的累積誤差問題, 提出了一種融合了先驗(yàn)估計(jì)的增量式最大期望概率建圖算法. 由于導(dǎo)航機(jī)器人的工作環(huán)境通常較為復(fù)雜, 在完成環(huán)境地圖的初步構(gòu)建之后, 如何通過導(dǎo)航機(jī)器人具備不斷維護(hù)隨環(huán)境動(dòng)態(tài)更新的地圖, 將是下一步的研究內(nèi)容.
表1 本文算法修正前后坐標(biāo)之間的比較 (單位: m)