本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種基于區(qū)間流場的無人機(jī)避障系統(tǒng)及方法。
背景技術(shù):
無人機(jī)是一種無人駕駛飛機(jī),是利用無線電遙控設(shè)備和自備的程序控制裝置操縱的不載人飛機(jī)。無人機(jī)按應(yīng)用領(lǐng)域,可分為軍用與民用。軍用方面,無人機(jī)分為偵察機(jī)和靶機(jī)。而其中無人機(jī)加行業(yè)應(yīng)用,是無人機(jī)現(xiàn)在真正的剛需。目前,主要在航拍、農(nóng)業(yè)植保、測繪等領(lǐng)域的應(yīng)用,大大拓展了無人機(jī)本身的用途。所以,無人機(jī)在民用和軍用方面都有廣闊的應(yīng)用前景。
因此,隨著無人機(jī)的普遍,其安全也是一個重點(diǎn),也是一個難題。無人機(jī)避障作為安全的首選,能夠保證無人機(jī)在不碰撞其他物體,在空中正常且有序的飛行。目前,無人機(jī)避障一般基于光設(shè)備、紅外感應(yīng)設(shè)備和聲波設(shè)備。紅外傳感器是用紅外線為介質(zhì)的測量裝置,聲波設(shè)備因?yàn)榇┩噶?qiáng),易于獲得較集中的聲能,而光設(shè)備是一種可視化,能夠還原周圍環(huán)境的場景,屬于計(jì)算機(jī)視覺領(lǐng)域。
視覺方法在微無人機(jī)系統(tǒng)得到了廣發(fā)的應(yīng)用。例如在申請?zhí)枮?01410006655.x,發(fā)明專利名稱為《一種基于光流的移動機(jī)器人避障方法》的申請文件中,該發(fā)明采用單目攝像頭計(jì)算前后兩幀圖像的光流,并從光流中計(jì)算出ttc,根據(jù)ttc構(gòu)建障礙地圖,選擇安全區(qū)域,保證機(jī)器人在充滿障礙物的環(huán)境中分析障礙物分布,選擇最安全的方向行走。
隨著計(jì)算機(jī)視覺的不斷發(fā)展,基于這種光的避障設(shè)備一般都是相機(jī)。攝像頭避障一般有三種方案,包括3d攝像頭、雙目立體視覺和單目視覺。其中3d攝像頭能夠獲得原始的深度信息,也就是距離信息,但是這種體感攝像頭往往很貴,不利于產(chǎn)業(yè)化。雙目立體視覺也能夠獲取深度信息,但是提取深度信息消耗處理器資源,實(shí)時性不夠好。而單目攝像頭因其價格低廉易于產(chǎn)業(yè)化被廣泛使用,且在避障方面并不需要實(shí)際的距離,采用模糊控制的原理,能夠在復(fù)雜、充滿障礙物的環(huán)境中游走自如。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種基于區(qū)間流場的無人機(jī)避障系統(tǒng)及方法。
為了達(dá)到上述目的,本發(fā)明提供了一種基于區(qū)間流場的無人機(jī)避障系統(tǒng),該系統(tǒng)包括硬件模塊、軟件模塊和控制模塊;所述硬件模塊包括多旋翼無人機(jī)、單目攝像頭、四核處理器和飛行控制器,所述軟件模塊用一種lk金字塔稀疏光流避障算法,主要根據(jù)光流強(qiáng)度進(jìn)行區(qū)分障礙物的區(qū)分,所述控制模塊主要基于id識別的形式,分別對8個方向進(jìn)行編碼。
所述多旋翼無人機(jī)搭載gps接收模塊,主要獲取無人機(jī)位置(x,y),在飛行中給予一定的高度;
所述單目攝像頭采用普通的網(wǎng)絡(luò)攝像頭或者拍照攝像頭,幀率為30fps,分辨率為640*480,進(jìn)行環(huán)境感知;
所述四核處理區(qū)是一種odroidu3的2g內(nèi)存四核處理器,同時能夠運(yùn)行在典型的ubuntu等linux系統(tǒng);
所述飛行控制機(jī)采用pixhawk主要控制無人機(jī)的飛行。利用自動控制系統(tǒng)能夠?qū)︼w機(jī)的構(gòu)形、飛行姿態(tài)和運(yùn)動參數(shù)等實(shí)施控制。
優(yōu)選的,所述odroidu3和pixhawk采用串口通信,將處理的結(jié)果送至飛控,進(jìn)行處理。
所述控制模塊采用3位二進(jìn)制形式,分別有8種狀態(tài),為000,001,010,011,100,101,110,111,分別對應(yīng)8個方向上的避障。
本發(fā)明還提供一種基于區(qū)間流場的無人機(jī)避障方法,該方法包括下述步驟:該系統(tǒng)在硬件上主要采用單目攝像頭獲取圖像序列,經(jīng)odroidu3處理器進(jìn)行處理,采用串口與pixhawk飛控進(jìn)行通信,然后再執(zhí)行8個控制指令:左、右、上、下、左上、左下、右上、右下避障。其中,避障算法采用lk金字塔稀疏光流,通過將流場分成層次清晰的上、中、下和左、中、右6個區(qū)間,相互對比這6個區(qū)間的流場,從而進(jìn)行8個方向上的決策。
所述lk金字塔稀疏光流避障算法,主要根據(jù)光流強(qiáng)度進(jìn)行區(qū)分障礙物的區(qū)分。
光流避障的原理:光流是指圖像中灰度模式的運(yùn)動速度,是三維速度矢量在成像平面投影形成的二維瞬時速度場。障礙物距離攝像頭較近,所形成的速度矢量模值較大,即光流值較大,可以用來界定障礙物。另外,采用lk金字塔稀疏光流比稠密光流在時間上有優(yōu)勢。
lk金字塔稀疏光流避障算法具體如下:
1、無人機(jī)開機(jī)啟動,進(jìn)行初始化;
2、給定無人機(jī)定高模式,且采用以速度v勻速做勻速直線運(yùn)動向正前方飛行,連接單目攝像頭,并獲得前后兩幀圖像;
3、計(jì)算并獲取相鄰兩幀間的光流場;
4、計(jì)算區(qū)間內(nèi)的流場大?。?/p>
(1)將此光流場分為左、中、右三個區(qū)間,分別計(jì)算這3個區(qū)間的模值suml(sumleft),sumc(sumcenter),sumr(sumright);
(2)將suml,sumc,sumr這三個模值總和相加,并取其倒數(shù),即t=1/(suml+sumc+sumr);
(3)將此光流場分為上、中、下三個區(qū)間,分別計(jì)算這三個區(qū)間的模值sumt(sumtop),summ(summiddle),sumd(sumdown);
(4)將sumt,summ和sumd這3個模值相加,并取其倒數(shù),即s=1/(sumt+sum+sumd);
5、規(guī)避策略,因?yàn)閟、t越小,光流強(qiáng)度越大,距離障礙物越近,因此取一定閾值內(nèi)的t、s進(jìn)行決策:
(1)如果t小于一定閾值,且s不小于一定閾值,則只執(zhí)行左右避障:
suml小于sumr和sumc,則執(zhí)行左轉(zhuǎn);
sumr小于suml和sumc,則執(zhí)行右轉(zhuǎn);
(2)如果s小于一定閾值,且t不小于一定閾值,則只執(zhí)行上下避障:
sumt小于summ和sumr,則執(zhí)行上行;
sumd小于summ和sumt,則執(zhí)行下行;
(3)如果t和s都小于一定閾值,則執(zhí)行左上,左下,右上,右下避障:
suml小于sumr和sumc,sumt小于summ和sumr,則執(zhí)行左上避障;
suml小于sumr和sumc,sumd小于summ和sumt,則執(zhí)行左下避障;
sumr小于suml和sumc,sumt小于summ和sumr,則執(zhí)行右上避障;
sumr小于suml和sumc,sumd小于summ和sumt,則執(zhí)行右下避障。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)和有益效果:
針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于區(qū)間流場的無人機(jī)避障系統(tǒng)及方法,可以為無人機(jī)導(dǎo)航和機(jī)器人導(dǎo)航領(lǐng)域提供一種避障方法,為導(dǎo)航奠定了堅(jiān)實(shí)的基礎(chǔ)。本發(fā)明避障方案采用的是基于相鄰兩幀間的流場,對流場進(jìn)行區(qū)間劃分,以判斷無人機(jī)的前行決策,其中,提出了8個方向上的規(guī)避決策,基本包含了所有飛行器的避障措施,相較于單純的左右、上下避障來說,是比較全面的,且實(shí)時效果顯著。另外,本發(fā)明采用單目攝像頭,這種攝像頭往往比較低廉,相較于工業(yè)攝像頭、3d傳感器攝像頭和立體視覺在經(jīng)濟(jì)上有一定優(yōu)勢,更有利于產(chǎn)業(yè)化。
附圖說明
圖1是本發(fā)明系統(tǒng)的總體示意圖;
圖2是本發(fā)明方法lk金字塔稀疏光流避障算法實(shí)現(xiàn)流程圖;
圖3是本發(fā)明方法流程分區(qū)間示意圖;
圖4是本發(fā)明方法規(guī)避策略示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
參照下面的描述和附圖,將清楚本發(fā)明的實(shí)施例的這些和其他方面。在這些描述和附圖中,具體公開了本發(fā)明的實(shí)施例中的一些特定實(shí)施方式,來表示實(shí)施本發(fā)明的實(shí)施例的原理的一些方式,但是應(yīng)當(dāng)理解,本發(fā)明的實(shí)施例的范圍不受此限制。相反,本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
本實(shí)施例所述的一種基于區(qū)間流場的無人機(jī)避障系統(tǒng)及方法,如圖1所示,該系統(tǒng)包括硬件模塊、軟件模塊和控制模塊;所述硬件模塊包括多旋翼無人機(jī)、單目攝像頭、四核處理器和飛行控制器,所述軟件模塊用一種lk金字塔稀疏光流避障算法,主要根據(jù)光流強(qiáng)度進(jìn)行區(qū)分障礙物的區(qū)分,所述控制模塊主要基于id識別的形式,分別對8個方向進(jìn)行編碼。
多旋翼無人機(jī)搭載gps接收模塊,主要獲取無人機(jī)位置(x,y),在飛行中給予一定的高度;
單目攝像頭采用普通的網(wǎng)絡(luò)攝像頭或者拍照攝像頭,幀率為30fps,分辨率為640*480,進(jìn)行環(huán)境感知;
四核處理區(qū)是一種odroidu3的2g內(nèi)存四核處理器,同時能夠運(yùn)行在典型的ubuntu等linux系統(tǒng);
飛行控制機(jī)采用pixhawk主要控制無人機(jī)的飛行。利用自動控制系統(tǒng)能夠?qū)︼w機(jī)的構(gòu)形、飛行姿態(tài)和運(yùn)動參數(shù)等實(shí)施控制。
所述odroidu3和pixhawk采用串口通信,將處理的結(jié)果送至飛控,進(jìn)行處理。
所述控制模塊采用3位二進(jìn)制形式,分別有8種狀態(tài),為000,001,010,011,100,101,110,111,分別對應(yīng)8個方向上的避障。
一種基于區(qū)間流場的無人機(jī)避障方法,該方法包括下述步驟:該系統(tǒng)在硬件上主要采用單目攝像頭獲取圖像序列,經(jīng)odroidu3處理器進(jìn)行處理,采用串口與pixhawk飛控進(jìn)行通信,然后再執(zhí)行8個控制指令:左、右、上、下、左上、左下、右上、右下避障。其中,避障算法采用lk金字塔稀疏光流,通過將流場分成層次清晰的上、中、下和左、中、右6個區(qū)間,相互對比這6個區(qū)間的流場,從而進(jìn)行8個方向上的決策。
所述lk金字塔稀疏光流避障算法,主要根據(jù)光流強(qiáng)度進(jìn)行區(qū)分障礙物的區(qū)分。
光流避障的原理:光流是指圖像中灰度模式的運(yùn)動速度,是三維速度矢量在成像平面投影形成的二維瞬時速度場。障礙物距離攝像頭較近,所形成的速度矢量模值較大,即光流值較大,可以用來界定障礙物。另外,采用lk金字塔稀疏光流比稠密光流在時間上有優(yōu)勢。如圖2所示:
lk金字塔稀疏光流避障算法具體如下:
1、無人機(jī)開機(jī)啟動,進(jìn)行初始化;
2、給定無人機(jī)定高模式,且采用以速度v勻速做勻速直線運(yùn)動向正前方飛行,連接單目攝像頭,并獲得前后兩幀圖像;
3、計(jì)算并獲取相鄰兩幀間的光流場;
4、計(jì)算區(qū)間內(nèi)的流場大小,如圖3所示:
(1)將此光流場分為左、中、右三個區(qū)間,分別計(jì)算這3個區(qū)間的模值suml(sumleft),sumc(sumcenter),sumr(sumright);
(2)將suml,sumc,sumr這三個模值總和相加,并取其倒數(shù),即t=1/(suml+sumc+sumr);
(3)將此光流場分為上、中、下三個區(qū)間,分別計(jì)算這三個區(qū)間的模值sumt(sumtop),summ(summiddle),sumd(sumdown);
(4)將sumt,summ和sumd這3個模值相加,并取其倒數(shù),即s=1/(sumt+sum+sumd);
5、規(guī)避策略,因?yàn)閟、t越小,光流強(qiáng)度越大,距離障礙物越近,因此取一定閾值內(nèi)的t、s進(jìn)行決策,如圖4所示:
(1)如果t小于一定閾值,且s不小于一定閾值,則只執(zhí)行左右避障:
suml小于sumr和sumc,則執(zhí)行左轉(zhuǎn);
sumr小于suml和sumc,則執(zhí)行右轉(zhuǎn);
(2)如果s小于一定閾值,且t不小于一定閾值,則只執(zhí)行上下避障:
sumt小于summ和sumr,則執(zhí)行上行;
sumd小于summ和sumt,則執(zhí)行下行;
(3)如果t和s都小于一定閾值,則執(zhí)行左上,左下,右上,右下避障:
suml小于sumr和sumc,sumt小于summ和sumr,則執(zhí)行左上避障;
suml小于sumr和sumc,sumd小于summ和sumt,則執(zhí)行左下避障;
sumr小于suml和sumc,sumt小于summ和sumr,則執(zhí)行右上避障;
sumr小于suml和sumc,sumd小于summ和sumt,則執(zhí)行右下避障。