本發(fā)明是一種應用于室內(nèi)機器人的自主導航方案,所屬機器人領域。
技術背景
隨著計算機技術和信息處理技術的不斷發(fā)展,以這些技術為核心的機器人技術也在各個行業(yè)中得到了廣泛應用,其中包括以替代人力完成諸如家庭服務、巡邏和貨物搬運等復雜度不高但需要在室內(nèi)空間中的進行不斷移動的工作為目的的室內(nèi)移動機器人。
導航技術是移動機器人的核心技術之一,在復雜多變的室內(nèi)環(huán)境中,一種穩(wěn)定有效的導航方案是決定機器人能夠完成其工作的關鍵。對于工作于開闊室外空間而對精度要求不高的移動機器人平臺,通常可以借助gps進行定位和導航,但對于工作在室內(nèi)的移動機器人來說,不穩(wěn)定且精度較低的民用gps導航系統(tǒng)無法提供足夠準確的信息供機器人在狹小封閉的空間中進行移動。
目前常見的低端室內(nèi)機器人多采用雷達或紅外線進行障礙檢測,并在遇到障礙物時通過被動的避障來實現(xiàn)自主移動,其移動軌跡具有很大程度的隨機性,且無法進行事先指定好目的地的定向移動。部分高端機器人方案則多采用一線激光雷達或立體視覺系統(tǒng)進行避障和導航,這兩種方案雖然能夠通過獲取更多環(huán)境信息而實現(xiàn)定向移動和主動避障,但其在實際應用中均存在一定的局限性。通過一線激光雷達進行導航的方案雖然能夠通過獲取環(huán)境的二維輪廓來實現(xiàn)路徑規(guī)劃和避障,然而該方案僅能夠對一線雷達所在的平面進行掃描和建模,而對于低于或高于其掃描平面的障礙物則無能為力。利用立體視覺雖然能夠獲取立體的環(huán)境信息,但由于攝像頭的視角的限制,其掃描范圍無法覆蓋足夠的空間區(qū)域,且該方案還存在需要處理的數(shù)據(jù)量大、噪聲干擾大和有效距離短等缺點。
技術實現(xiàn)要素:
為了克服上述現(xiàn)有方案的不足,本發(fā)明實現(xiàn)了一種全新的基于雙一線激光雷達的機器人自主導航系統(tǒng)。相比于現(xiàn)有主流室內(nèi)機器人導航系統(tǒng),本發(fā)明僅使用了兩部低成本一線激光雷達作為信息來源,但達到了明顯優(yōu)于現(xiàn)有同等成本的方案的導航和避障效果。
本發(fā)明采用的技術方案是:
基于雙一線激光雷達的機器人自主導航系統(tǒng),其特征在于,包括雙一線雷達系統(tǒng)、上層導航系統(tǒng)、底層控制算法、運動執(zhí)行系統(tǒng);所述上層導航系統(tǒng)包括slam算法、坐標變換算法;利用slam算法根據(jù)水平安裝的雷達采集的原始激光雷達數(shù)據(jù)動態(tài)構建當前空間的二維地圖,同時解算出機器人平臺的位移信息;所述坐標變換算法根據(jù)slam算法所獲得的機器人位移信息對動態(tài)掃描的雷達各時刻所獲取的原始激光雷達數(shù)據(jù)進行坐標變換和疊加,從而將采集的環(huán)境信息確定出機器人周圍空間內(nèi)障礙物的三維信息;根據(jù)構建的二維地圖進行全局路徑規(guī)劃,規(guī)劃出一條當前位置與目的地之間的可行路徑;與此同時采集機器人的實時速度;如此根據(jù)采集到的速度信息、全局路徑、三維數(shù)據(jù)進行局部路徑規(guī)劃,并生產(chǎn)控制指令,從而實現(xiàn)機器人上層導航;所述底層控制算法對上層導航系統(tǒng)生成的控制指令進行解析和坐標變換,并利用pid控制對運動執(zhí)行系統(tǒng)進行控制,從而驅動機器人移動。
與現(xiàn)有系統(tǒng)技術相比,本系統(tǒng)的有益效果是:
1)本系統(tǒng)可以靈活地應用于多種室內(nèi)場景,且便于部署。
2)雙一線激光雷達配合獲取三維信息,在較小數(shù)據(jù)量的情況下獲取了足夠的環(huán)境信息,提高了數(shù)據(jù)的利用率,并降低了數(shù)據(jù)處理成本。
3)基于空間三維信息實現(xiàn)導航和避障系統(tǒng),有效提升了機器人的自主移動能力和避障效果,增加了系統(tǒng)的實用性和可靠性。
附圖說明
圖1為雙一線激光雷達結構示意圖。
圖2為雷達掃描范圍示意圖。
圖3為機器人系統(tǒng)結構示意圖。
圖4為機器人導航系統(tǒng)原理圖。
圖5為底層控制單元系統(tǒng)結構示意圖。
圖6機器人底盤運動速度與三個輪子運動速度。
具體實施方式
以下結合附圖和實施例對本發(fā)明技術方案做進一步介紹。
第一部分技術方案原理介紹:
1、利用兩部一線激光雷達和外圍控制電路構成雙一線雷達系統(tǒng),采集環(huán)境數(shù)據(jù)。如圖1所示,兩部激光雷達采用不同的安裝方式,其中一部水平固定安裝,用于獲取機器人所在空間的平面輪廓。另一部雷達在由舵機1提供動力的雷達控制器的控制下進行上下掃描,并由雷達控制器將當前雷達掃描平面與水平面的夾角信息發(fā)送至數(shù)據(jù)處理系統(tǒng)。
2、使用nvidiajetsontx1嵌入式平臺作為核心控制器搭建機器人硬件平臺。整個平臺按照功能可分為四個主要部分,分別為數(shù)據(jù)采集單元、數(shù)據(jù)處理單元、運動執(zhí)行系統(tǒng)和輔助部件。其中數(shù)據(jù)采集單元是整個系統(tǒng)的數(shù)據(jù)來源,利用針對本項目特殊設計的雙一線激光雷達系統(tǒng)采集環(huán)境信息。采集到的數(shù)據(jù)會被發(fā)送至數(shù)據(jù)處理單元,該部分是整個系統(tǒng)的核心,采用一塊nvidiajetsontx1嵌入式平臺作為機器人操作系統(tǒng)和各種上層算法運行的載體。運動執(zhí)行系統(tǒng)包括機器人的機械平臺、底層控制器以及驅動電路。此外,系統(tǒng)還包括一些輔助部件如路由器、電源等。
3、構建機器人上層導航系統(tǒng)。該導航系統(tǒng)利用slam算法(現(xiàn)有技術)根據(jù)水平安裝的雷達采集的原始激光雷達數(shù)據(jù)動態(tài)構建當前空間的二維地圖,同時根據(jù)建圖過程中的特征匹配解算(由slam算法的組成部分,已屬于現(xiàn)有技術)出機器人平臺的位移信息。
導航系統(tǒng)中的坐標變換算法根據(jù)slam算法所獲得的機器人位移信息對動態(tài)掃描的雷達各時刻所獲取的原始激光雷達數(shù)據(jù)進行坐標變換和疊加,從而由采集的環(huán)境信息最終獲得機器人周圍空間內(nèi)障礙物的三維信息。
根據(jù)構建的二維地圖,利用ros導航功能包(為現(xiàn)有技術,搭建于ros機器人ubuntu操作系統(tǒng)上)進行全局路徑規(guī)劃,規(guī)劃出一條當前位置與目的地之間的可行路徑;與此同時利用里程信息處理單元采集機器人的實時速度,之后再利用ros導航功能包根據(jù)采集到的速度信息以及全局路徑和坐標變換所生成的三維數(shù)據(jù)進行局部路徑規(guī)劃,并生產(chǎn)控制指令,從而實現(xiàn)機器人上層導航系統(tǒng)。
4、底層控制算法對上層導航系統(tǒng)生成的控制指令進行解析和坐標變換,并利用pid控制對電機轉速進行控制,從而驅動機器人移動。底層控制單元系統(tǒng)結構如圖5所示。
第二部分進一步用實施例說明
1、雙一線激光雷達系統(tǒng)
本發(fā)明使用兩個一線激光雷達進行數(shù)據(jù)采集。兩個雷達均可在水平面內(nèi)進行360度掃描,從而在一個周期內(nèi)獲得平面內(nèi)360度范圍的障礙物距離信息。
其中一部雷達(雷達2)安裝機器人底部距離地面10cm處,雷達2掃描平面水平放置,在運行過程中可獲取所在室內(nèi)環(huán)境的基本輪廓信息,用戶后續(xù)全局地圖構建。受機器人結構限制,為保護雷達不在機器人運行過程中因受到碰撞而損壞,雷達2整體嵌入機器人內(nèi)部,并在前端留出約150度的空間用于掃描外部環(huán)境,其余角度范圍內(nèi)數(shù)據(jù)均被丟棄。經(jīng)測試,該安裝方式完全可以滿足實際數(shù)據(jù)采集需求。
另一部激光雷達(雷達1)則安裝在機器人頂部的掃描雷達控制器上。整個掃描雷達控制器由機械裝置和控制電路組成。機械裝置包括用于固定整個裝置的支架、用于安裝雷達1的底座、用于傳動的連桿和用于提供動力的舵機1,整個裝置呈四邊形結構。該采集系統(tǒng)運行時,舵機1在控制電路(即雷達控制器)的控制下進行上下運動,從而帶動雷達1繞底座轉軸對空間進行掃描。
機器人頂端雷達1的掃描范圍如圖2所示。
由于雷達1位于機器人頂端,因此其掃描范圍主要分布在機器人頂端所在的平面以下。如圖2所示,為使機器人能夠順利繞過障礙物,周圍預留一定安全距離,由幾何關系可知,雷達1在水平面以下的掃描范圍θ1可由公式(1)計算得到
其中δ為安全距離,h為機器人高度。當安全距離為20cm,機器人高度為120厘米時,由公式(1)計算可得水平面以下掃描角度約為80.54°。此外,機器人上方也預留一定的安全空間,設置水平面上方掃描范圍為10°,因此雷達1將在水平面上下共大約90°的空間內(nèi)進行掃描。
雙一線雷達系統(tǒng)包括雷達控制器和電源模塊組成,雷達控制器通過pwm對舵機1角度進行控制,雷達1在雷達控制器的控制下以一定步長在90°范圍內(nèi)進行掃描,與此同時雷達控制器會將當前雷達平面與水平面間的夾角發(fā)送至數(shù)據(jù)處理系統(tǒng)用于坐標變換。電源模塊可輸出5v和6v兩種電壓,5v為雷達控制器提供正常工作電壓,6v輸出則用于舵機1供電。
2機器人硬件平臺
本發(fā)明所采用的機器人硬件平臺如圖3所示。
其按照功能平臺可分為數(shù)據(jù)采集、數(shù)據(jù)處理、運動執(zhí)行以及輔助部件。其中數(shù)據(jù)采集部分通過上述雙一線激光雷達系統(tǒng)實現(xiàn),數(shù)據(jù)處理部分采用英偉達公司的jetsontx1嵌入式平臺,該平臺上搭載了ubuntu操作系統(tǒng)和ros機器人操作系統(tǒng),用于實現(xiàn)對激光雷達數(shù)據(jù)的處理工作和機器人自主導航算法。運動執(zhí)行部分主要由arduino控制器配合驅動電路、電機和舵機以及機器人底盤組成。機器人底盤采用三輪驅動的開源機器人平臺hcr,其動力來自于三個12v直流減速電機,每個電機獨立驅動一個輪子,通過三個輪子的不同速度組合來實現(xiàn)機器人的定向移動。從上層控制指令到電機實際速度的解算過程由運行于arduino上的控制算法完成。外圍輔助電路則包括用于電池、穩(wěn)壓模塊和路由器等部件,電源配合穩(wěn)壓模塊用于為系統(tǒng)提供相應的電源,路由器則為上位機和機器人的通信提供支持。
3、機器人導航系統(tǒng)
3.1坐標轉換算法
對空間進行掃描的雷達采集的數(shù)據(jù)是基于固定于雷達上的坐標系的距離信息,而雷達與機器人系統(tǒng)平臺間存在相對運動,因此要根據(jù)雷達數(shù)據(jù)獲取機器人坐標系下的障礙物三維信息則需要對數(shù)據(jù)進行坐標變換。
雷達采集到的原始數(shù)據(jù)在圓柱坐標系表示為(ρ,φ,z),根據(jù)公式(2)轉換為直角坐標
若以機器人系統(tǒng)平臺前進方向為x軸正方向,豎直向上為z軸正方向,機器人底盤中心為原點建立坐標系,則雷達數(shù)據(jù)在機器人坐標系下可由下式計算
其中[xyz]'是變換到直角坐標系下的雷達數(shù)據(jù),[x'y'z']'是變換到機器人坐標系下的雷達數(shù)據(jù),
考慮到機器人在進行掃描時在不斷運動,因此機器人坐標系和空間坐標系間存在相對運動,為得到更準確的空間信息需要將機器人坐標系下的雷達數(shù)據(jù)進一步轉換到空間坐標系下,為此需要獲得機器人在空間坐標系下的位置。系統(tǒng)將固定安裝的激光雷達1作為獲取該位置信息的數(shù)據(jù)來源。不同于用于掃描的雷達,該雷達所采集的是同一水平面內(nèi)的環(huán)境信息。
數(shù)據(jù)處理算法,首先對該數(shù)據(jù)進行基本的坐標平移變換,將其轉換到空間坐標系下,之后采用slam算法對機器人在不同時刻采集的數(shù)據(jù)進行特征匹配,進而解算出機器人在空間中的位移信息。通過對位移信息進行累加,同時根據(jù)編碼器測得的機器人移動速度對累加結果進行修正,再根據(jù)機器人的初始位置即可獲得空間坐標系下的位置。
在獲得機器人在空間坐標系下的位置后,將機器人坐標系下的雷達數(shù)據(jù)進行平移即可得到空間坐標系下的空間信息。當機器人完成一次90°范圍內(nèi)的掃描后,將所有掃描到的點經(jīng)過上述變換后進行疊加,最終得到當前機器人附近空間的三維信息。
3.2slam算法
根據(jù)實際應用場合和性能需求,本發(fā)明采用了hectorslam算法(現(xiàn)有技術)作為構建地圖的算法。該算法采用了占據(jù)柵格地圖(occupancygirdmap)作為地圖信息的模型,利用基于雙線性插值和高斯牛頓法的特征匹配方法計算各數(shù)據(jù)點間的位置關系,從而構建出二維環(huán)境地圖并得到機器人位移信息。
3.3上層導航系統(tǒng)
機器人的導航可分為三個過程:環(huán)境建模、路徑規(guī)劃以及機器人控制。環(huán)境建模過程包括前文所述的坐標變換和地圖構建,該過程最終生成了所需的二維環(huán)境地圖和包含障礙物信息的三維點云。路徑規(guī)劃是整個系統(tǒng)的決策部分,該過程根據(jù)環(huán)境地圖和障礙物信息以及機器人的運動狀態(tài)進行多層次的路徑規(guī)劃和運動仿真,從而生成當前狀態(tài)下最合理的期望運動狀態(tài),并將其封裝成控制指令發(fā)送至底層控制器。機器人控制則以底層控制算法為核心,根據(jù)控制指令實際驅動機器人平臺進行移動。完整的機器人導航系統(tǒng)如圖4所示。
3.4底層控制算法
底層控制算法基于arduino平臺進行開發(fā),其主要包括指令解析、坐標變換、pid控制以及數(shù)據(jù)轉換等幾部分。底層控制算法結構圖5所示。
底層控制算法通過串口接收到上層導航系統(tǒng)產(chǎn)生的控制指令后首先對其進行解析。該控制指令中包含機器人的期望移動速度和旋轉角速度。本設計所采用的是三輪驅動的機械平臺,而控制指令所提供的是整個機器人平臺的速度,因此需要將機器人的期望速度轉換為三個輪子的期望速度。
以機器人底盤中心為原點,機器人前進方向為x軸正方向,豎直向上為z軸正方向建立坐標系,設機器人在x軸和y軸方向上的期望速度及繞z軸的轉速構成的向量為[vxvyω]t,而三個輪子的速度所構成的向量為[v1v2v3]t。設二者之間存在變換關系
上式可改寫為
式中[vxvyω]t的值由控制指令給定,因此只需確定參數(shù)矩陣即可解得三個輪子的速度向量。
機器人底盤運動速度與三個輪子運動速度如圖6所示.
根據(jù)上圖,利用動力學原理可分別求得參數(shù)矩陣中各值。本設計中最終求得的參數(shù)矩陣(根據(jù)實際情況修正后)的參數(shù)矩陣為
底層控制單元除了實現(xiàn)對底盤電機的控制之外還實現(xiàn)了編碼器數(shù)據(jù)的采集和轉換。本發(fā)明中所采用的電機的編碼器為ab相輸出,兩相之間相位相差90度,通過對任何一相的上升沿進行計數(shù)即可得到電機當前速度,而通過檢測兩相之間的相位差即可判斷電機的轉動方向。本發(fā)明中通過底層控制器的gpio中斷來對編碼器a相脈沖進行計數(shù),而a相和b相之間的相位差則通過判斷a相上升沿到來時b相的電平高低來確定。若a相上升沿到來時b相為低電平則電機正轉,否則電機則為反轉。
在通過編碼器獲得電機轉速和方向之后,需要將三個電機的轉速轉換為機器人的速度,該轉換過程與從機器人期望速度到電機期望轉速的轉換過程相反。在完成轉換后底層控制單元將利用ros的通信機制將其發(fā)布在/velocity話題上,而上層的算法則通過訂閱該話題來獲取機器人實時的速度信息。
本發(fā)明的創(chuàng)新點
1)發(fā)明了一種新的基于激光雷達定位技術的機器人自主導航系統(tǒng),通過兩部一線激光雷達的相互配合實現(xiàn)了相比于傳統(tǒng)方案更加穩(wěn)定可靠的室內(nèi)機器人自主導航功能。
2)利用機械裝置和嵌入式控制器實現(xiàn)了雙雷達協(xié)同工作。
3)本發(fā)明具有較高的可移植性,并能夠靈活應用于多種不同的室內(nèi)場景。