本發(fā)明具體涉及一種智能小車(chē)的循跡方法。
背景技術(shù):
為了豐富大學(xué)生的課余活動(dòng)和增強(qiáng)大學(xué)生的業(yè)余文化學(xué)習(xí),國(guó)家設(shè)立了循跡小車(chē)比賽。目前,循跡小車(chē)比賽已經(jīng)成為了全國(guó)性的大學(xué)生競(jìng)技項(xiàng)目,每年吸引了無(wú)數(shù)的大學(xué)生參加。
目前,循跡小車(chē)有部分是以攝像頭為基礎(chǔ)的智能小車(chē),其主要是通過(guò)cmos攝像頭硬件二值化,將真實(shí)的跑道轉(zhuǎn)化成計(jì)算機(jī)可識(shí)別的語(yǔ)言,通過(guò)對(duì)圖像信息的處理,判斷當(dāng)前智能車(chē)在跑道中的位置,并進(jìn)一步通過(guò)pid技術(shù)控制智能車(chē)的速度和方向,使得智能車(chē)始終處于跑道中線(xiàn)位置。這種技術(shù)在未來(lái)自動(dòng)駕駛汽車(chē)技術(shù)中也有廣泛的應(yīng)用前景。
現(xiàn)實(shí)中的跑道形式是固定的,但傳統(tǒng)的算法對(duì)跑道識(shí)別和處理之后產(chǎn)生的數(shù)據(jù)只利用一次就丟棄,無(wú)法提取出其中有價(jià)值的數(shù)據(jù)再次利用,或者有的算法記錄下處理后所有的數(shù)據(jù),造成系統(tǒng)運(yùn)行緩慢,并且需要很大內(nèi)存。再者在制作智能車(chē)的過(guò)程中,最繁瑣的步驟是pid控制器參數(shù)的整定。它主要依賴(lài)工程經(jīng)驗(yàn),直接在控制系統(tǒng)上經(jīng)過(guò)大量重復(fù)的試驗(yàn),在這個(gè)過(guò)程中也極易損壞智能車(chē)硬件。通常智能車(chē)速度越快,參數(shù)整定難度越大。因此,現(xiàn)在傳統(tǒng)的智能循跡小車(chē)控制算法已經(jīng)無(wú)法適用于日新月異的競(jìng)技水平。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種能夠快速進(jìn)行循跡和自動(dòng)行駛,車(chē)輛穩(wěn)定度高、運(yùn)行速度快的智能小車(chē)的循跡方法。
本發(fā)明提供的這種智能小車(chē)的循跡方法,包括如下步驟:
s1.小車(chē)?yán)脭z像頭掃描跑道,獲取跑道的基本數(shù)據(jù)信息,計(jì)算得到跑道的邊線(xiàn)信息,擬合得到跑道的中線(xiàn)信息,并根據(jù)得到的中線(xiàn)信息進(jìn)行小車(chē)的控制參數(shù)整定,從而保證小車(chē)行駛在跑道中線(xiàn)上;
s2.在步驟s1得到跑道的邊線(xiàn)信息和中線(xiàn)信息基礎(chǔ)上,小車(chē)?yán)脭z像頭實(shí)時(shí)掃描跑道數(shù)據(jù),并計(jì)算得到跑道的直道、彎道數(shù)據(jù)信息;
s3.利用步驟s1得到的跑道的邊線(xiàn)信息和中線(xiàn)信息,以及步驟s2得到的跑道的直道、彎道數(shù)據(jù)信息,實(shí)時(shí)調(diào)整小車(chē)的控制參數(shù),實(shí)現(xiàn)小車(chē)的快速穩(wěn)定行駛。
步驟s1所述的獲取跑道的基本數(shù)據(jù)信息、計(jì)算得到跑道的邊線(xiàn)信息并擬合得到跑道的中線(xiàn)信息,具體為采用如下步驟進(jìn)行計(jì)算:
a.攝像頭掃描獲取數(shù)據(jù):攝像頭通過(guò)硬件二值化將跑道信息轉(zhuǎn)換為黑白像素點(diǎn)并以二維數(shù)組進(jìn)行存儲(chǔ);
b.搜索跑道邊線(xiàn):對(duì)于存儲(chǔ)的第一組數(shù)據(jù),從左至右搜索左邊線(xiàn),并從右至左搜索右邊線(xiàn);對(duì)于剩余的數(shù)據(jù),則在前一組數(shù)據(jù)中搜索得到的邊線(xiàn)數(shù)據(jù)上,向左、右各n列搜索本組數(shù)據(jù)中的左邊線(xiàn)和右邊線(xiàn),n為正整數(shù);
c.擬合跑道中線(xiàn):根據(jù)步驟b得到的邊線(xiàn)位置計(jì)算得到跑道的中線(xiàn)位置。
步驟s2所述的計(jì)算得到跑道的直道、彎道數(shù)據(jù)信息,具體為采用如下步驟進(jìn)行直道和彎道的數(shù)據(jù)信息計(jì)算:
a.當(dāng)小車(chē)運(yùn)行在中線(xiàn)上時(shí),攝像頭實(shí)時(shí)掃描跑道并獲取跑道數(shù)據(jù),同時(shí)采用步驟s1所述方法擬合跑道的中線(xiàn)信息,并計(jì)算中線(xiàn)擬合偏差;
b.根據(jù)步驟a得到的中線(xiàn)擬合偏差,按照如下規(guī)則進(jìn)行判斷:
若中線(xiàn)擬合偏差值不大于設(shè)定的第一閾值,則認(rèn)定小車(chē)當(dāng)前行駛的跑道為直道;
若中線(xiàn)擬合偏差值大于設(shè)定的第一閾值,則認(rèn)定當(dāng)前小車(chē)行駛時(shí)將進(jìn)入彎道,此時(shí)實(shí)時(shí)記錄中線(xiàn)擬合偏差值大于設(shè)定的第一閾值的持續(xù)時(shí)間、中線(xiàn)擬合偏差值的極大值和極小值,直至中線(xiàn)擬合偏差值恢復(fù)到不大于設(shè)定的第一閾值,此時(shí)彎道的數(shù)據(jù)信息記錄完成;同時(shí)記錄彎道與彎道之間的間隔時(shí)間。
步驟s3所述的實(shí)時(shí)調(diào)整小車(chē)的控制參數(shù),具體為采用如下規(guī)則調(diào)整小車(chē)的控制參數(shù):
1)小車(chē)攝像頭實(shí)時(shí)獲取小車(chē)行駛跑道的數(shù)據(jù)信息,同時(shí)采用步驟s1所述方法擬合跑道的中線(xiàn)信息,并計(jì)算中線(xiàn)擬合偏差;
2)根據(jù)步驟1)得到的中線(xiàn)擬合偏差,按照如下規(guī)則進(jìn)小車(chē)控制參數(shù)的調(diào)整:
若中線(xiàn)擬合偏差值不大于設(shè)定的第二閾值,則認(rèn)定小車(chē)當(dāng)前行駛的跑道為直道,此時(shí)維持小車(chē)的控制參數(shù)不變;所述第二閾值小于第一閾值;
若中線(xiàn)擬合偏差值大于設(shè)定的第二閾值,則認(rèn)定小車(chē)當(dāng)前將進(jìn)入彎道行駛,此時(shí)調(diào)取步驟s2得到的彎道數(shù)據(jù)信息,并按照以下規(guī)則進(jìn)行彎道狀態(tài)下小車(chē)的控制參數(shù)調(diào)整:
ⅰ若彎道數(shù)據(jù)的偏差極值小于第三閾值且正負(fù)交替,且持續(xù)時(shí)間大于第四閾值,則判定當(dāng)前彎道為小型s彎道:此時(shí)減小小車(chē)控制參數(shù)中的pid控制參數(shù),或者通過(guò)控制小車(chē)舵機(jī)的pwm占空比來(lái)限制舵機(jī)的偏轉(zhuǎn)角度,從而使得小車(chē)能夠快速通過(guò)小型s彎道;
ⅱ若彎道數(shù)據(jù)的偏差極值大于第五閾值,偏差極值的符號(hào)唯一,且持續(xù)時(shí)間大于第六閾值,則判定當(dāng)前彎道為c型彎道:此時(shí)增大小車(chē)控制參數(shù)中的pid控制參數(shù),或者先通過(guò)控制小車(chē)舵機(jī)的pwm占空比使舵機(jī)提前偏轉(zhuǎn)角度a,并降低驅(qū)動(dòng)電機(jī)的pwm占空比使小車(chē)減速,從而使得小車(chē)能夠以靠近彎道側(cè)的方式快速通過(guò)c型彎道。
本發(fā)明公開(kāi)的這種智能小車(chē)的循跡方法,通過(guò)對(duì)賽道的基礎(chǔ)信息進(jìn)行獲取、識(shí)別和記憶,從而能夠在進(jìn)行多圈賽道比賽時(shí)能夠在第三圈后快速進(jìn)行賽道識(shí)別并根據(jù)賽道的識(shí)別情況實(shí)時(shí)調(diào)整小車(chē)的控制參數(shù),從而保證小車(chē)能夠快速穩(wěn)定的通過(guò)賽道,從而實(shí)現(xiàn)了小車(chē)的快速進(jìn)行循跡和自動(dòng)行駛,而且車(chē)輛穩(wěn)定度高,運(yùn)行速度快。
附圖說(shuō)明
圖1為本發(fā)明的功能模塊圖。
具體實(shí)施方式
如圖1所示為本發(fā)明的功能模塊圖:本發(fā)明提供的這種智能小車(chē)的循跡方法,包括如下步驟:
s1.在小車(chē)調(diào)試初期階段,保持小車(chē)車(chē)速在慢速情況下(比如1.5m/s左右,)小車(chē)?yán)脭z像頭掃描跑道,獲取跑道的基本數(shù)據(jù)信息,計(jì)算得到跑道的邊線(xiàn)信息,擬合得到跑道的中線(xiàn)信息,并根據(jù)得到的中線(xiàn)信息進(jìn)行小車(chē)的控制參數(shù)整定,從而保證小車(chē)行駛在跑道中線(xiàn)上,具體為采用如下步驟進(jìn)行計(jì)算:
a.攝像頭掃描獲取數(shù)據(jù):攝像頭通過(guò)硬件二值化將跑道信息轉(zhuǎn)換為黑白像素點(diǎn)并以二維數(shù)組進(jìn)行存儲(chǔ);
b.搜索跑道邊線(xiàn):對(duì)于存儲(chǔ)的第一組數(shù)據(jù),從左至右搜索左邊線(xiàn),并從右至左搜索右邊線(xiàn);對(duì)于剩余的數(shù)據(jù),則在前一組數(shù)據(jù)中搜索得到的邊線(xiàn)數(shù)據(jù)上,向左、右各n列搜索本組數(shù)據(jù)中的左邊線(xiàn)和右邊線(xiàn),n為正整數(shù);
c.擬合跑道中線(xiàn):根據(jù)步驟b得到的邊線(xiàn)位置計(jì)算得到跑道的中線(xiàn)位置;
在具體實(shí)施時(shí),cmos攝像頭通過(guò)硬件二值化將跑道信息轉(zhuǎn)化240行*320列個(gè)黑白像素點(diǎn),存入數(shù)組t[240][320],其中可通行跑道部分為0,不可通行或者障礙部分為1,從而獲取跑道數(shù)據(jù);然后從左到右搜所左邊線(xiàn)及從右到左搜索右邊線(xiàn),之后各行在前一行左右邊線(xiàn)的基礎(chǔ)上,向左右各30列搜索本行左右邊線(xiàn),從而搜索得到跑道邊線(xiàn);最后將所得各行左右邊線(xiàn)位置相加除以2得到中線(xiàn)位置,中線(xiàn)位置減去160即得到偏差;最后利用工程經(jīng)驗(yàn)法進(jìn)行pid參數(shù)整定,使智能車(chē)運(yùn)行軌跡任意時(shí)刻都處在跑道中線(xiàn)附近,即完美路徑循跡;
由于小車(chē)在慢速循跡時(shí),其小車(chē)的pid控制參數(shù)能夠保證小車(chē)任何賽道上均能夠較為完美的實(shí)現(xiàn)完美路徑的循跡,因此該步驟s1并不需要在實(shí)際比賽的跑道上進(jìn)行,而只需要在任意的跑道上進(jìn)行即可;因此步驟s1的主要目的是獲取小車(chē)在慢速循跡狀態(tài)下實(shí)現(xiàn)完美路徑循跡的pid控制參數(shù);
s2.在步驟s1獲取了小車(chē)在循跡狀態(tài)下實(shí)現(xiàn)完美路徑循跡的pid控制參數(shù)的基礎(chǔ)上,控制小車(chē)以與步驟s1相同的車(chē)速在實(shí)際比賽跑道上循跡一整圈,同時(shí)小車(chē)?yán)脭z像頭實(shí)時(shí)掃描跑道數(shù)據(jù),并計(jì)算得到實(shí)際比賽跑道的直道、彎道數(shù)據(jù)信息,并進(jìn)行存儲(chǔ);具體為采用如下步驟進(jìn)行直道和彎道的數(shù)據(jù)信息計(jì)算:
a.當(dāng)小車(chē)運(yùn)行在中線(xiàn)上時(shí),攝像頭實(shí)時(shí)掃描跑道并獲取跑道數(shù)據(jù),同時(shí)采用步驟s1所述方法擬合跑道的中線(xiàn)信息,并計(jì)算中線(xiàn)擬合偏差;
b.根據(jù)步驟a得到的中線(xiàn)擬合偏差,按照如下規(guī)則進(jìn)行判斷:
若中線(xiàn)擬合偏差值不大于設(shè)定的第一閾值,則認(rèn)定小車(chē)當(dāng)前行駛的跑道為直道;
若中線(xiàn)擬合偏差值大于設(shè)定的第一閾值,則認(rèn)定當(dāng)前小車(chē)行駛時(shí)將進(jìn)入彎道,此時(shí)實(shí)時(shí)記錄中線(xiàn)擬合偏差值大于設(shè)定的第一閾值的持續(xù)時(shí)間、中線(xiàn)擬合偏差值的極大值和極小值,直至中線(xiàn)擬合偏差值恢復(fù)到不大于設(shè)定的第一閾值,此時(shí)彎道的數(shù)據(jù)信息記錄完成;同時(shí)記錄彎道與彎道之間的間隔時(shí)間;
在具體實(shí)施時(shí),由于小車(chē)在步驟s2時(shí)已經(jīng)基本能夠保證行駛在最佳路徑上,因此此時(shí)攝像頭掃描獲取數(shù)據(jù)一次,每獲取一次數(shù)據(jù),間隔時(shí)間參數(shù)值加1,搜索跑道邊線(xiàn),擬合中線(xiàn)計(jì)算偏差(以上方法同步驟s1)。設(shè)置開(kāi)始記錄偏差的第一閾值,根據(jù)工程經(jīng)驗(yàn)可知,智能車(chē)在直道上行駛,偏差在正負(fù)10之間震蕩,在彎道上,偏差一般會(huì)大于70,因此第一閾值設(shè)置在40-60之間較為合理。如偏差小于或等于第一閾值證明當(dāng)前跑道為直道,不記錄任何數(shù)據(jù)。若偏差大于第一閾值,說(shuō)明智能車(chē)即將進(jìn)入彎道。此時(shí),持續(xù)時(shí)間參數(shù)開(kāi)始在之后的每一次循環(huán)都加1,并且在這個(gè)過(guò)程中記錄下偏差的幾個(gè)極大值和極小值,左轉(zhuǎn)為正,右轉(zhuǎn)為負(fù)。之后,當(dāng)偏差再次小于第一閾值時(shí),記錄間隔時(shí)間參數(shù)以及持續(xù)時(shí)間參數(shù)的值,完成后將兩個(gè)參數(shù)清零。之后將間隔時(shí)間、持續(xù)時(shí)間、偏差極值三組數(shù)據(jù)打包存入記憶隊(duì)列備用;
s3.利用步驟s1得到的跑道的邊線(xiàn)信息和中線(xiàn)信息,以及步驟s2得到的跑道的直道、彎道數(shù)據(jù)信息,以小車(chē)安全行駛為前提,以提高小車(chē)循跡速度為目標(biāo),實(shí)時(shí)調(diào)整小車(chē)的控制參數(shù),實(shí)現(xiàn)小車(chē)的快速穩(wěn)定行駛;具體為采用如下規(guī)則調(diào)整小車(chē)的控制參數(shù):
1)小車(chē)攝像頭實(shí)時(shí)獲取小車(chē)行駛跑道的數(shù)據(jù)信息,同時(shí)采用步驟s1所述方法擬合跑道的中線(xiàn)信息,并計(jì)算中線(xiàn)擬合偏差;
2)根據(jù)步驟1)得到的中線(xiàn)擬合偏差,按照如下規(guī)則進(jìn)小車(chē)控制參數(shù)的調(diào)整:
若中線(xiàn)擬合偏差值不大于設(shè)定的第二閾值,則認(rèn)定小車(chē)當(dāng)前行駛的跑道為直道,此時(shí)維持小車(chē)的控制參數(shù)不變;所述第二閾值小于第一閾值;
若中線(xiàn)擬合偏差值大于設(shè)定的第二閾值,則認(rèn)定小車(chē)當(dāng)前將進(jìn)入彎道行駛,此時(shí)調(diào)取步驟s2得到的彎道數(shù)據(jù)信息,并按照以下規(guī)則進(jìn)行彎道狀態(tài)下小車(chē)的控制參數(shù)調(diào)整:
ⅰ若彎道數(shù)據(jù)的偏差極值小于第三閾值且正負(fù)交替,且持續(xù)時(shí)間大于第四閾值,則判定當(dāng)前彎道為小型s彎道:此時(shí)減小小車(chē)控制參數(shù)中的pid控制參數(shù),或者通過(guò)控制小車(chē)舵機(jī)的pwm占空比來(lái)限制舵機(jī)的偏轉(zhuǎn)角度,從而使得小車(chē)能夠快速通過(guò)小型s彎道;
ⅱ若彎道數(shù)據(jù)的偏差極值大于第五閾值,偏差極值的符號(hào)唯一,且持續(xù)時(shí)間大于第六閾值,則判定當(dāng)前彎道為c型彎道:此時(shí)增大小車(chē)控制參數(shù)中的pid控制參數(shù),或者先通過(guò)控制小車(chē)舵機(jī)的pwm占空比使舵機(jī)提前偏轉(zhuǎn)角度a,并降低驅(qū)動(dòng)電機(jī)的pwm占空比使小車(chē)減速,從而使得小車(chē)能夠以靠近彎道側(cè)的方式快速通過(guò)c型彎道。
在具體實(shí)施時(shí),攝像頭掃描獲取數(shù)據(jù)一次,搜索跑道邊線(xiàn),擬合中線(xiàn)計(jì)算偏差(以上方法同步驟s1)。設(shè)定開(kāi)啟記憶循跡的第二閾值,為了使智能車(chē)可以提前抄近路轉(zhuǎn)彎,增強(qiáng)過(guò)彎能力,此第二閾值應(yīng)比步驟s2中記錄偏差的第一閾值小,因此第二閾值設(shè)置在30-50之間較為合理。分析步驟s2記錄下的跑道信息,偏差極值可反映彎道的曲率以及左右轉(zhuǎn)情況,持續(xù)時(shí)間參數(shù)值可反映彎道長(zhǎng)度,間隔時(shí)間參數(shù)值可反映相鄰彎道間隔距離,這三種信息基本可以描述出跑道基本信息。在智能車(chē)快速循跡中,若偏差小于閾值,則當(dāng)前路徑為直道。若偏差大于閾值,則說(shuō)明即將入彎;具體彎道類(lèi)型判斷及控制策略如下所示:
小s彎道:分析偏差極值、持續(xù)時(shí)間值和間隔時(shí)間值三組數(shù)據(jù),若偏差極值較?。ㄐ∮诘谌撝担?、但正負(fù)相互交替,持續(xù)時(shí)間較長(zhǎng)(大于第四閾值),則即將出現(xiàn)的彎道應(yīng)該為小s型。這時(shí)可以減小一定的pid參數(shù),減小的具體值可利用工程經(jīng)驗(yàn)法根據(jù)不同智能車(chē)在具體實(shí)踐中確定,使其對(duì)偏差的調(diào)節(jié)能力降低;或者通過(guò)控制舵機(jī)pwm占空比直接限制舵機(jī)偏轉(zhuǎn)的角度小于20度(角度可根據(jù)實(shí)際情況更改),可以做到直線(xiàn)過(guò)小s彎道的效果,大大縮短智能車(chē)通過(guò)小s彎道的時(shí)間;
c型彎:分析偏差極值、持續(xù)時(shí)間值和間隔時(shí)間值三組數(shù)據(jù),若偏差極值較大(大于第五閾值),且只有唯一值,持續(xù)時(shí)間較長(zhǎng)(大于第六閾值),則為一個(gè)c型轉(zhuǎn)彎,這時(shí)可以增大一定的pid參數(shù),增大的具體值可利用工程經(jīng)驗(yàn)法根據(jù)不同智能車(chē)在具體實(shí)踐中確定,使其對(duì)偏差的調(diào)節(jié)能力增強(qiáng);或者通過(guò)控制舵機(jī)pwm占空比提前使舵機(jī)偏轉(zhuǎn)一個(gè)固定的角度,此角度根據(jù)偏差極值確定,極值越大,此角度越大,偏轉(zhuǎn)方向根據(jù)極值正負(fù)確定,正為左轉(zhuǎn),負(fù)為右轉(zhuǎn)。與此同時(shí),降低主控芯片電機(jī)pwm輸出占空比,使智能車(chē)在安全速度下轉(zhuǎn)彎。這樣不僅可以抄近路轉(zhuǎn)彎,節(jié)約時(shí)間,并且還可以大大增強(qiáng)智能車(chē)的轉(zhuǎn)彎能力,防止其偏出跑道。