總的而言本發(fā)明涉及機(jī)器人,特別涉及一種移動(dòng)機(jī)器人導(dǎo)航方法與系統(tǒng)。
背景技術(shù):
移動(dòng)機(jī)器人是一種在復(fù)雜環(huán)境下工作的,具有自行組織、自主運(yùn)行、自主規(guī)劃的智能機(jī)器人,融合了計(jì)算機(jī)技術(shù)、信息技術(shù)、通信技術(shù)、微電子技術(shù)和機(jī)器人技術(shù)等。移動(dòng)機(jī)器人可以代替人類完成一些工作,比如,家用掃地機(jī)器人完成打掃室內(nèi)衛(wèi)生的任務(wù);AGV小車在工業(yè)環(huán)境,物流倉儲(chǔ)中高效地完成貨物的運(yùn)輸;在探索火星中,“好奇號”在火星的陌生環(huán)境中完成土壤標(biāo)本的采集。移動(dòng)機(jī)器人隨著其應(yīng)用環(huán)境和移動(dòng)方式的不同,其所用的傳感器也不同,比如,視覺傳感器、激光雷達(dá)、超聲波傳感器等。但是移動(dòng)機(jī)器人的核心技術(shù)一直都是圍繞導(dǎo)航技術(shù)。它是指移動(dòng)機(jī)器人通過傳感器感知環(huán)境信息和自身狀態(tài),實(shí)現(xiàn)在有障礙物的環(huán)境中面向目標(biāo)的自主運(yùn)動(dòng)。目前,移動(dòng)機(jī)器人主要的導(dǎo)航方式包括:磁導(dǎo)航、慣性導(dǎo)航、視覺導(dǎo)航、激光導(dǎo)航。
圖1為現(xiàn)有技術(shù)中移動(dòng)機(jī)器人的結(jié)構(gòu)示意圖,其包含有上位機(jī)和可移動(dòng)的底盤,上位機(jī)可以是PC機(jī),底盤中一般包含單片機(jī)/DSP等處理器和各種傳感器以及導(dǎo)航芯片,上位機(jī)用于采用高級編程語言(例如C語言)來編寫導(dǎo)航算法,算法編寫完成后,通過上位機(jī)將其編譯成二進(jìn)制碼,然后通過數(shù)據(jù)線,將這一編譯好的二進(jìn)制碼下載并固化在出廠前的導(dǎo)航芯片內(nèi),在機(jī)器人移動(dòng)過程中,單片機(jī)/DSP讀取導(dǎo)航芯片內(nèi)的二進(jìn)制數(shù)據(jù),根據(jù)傳感器的檢測結(jié)果,完成導(dǎo)航。
現(xiàn)有技術(shù)中的這種結(jié)構(gòu)存在以下問題:導(dǎo)航算法被預(yù)先固化于導(dǎo)航芯片內(nèi),使用者不能根據(jù)使用環(huán)境隨時(shí)更改導(dǎo)航算法,使得機(jī)器人不能適應(yīng)不同的環(huán)境要求;使用者不能隨著導(dǎo)航技術(shù)的更新迭代來給移動(dòng)機(jī)器人應(yīng)用最新的導(dǎo)航算法。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供了一種移動(dòng)機(jī)器人導(dǎo)航方法與系統(tǒng)。
一種移動(dòng)機(jī)器人導(dǎo)航方法,包括以下步驟:S100:將控制板安裝于移動(dòng)機(jī)器人底盤上;S200:移植ROS系統(tǒng)的底層驅(qū)動(dòng)文件;S300:移植移動(dòng)機(jī)器人特有驅(qū)動(dòng)文件;S400:對導(dǎo)航算法的源碼進(jìn)行編譯。
可選的,所述底盤為兩輪差分驅(qū)動(dòng),在底盤上還安裝有激光雷達(dá)傳感器,用于采集移動(dòng)機(jī)器人所處環(huán)境中與周圍障礙物的距離及角度信息。所述控制板分別與驅(qū)動(dòng)模塊、傳感器模塊、以及存儲(chǔ)模塊相連。所述底層驅(qū)動(dòng)文件包括USB接口驅(qū)動(dòng)文件、主板驅(qū)動(dòng)文件、和存儲(chǔ)卡驅(qū)動(dòng)文件。所述步驟S400包括:將編譯程序和導(dǎo)航算法預(yù)存儲(chǔ)于控制板內(nèi),通過編譯程序完成對導(dǎo)航算法的編譯。所述步驟S400還包括激光SLAM的源碼編譯,所述激光SLAM為基于Rao-Blackwellized粒子濾波及網(wǎng)格地圖的定位與建圖。所述導(dǎo)航算法包括局部路徑規(guī)劃和全局路徑規(guī)劃。所述導(dǎo)航算法包括動(dòng)態(tài)窗口避障算法。采用評估函數(shù)來決定機(jī)器人底盤在平面坐標(biāo)系上的x,y,θ方向上的運(yùn)動(dòng)速度。
一種移動(dòng)機(jī)器人導(dǎo)航系統(tǒng),包括:控制板,其安裝于所述移動(dòng)機(jī)器人底盤上;第一移植單元,用于移植ROS系統(tǒng)的底層驅(qū)動(dòng)文件;第二移植單元,用于移植移動(dòng)機(jī)器人特有驅(qū)動(dòng)文件;編譯單元,用于對導(dǎo)航算法的源碼進(jìn)行編譯。
本發(fā)明的有益效果是:本發(fā)明使移動(dòng)機(jī)器人的底盤與上層的算法運(yùn)算芯片更好地結(jié)合在一起,同時(shí)把安裝于移動(dòng)機(jī)器人底盤的各傳感器所采集的數(shù)據(jù)上傳至導(dǎo)航算法芯片,然后進(jìn)行多傳感器數(shù)據(jù)的融合,再通過執(zhí)行基于激光雷達(dá)及粒子濾波的導(dǎo)航算法,最終實(shí)現(xiàn)移動(dòng)機(jī)器人在室內(nèi)未知環(huán)境中的自主定位建圖及導(dǎo)航功能。
附圖說明
圖1為本背景技術(shù)示意圖;
圖2為本發(fā)明機(jī)器人的結(jié)構(gòu)示意圖;
圖3為本發(fā)明ROS系統(tǒng)的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例1的流程圖;
圖5為本發(fā)明實(shí)施例2的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式做詳細(xì)的說明,使本發(fā)明的上述及其它目的、特征和優(yōu)勢將更加清晰。在全部附圖中相同的附圖標(biāo)記指示相同的部分。并未刻意按比例繪制附圖,重點(diǎn)在于示出本發(fā)明的主旨。
請參閱圖2,首先對本發(fā)明移動(dòng)機(jī)器人的結(jié)構(gòu)做介紹。本發(fā)明的移動(dòng)機(jī)器人包括有可移動(dòng)的底盤,底盤之上安裝有帶有ROS系統(tǒng)(Robot Operation System,機(jī)器人操控系統(tǒng))的控制板,即在本發(fā)明中為機(jī)器人增加了一帶有操作系統(tǒng)的控制板。通過控制板編譯并運(yùn)行導(dǎo)航算法,從而控制機(jī)器人底盤的移動(dòng),上位機(jī)可以通過有線或無線的方式與控制板進(jìn)行通信,上位機(jī)可以采用高級編程語言(例如C語言)來編寫導(dǎo)航算法,之后將編寫好的導(dǎo)航算法發(fā)送至控制板,控制板可以將算法存儲(chǔ)于可擦寫的存儲(chǔ)器中。
與單片機(jī)/DSP等簡單的處理器不同,單片機(jī)/DSP中并不含有操控系統(tǒng),其僅可以讀取固化于導(dǎo)航芯片中的二進(jìn)制碼,處理已編譯好的代碼。而機(jī)器人操控系統(tǒng)是運(yùn)行于控制板上的軟件系統(tǒng),其至少可以完成對高級編程語言的編譯和對底層硬件的驅(qū)動(dòng),以及其它必要的操作,例如數(shù)據(jù)的讀取等。下面結(jié)合圖3和圖4詳細(xì)介紹將操控系統(tǒng)移植于控制板上的方法。
實(shí)施例1
S100:將控制板安裝于底盤上。
(Raspberry Pi,簡寫為RPi)是一種只有信用卡大小的微型電腦,其系統(tǒng)基于Linux。具有電腦的所有基本功能,它是一款基于ARM的微型電腦主板,以SD/MicroSD卡為內(nèi)存硬盤,可連接鍵盤、鼠標(biāo)和網(wǎng)線等設(shè)備,被廣泛應(yīng)用于各種領(lǐng)域。在本發(fā)明中,選用樹莓派Raspberry Pi 3Model B。其核心為一顆64位,4核的ARM v8結(jié)構(gòu)的芯片,需要給其安裝操作系統(tǒng),例如可以安裝基于Debian的Raspbian Jessie操作系統(tǒng)。
底盤為底盤為兩輪差分驅(qū)動(dòng),在底盤上還安裝有激光雷達(dá)傳感器RPLIDAR其是基于三角測距法的2D 360°激光雷達(dá),主要負(fù)責(zé)采集移動(dòng)機(jī)器人所處環(huán)境中與周圍障礙物的距離及角度信息,提供給上層的定位建圖及導(dǎo)航算法做運(yùn)算處理。
控制板通過其上的接口(例如USB口)與驅(qū)動(dòng)模塊、傳感器模塊、顯示模塊以及存儲(chǔ)模塊相連,激光雷達(dá)與樹莓派的通信采用常用的TTL轉(zhuǎn)USB2.0的通信方式,可更換不同品牌的激光雷達(dá),只需保持使用USB 2.0接口與樹莓派連接。通過傳感器模塊獲取來自激光雷達(dá)傳感器的檢測數(shù)據(jù),存儲(chǔ)模塊用于存儲(chǔ)各種數(shù)據(jù),例如來自上位機(jī)的導(dǎo)航算法(程序),控制板根據(jù)檢測數(shù)據(jù)通過驅(qū)動(dòng)模塊對底盤上的輪進(jìn)行差分驅(qū)動(dòng)。顯示模塊,可以顯示各種數(shù)據(jù)。
S200:移植ROS系統(tǒng)的底層驅(qū)動(dòng)文件。
為了在控制板上建立ROS系統(tǒng),需要先為控制板安裝基礎(chǔ)的最底層驅(qū)動(dòng)文件,這些驅(qū)動(dòng)文件是為了保證基于Debian的Raspbian Jessie操作系統(tǒng)正常運(yùn)行所必須的。底層驅(qū)動(dòng)文件可以包括USB接口驅(qū)動(dòng)文件、主板驅(qū)動(dòng)文件、存儲(chǔ)卡驅(qū)動(dòng)文件等等。
S300:移植移動(dòng)機(jī)器人特有驅(qū)動(dòng)文件。
對于移動(dòng)機(jī)器人而言,其底盤上安裝有多種特有設(shè)備,例如激光傳感器、里程計(jì),慣性測量單元(IMU)、驅(qū)動(dòng)模塊等,在安裝完成底層驅(qū)動(dòng)文件后,控制板可以通過接口檢測是否有外接設(shè)備與控制板相連,當(dāng)檢測到有外界設(shè)備與控制板連接后,可以為這些設(shè)備安裝相應(yīng)的驅(qū)動(dòng)文件。
S400:對導(dǎo)航算法的源碼進(jìn)行編譯。
整個(gè)定位及建圖、導(dǎo)航算法都是基于ROS操作系統(tǒng)運(yùn)行的。同時(shí),算法的維護(hù)更新都是在ROS里操作的。具體而言,編譯程序用于將采用高級語言編寫的導(dǎo)航算法編譯成機(jī)器可識(shí)別的二進(jìn)制代碼,以便于運(yùn)行。編譯程序可以存儲(chǔ)于控制板中的存儲(chǔ)模塊內(nèi),通過上位機(jī)將導(dǎo)航算法下載至存儲(chǔ)模塊內(nèi)后,編譯程序啟動(dòng)編譯,編譯可以在控制板啟動(dòng)后一次完成,當(dāng)然也可以實(shí)時(shí)編譯運(yùn)行。對于一次編譯而言,編譯程序會(huì)將例如以C語言編寫的導(dǎo)航算法全部編譯成二進(jìn)制代碼,之后存儲(chǔ)于存儲(chǔ)模塊內(nèi),控制板根據(jù)編譯后的代碼對機(jī)器人進(jìn)行導(dǎo)航控制。
本發(fā)明中,整個(gè)移植的過程分為以下幾個(gè)部分,先移植ROS系統(tǒng)的底層驅(qū)動(dòng)文件,然后是移動(dòng)機(jī)器人底盤和激光傳感器的Linux驅(qū)動(dòng)的安裝,接著是激光SLAM(同時(shí)定位與建圖)和導(dǎo)航算法的源碼編譯。在本發(fā)明中所用到的激光SLAM是開源的Gmapping算法,是一套基于Rao-Blackwellized粒子濾波原理及網(wǎng)格地圖的定位與建圖。而導(dǎo)航中用到的路徑規(guī)劃算法包括局部路徑規(guī)劃和全局路徑規(guī)劃,而其中的避障算法則采用的是動(dòng)態(tài)窗口法,其避障控制原理為采用評估函數(shù)來決定機(jī)器人底盤在平面坐標(biāo)系上的,x,y,θ方向上的運(yùn)動(dòng)速度。
在本發(fā)明中,采用了功能強(qiáng)大的控制板,通過在控制板上建立ROS系統(tǒng)來完成機(jī)器人的操控,控制板可以直接完成對導(dǎo)航算法的編譯,從而不必將導(dǎo)航算法固化于導(dǎo)航芯片內(nèi),這樣在面對不同的使用環(huán)境時(shí),使用者僅需要在上位機(jī)上完成對于導(dǎo)航算法的修改即可,之后直接將修改后的導(dǎo)航算法下載至控制板的存儲(chǔ)模塊,移動(dòng)機(jī)器人便可以直接執(zhí)行新的導(dǎo)航算法,從而大大方便了導(dǎo)航算法的修改與升級。使移動(dòng)機(jī)器人的底盤與上層的算法運(yùn)算芯片更好地結(jié)合在一起,同時(shí)把安裝于移動(dòng)機(jī)器人底盤的各傳感器所采集的數(shù)據(jù)上傳至導(dǎo)航算法芯片,然后進(jìn)行多傳感器數(shù)據(jù)的融合,再通過執(zhí)行基于激光雷達(dá)及粒子濾波的導(dǎo)航算法,最終實(shí)現(xiàn)移動(dòng)機(jī)器人在室內(nèi)未知環(huán)境中的自主定位建圖及導(dǎo)航功能。
本發(fā)明所提供的控制移動(dòng)機(jī)器人Kobuki底盤運(yùn)動(dòng)的上層算法運(yùn)算嵌入式板及2D激光雷達(dá)傳感器,可以實(shí)現(xiàn)移動(dòng)機(jī)器人Kobuki底盤在室內(nèi)環(huán)境中定位建圖及導(dǎo)航功能,并在運(yùn)動(dòng)過程中實(shí)現(xiàn)避障功能。本發(fā)明所采用的移動(dòng)機(jī)器人激光導(dǎo)航算法融合了多種傳感器的數(shù)據(jù),里程計(jì),慣性測量單元(IMU),2D激光雷達(dá)。移動(dòng)機(jī)器人實(shí)現(xiàn)模塊樹莓派通過USB接口與Kobuki底盤進(jìn)行通信,完成對兩個(gè)差分驅(qū)動(dòng)輪上的電機(jī)的轉(zhuǎn)速及旋轉(zhuǎn)方向的控制.移動(dòng)機(jī)器人的同時(shí)定位與建圖的概念是指運(yùn)動(dòng)的物體根據(jù)傳感器的信息,一邊計(jì)算自身位置,一邊構(gòu)建環(huán)境地圖的過程。激光傳感器可以直接獲得相對于環(huán)境的直接距離信息,從而實(shí)現(xiàn)直接相對定位,對于激光傳感器的絕對定位及軌跡優(yōu)化可以在相對定位的基礎(chǔ)上進(jìn)行。而移動(dòng)機(jī)器人的導(dǎo)航功能是基于上一步的同時(shí)定位與建圖,路徑規(guī)劃是導(dǎo)航的核心部分,它分為:全局路徑規(guī)劃,即機(jī)器人外部環(huán)境完全已知和局部路徑規(guī)劃,即環(huán)境未知或部分未知,通過感知實(shí)時(shí)獲取環(huán)境信息。
實(shí)施例2
相應(yīng)的,如圖5所示,本發(fā)明還公開了一種機(jī)器人導(dǎo)航系統(tǒng),其包括:控制板,其安裝于所述移動(dòng)機(jī)器人底盤上;第一移植單元,用于移植ROS系統(tǒng)的底層驅(qū)動(dòng)文件;第二移植單元,用于移植移動(dòng)機(jī)器人特有驅(qū)動(dòng)文件;編譯單元,用于對導(dǎo)航算法的源碼進(jìn)行編譯。
其中,所述底盤為兩輪差分驅(qū)動(dòng),在底盤上還安裝有激光雷達(dá)傳感器,用于采集移動(dòng)機(jī)器人所處環(huán)境中與周圍障礙物的距離及角度信息。所述控制板分別與驅(qū)動(dòng)模塊、傳感器模塊、以及存儲(chǔ)模塊相連。所述底層驅(qū)動(dòng)文件包括USB接口驅(qū)動(dòng)文件、主板驅(qū)動(dòng)文件、和存儲(chǔ)卡驅(qū)動(dòng)文件。
還包括有存儲(chǔ)單元,用于將編譯程序和導(dǎo)航算法預(yù)存儲(chǔ)于控制板內(nèi),通過編譯程序完成對導(dǎo)航算法的編譯。
其中,編譯單元還用于對激光SLAM的源碼編譯,所述激光SLAM為基于Rao-Blackwellized粒子濾波及網(wǎng)格地圖的定位與建圖。所述導(dǎo)航算法包括局部路徑規(guī)劃和全局路徑規(guī)劃。所述導(dǎo)航算法包括動(dòng)態(tài)窗口避障算法。采用評估函數(shù)來決定機(jī)器人底盤在平面坐標(biāo)系上的x,y,θ方向上的運(yùn)動(dòng)速度。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似的部分互相參見即可。對于本申請的方法實(shí)施例而言,由于其與裝置實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見裝置實(shí)施例的部分說明即可。
在以上的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明。但是以上描述僅是本發(fā)明的較佳實(shí)施例而已,本發(fā)明能夠以很多不同于在此描述的其它方式來實(shí)施,因此本發(fā)明不受上面公開的具體實(shí)施的限制。同時(shí)任何熟悉本領(lǐng)域技術(shù)人員在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的方法和技術(shù)內(nèi)容對本發(fā)明技術(shù)方案做出許多可能的變動(dòng)和修飾,或修改為等同變化的等效實(shí)施例。凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所做的任何簡單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。