高柳
【摘要】 全向輪底盤(pán)可以實(shí)現(xiàn)平面內(nèi)三個(gè)自由度的運(yùn)動(dòng),,靈活性強(qiáng),易于控制。而貝塞爾曲線在曲線規(guī)劃路徑時(shí)有,不僅計(jì)算簡(jiǎn)單,形態(tài)多樣,且其控制點(diǎn)控制端點(diǎn)切向的能力使兩端曲線之間的銜接非常容易實(shí)現(xiàn)。本算法利用貝塞爾曲線參數(shù)的性質(zhì),近似算法實(shí)現(xiàn)底盤(pán)運(yùn)動(dòng)過(guò)程中的軌跡控制,大大減少了控制芯片的運(yùn)算量,提高芯片控制能力,在實(shí)際試驗(yàn)中取得了很好的效果。
【關(guān)鍵詞】 全向輪 貝塞爾曲線 軌跡生成算法
1 貝塞爾曲線簡(jiǎn)介
貝塞爾曲線最初是由發(fā)過(guò)雷諾汽車(chē)工程師Pierre B6zier設(shè)計(jì)開(kāi)發(fā)的。它的控制點(diǎn)的作用像磁鐵一樣,在某個(gè)方向上拉拽曲線并影響曲線彎曲的方式[1]。當(dāng)兩段曲線銜接時(shí),通過(guò)控制點(diǎn)來(lái)控制連接點(diǎn)切線方向相同便可實(shí)現(xiàn)圓滑的連接。
對(duì)于點(diǎn)四個(gè)控制點(diǎn)控制的貝塞爾曲線,其參數(shù)方程為:
當(dāng)參數(shù)t從0變化到1時(shí),對(duì)應(yīng)曲線上的點(diǎn)也從變化到。圖1是用matlab對(duì)t進(jìn)行的分析計(jì)算,其中藍(lán)色折線是四個(gè)控制點(diǎn)的連線,紅色折線是將t在之間均勻取值時(shí),各個(gè)t值對(duì)應(yīng)點(diǎn)的連線。從圖中可以看出,當(dāng)t等間距取值時(shí),對(duì)應(yīng)曲線的線段長(zhǎng)度也近似相等。事實(shí)上,t的值超過(guò)的范圍時(shí)對(duì)應(yīng)的點(diǎn)仍在該三次曲線上,相當(dāng)于是這條曲線的延伸。
2 軌跡生成算法
2.1控制條件
在控制全向輪底盤(pán)機(jī)器人進(jìn)行行走時(shí),可以將速度方向分解為切向速度和法向速度。通過(guò)控制切向速度來(lái)控制機(jī)器人行走的速度,控制法向速度以調(diào)節(jié)法向的偏差,這樣就可以實(shí)現(xiàn)曲線行走。切向的速度可以直接賦值,而法向偏差需要通過(guò)自身坐標(biāo)計(jì)算得出。由于解三階的貝塞爾曲線需要解三次方程,計(jì)算復(fù)雜,對(duì)于芯片和程序來(lái)說(shuō)都是很大的壓力。通過(guò)利用底盤(pán)行走的連續(xù)性和參數(shù)t連續(xù)的特點(diǎn),可以近似求出當(dāng)前位置對(duì)應(yīng)的t,得到法向偏差。
2.2當(dāng)前位置計(jì)算
記四個(gè)控制點(diǎn)坐標(biāo)為,,,。是行走路徑的起點(diǎn),開(kāi)始機(jī)器人位于附近。 在行走過(guò)程中,需要不停地校正偏差,對(duì)于程序來(lái)說(shuō),可通過(guò)周期性的計(jì)算來(lái)實(shí)現(xiàn)。如圖2所示,對(duì)于第一個(gè)周期,默認(rèn)當(dāng)前點(diǎn)對(duì)應(yīng)的t為0,即對(duì)應(yīng)點(diǎn),然后依次通過(guò)當(dāng)前點(diǎn)計(jì)算出下一點(diǎn)。在計(jì)算下一點(diǎn)時(shí),取(t+dt)點(diǎn)作為參考點(diǎn),和當(dāng)前點(diǎn)的連線作為近似切線,其中dt是一個(gè)非常小的常量。由于dt非常小,這段曲線可看作直線來(lái)計(jì)算。假設(shè)機(jī)器人當(dāng)前的位置為N(由定位系統(tǒng)測(cè)得),做垂直切線于點(diǎn),點(diǎn)到點(diǎn)的長(zhǎng)度對(duì)應(yīng)了dt,則點(diǎn)到點(diǎn)的長(zhǎng)度對(duì)應(yīng)了,其中k為的長(zhǎng)度除以到的長(zhǎng)度。這樣便可求出t1的值,即求出t1點(diǎn):
由于參數(shù)t具有連續(xù)性,不論機(jī)器人超前或者落后參考點(diǎn),都可以得到正確的結(jié)果。而且因?yàn)閠并不局限于0~1之間,在曲線端點(diǎn)超出部分也可以正確計(jì)算。為了提高精度,可將求得的點(diǎn)從新作為,再次計(jì)算得到新的。這樣一個(gè)周期計(jì)算兩次,可極大提高容差。
2.3偏差調(diào)節(jié)
求出當(dāng)前點(diǎn)對(duì)應(yīng)的t和切線方向后,很容易計(jì)算出法向偏差。通過(guò)pid調(diào)節(jié)便可使機(jī)器人沿著曲線行走。PID控制器是一種線性控制器,它根據(jù)給定值與被控參量(反饋量)構(gòu)成控制偏差。將偏差的比例、積分、微分通過(guò)線性組合構(gòu)成控制量,對(duì)被控對(duì)象進(jìn)行控制[2]。偏差可通過(guò)向量運(yùn)算使其帶有符號(hào),在pid調(diào)節(jié)中滿(mǎn)足正負(fù)偏差的要求。
3 實(shí)際實(shí)驗(yàn)
在實(shí)際實(shí)驗(yàn)中,采用了dsp2812作為主控芯片,主頻150MHz。通過(guò)雙碼盤(pán)加陀螺儀定位,在程序控制上每5ms計(jì)算一個(gè)周期。行走時(shí)機(jī)器人在切向的最高速度達(dá)到3m/s。通過(guò)實(shí)驗(yàn)記錄的法向偏差如表1所示,實(shí)際路徑和規(guī)劃路徑基本符合,法向偏差的大小在7cm以?xún)?nèi),且有波動(dòng)現(xiàn)象。
參考文獻(xiàn)
[1] 孫式河,王海隼,岳丈靜. 基于局部性原理的可變步長(zhǎng)Bezier曲線生成算法[J]. 計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2011(7)
[2] 王豪. 水輪機(jī)調(diào)節(jié)PID控制算法簡(jiǎn)介[J]. 河南科技,2013(15)