當(dāng)a = 〇°時(shí),計(jì)算墻壁與y-ζ平面間距離d,若d〈某 一常數(shù)dm,則令水平速度即左右速度vx= 土k,當(dāng)墻壁在機(jī)器人右側(cè)時(shí)取負(fù)號,否則令縱向 速度即前進(jìn)速度vz = k;從而使得機(jī)器人能夠旋轉(zhuǎn)至與墻壁平行后與墻壁保持一定距離沿 墻行走;若Tb < b,則進(jìn)入下一步繼續(xù)處理。
[0032] 在一種優(yōu)選的方案中,步驟S4中,根據(jù)不同障礙物場景采用改進(jìn)的人工勢場法確 定避障策略,其具體方法為:
[0033] (1)對于U型障礙物,采用向最小深度更大的方向轉(zhuǎn)向的方法解決局部最小點(diǎn)問 題,對于左右對立的障礙物,由于聚類時(shí)已經(jīng)將機(jī)器人不能通過的位置進(jìn)行融合,因此不需 要考慮是否能夠通過,而只需要考慮左右障礙物的邊界,保證能夠有效從二者中間通過;
[0034] (2)局部極小點(diǎn)和振蕩問題往往是由于每個(gè)障礙物均被單獨(dú)處理,而沒有考慮障 礙物的整體分布情況而導(dǎo)致,因而采用對象分組的方法,對相距較近的障礙物分為一組,將 同一組障礙物當(dāng)作一個(gè)虛擬的障礙物來進(jìn)行處理,這通過障礙物檢測部分的聚類方法來實(shí) 現(xiàn);
[0035] (3)對于障礙物和機(jī)器人的尺寸,考慮使用機(jī)器人尺寸在每個(gè)障礙物外部進(jìn)行擴(kuò) 充,并使用障礙物與機(jī)器人之間的最小距離作為斥力公式中的距離,同時(shí)在聚類時(shí)以機(jī)器 人尺寸為參照來進(jìn)行聚類和分離障礙物,從而保證機(jī)器人能夠有效避開障礙物。
[0036]與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是:本發(fā)明公開一種基于Kinect的 移動(dòng)機(jī)器人避障方法,在室內(nèi)環(huán)境中,通過Kinect傳感器獲取環(huán)境信息,通過對深度信息的 處理識別出障礙物特征,分離出不同障礙物,并實(shí)現(xiàn)對障礙物尺寸的估計(jì)和對特殊障礙物 的識別,根據(jù)障礙物信息確定對應(yīng)的障礙物場景,從而確定對應(yīng)的避障策略,并結(jié)合人工勢 場法,為未知室內(nèi)環(huán)境中智能移動(dòng)機(jī)器人的實(shí)時(shí)避障提供了一種適應(yīng)性強(qiáng)、實(shí)時(shí)性好、路徑 較為平滑的解決方案。本發(fā)明提高了對環(huán)境信息的掌握,因而適用于更多室內(nèi)場景,同時(shí), 結(jié)合人工勢場法進(jìn)行避障,利用了人工勢場法的優(yōu)點(diǎn)并通過環(huán)境信息解決了一些人工勢場 法存在缺陷的情況。
【附圖說明】
[0037]圖1為移動(dòng)機(jī)器人的系統(tǒng)結(jié)構(gòu)圖。
[0038]圖2為基于Kinect的移動(dòng)機(jī)器人避障方法的流程圖。
[0039]圖3為移動(dòng)機(jī)器人所受到的合力示意圖。
【具體實(shí)施方式】
[0040]附圖僅用于示例性說明,不能理解為對本專利的限制;下面結(jié)合附圖和實(shí)施例對 本發(fā)明的技術(shù)方案做進(jìn)一步的說明。
[0041 ] 實(shí)施例1
[0042]本方案中移動(dòng)機(jī)器人的系統(tǒng)結(jié)構(gòu)圖如圖1所示,本實(shí)施例中機(jī)器人為小車。機(jī)器人 在行進(jìn)過程中,通過Kinect傳感器檢測環(huán)境信息,由USB接口將數(shù)據(jù)傳送到上位機(jī),上位機(jī) 通過獲取到的深度信息進(jìn)行障礙物特征提取、不同障礙物的分離和識別,根據(jù)障礙物信息 確定對應(yīng)的避障策略,并結(jié)合改進(jìn)的人工勢場法計(jì)算小車的運(yùn)動(dòng)速度使其能夠避開障礙 物,上位機(jī)通過串口通信將此速度發(fā)送給嵌入式運(yùn)動(dòng)控制器,運(yùn)動(dòng)控制器通過動(dòng)作執(zhí)行器 控制小車的運(yùn)動(dòng)。另外,本方案中還加入了測速模塊,測速模塊通過運(yùn)動(dòng)執(zhí)行器采集機(jī)器人 全向輪的當(dāng)前速度信息,發(fā)送到運(yùn)動(dòng)控制器,運(yùn)動(dòng)控制器根據(jù)測速模塊提供的實(shí)時(shí)速度信 息,對全向輪的運(yùn)動(dòng)速度進(jìn)行閉環(huán)控制,從而實(shí)現(xiàn)對移動(dòng)機(jī)器人的速度控制。本方案中采用 的機(jī)器人要求能夠同時(shí)自旋和移動(dòng)。
[0043]如圖2所示,本發(fā)明提供一種基于Kinect的移動(dòng)機(jī)器人避障方法,所述方法包括以 下步驟:
[0044] S1:假設(shè)地面大致平坦,在開始避障前,讀取無障礙物的深度圖作為地面幀,使用 Kinect深度攝像頭標(biāo)定后的內(nèi)參,將深度圖轉(zhuǎn)化為以Kinect攝像頭中心點(diǎn)為原點(diǎn)的攝像頭 坐標(biāo)系中的點(diǎn)云,對點(diǎn)云使用RANSAC算法提取出擬合平面,即得到地面平面方程。
[0045] RANSAC算法的基本步驟是:隨機(jī)選擇深度圖中的3個(gè)點(diǎn)平面aX+by+cz+d = 0,檢查 剩余的點(diǎn)到平面的距離是否小于預(yù)設(shè)的閾值A(chǔ),這里設(shè)A為0.005m,若小于閾值A(chǔ)則認(rèn)為該點(diǎn) 在平面上,計(jì)算符合平面方程的點(diǎn)的個(gè)數(shù);重復(fù)上一步驟,直到符合平面方程的點(diǎn)的個(gè)數(shù)大 于預(yù)設(shè)的閾值B,即得到平面方程ax+by+cz+d = 0。
[0046] S2:采用Kinect傳感器的深度攝像頭獲取機(jī)器人前方的深度圖;Kinect可同時(shí)獲 取深度圖像和彩色圖像,這里僅使用深度圖像,Kinect的可視范圍為0.8~4.0m,近景模式 下,可視范圍為0.4~3.5m,獲取深度圖像的頻率為30幀/s。
[0047] S3:在小車行進(jìn)過程中,根據(jù)獲取的機(jī)器人前方的深度圖,估計(jì)障礙物的尺寸并識 別障礙物的類型;
[0048] 根據(jù)障礙物的特點(diǎn),障礙物分為以下幾類:
[0049] 第1類:高于機(jī)器人的障礙物;如吊燈、桌子的桌面部分等,該類障礙物不影響機(jī)器 人運(yùn)動(dòng),需要被去除;
[0050] 第2類:下陷障礙物,如下行的樓梯;
[0051]第3類:無法繞過去的障礙物,如正對的墻壁、轉(zhuǎn)角等;
[0052]第4類:左右對立的障礙物,如去除較高部分的門口、桌子;
[0053]第5類:走廊,即一側(cè)是墻壁的情形;
[0054] 第6類:過近的障礙物,如機(jī)器人剛開始運(yùn)動(dòng)或由于轉(zhuǎn)向或動(dòng)態(tài)障礙物而導(dǎo)致突然 出現(xiàn)的過近障礙物;
[0055] 第7類:其他普通障礙物,如椅子、垃圾桶、柜子等。
[0056] 在具體實(shí)施過程中,步驟S3中,識別障礙物類型的具體方法包括以下步驟:
[0057] S3.1 :識別第6類障礙物:計(jì)算有效點(diǎn)占比τ3 =有效點(diǎn)個(gè)數(shù)/(640*480),若τ3<某一 常數(shù)a,即點(diǎn)云中有效點(diǎn)過少,這可能是機(jī)器人剛開始運(yùn)動(dòng)或轉(zhuǎn)向時(shí)突然遇到過近的障礙 物,導(dǎo)致不在機(jī)器人可視范圍內(nèi)的點(diǎn)過多,即判斷為第6類障礙物,此時(shí)機(jī)器人應(yīng)停止運(yùn)動(dòng)。
[0058] S3.2:識別第1類、第2類障礙物:在機(jī)器人開始運(yùn)動(dòng)后,每次獲取深度圖后,轉(zhuǎn)化為 點(diǎn)云并計(jì)算各點(diǎn)到地面平面間距離hi,去除hl<0.08m的點(diǎn)即地面點(diǎn),機(jī)器人高度約為 0.42m,則去除hi >0.5m的障礙物即第1類障礙物,對于第2類障礙物,hi >0.08m,可直接當(dāng) 作普通障礙物處理。
[0059] S3.3 :識別第5類障礙物:對剩余點(diǎn)云使用RANSAC算法提取平面,計(jì)算內(nèi)點(diǎn)占比^ =平面內(nèi)點(diǎn)個(gè)數(shù)/點(diǎn)云總個(gè)數(shù),若某一常數(shù)b,且獲得的平面法向量與地面平面法向量 大致正交(夾角與90°相差小于一定范圍),則認(rèn)為當(dāng)前障礙物為一面墻壁,即判斷為第5類 障礙物;識別到第5類障礙物時(shí),計(jì)算墻壁法向量與攝像頭坐標(biāo)系中X軸的夾角a,ae[0°, 90°],設(shè)置小車的自旋速度v r= 土k*sina,其中k為一個(gè)常數(shù),當(dāng)墻壁在小車右側(cè)時(shí)vr取負(fù) 號;當(dāng)a = 〇°時(shí),計(jì)算墻壁與y-Z平面間距離d,若d〈某一常數(shù)dm,則令水平速度即左右速度 Vx = ±k,當(dāng)墻壁在小車右側(cè)時(shí)取負(fù)號,否則令縱向速度即前進(jìn)速度^ = 1^;從而使得小車能夠 旋轉(zhuǎn)至與墻壁平行后與墻壁保持一定距離沿墻行走;若Tb<b,則進(jìn)入下一步繼續(xù)處理。
[0060] 在具體實(shí)施過程中,為減