python實現(xiàn)車輛跟隨滑??刂频膶嵗齙第1頁
python實現(xiàn)車輛跟隨滑??刂频膶嵗齙第2頁
python實現(xiàn)車輛跟隨滑??刂频膶嵗齙第3頁
python實現(xiàn)車輛跟隨滑??刂频膶嵗齙第4頁
python實現(xiàn)車輛跟隨滑??刂频膶嵗齙第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第python實現(xiàn)車輛跟隨滑??刂频膶嵗弦黄恼陆榻B了Python使用OPENCV的目標(biāo)跟蹤算法實現(xiàn)自動視頻標(biāo)注效果,感興趣的朋友點擊查看,使用滑模變結(jié)構(gòu)控制策略來解決汽車跟蹤問題,今天通過本文介紹下python實現(xiàn)車輛跟隨滑??刂频膶嵗?,內(nèi)容如下所示:

下面分別采用指數(shù)趨近律、等速趨近律、準(zhǔn)滑??刂频姆椒ㄍ瓿绍囕v跟隨問題的仿真

importmatplotlib.pyplotasplt

指數(shù)趨近律、等速趨近律、準(zhǔn)滑??刂频能囕v跟隨問題仿真,運(yùn)行結(jié)果以圖片形式保存在同目錄下。

#q1,q2分別是切換函數(shù)ei1,ei2前面的系數(shù)

q1,q2=2,1

#lan是指數(shù)趨近律前面的系數(shù)

lan=0.5

#設(shè)定期望車間距均為12

l1,l2,l3,l4=12,12,12,12

#設(shè)定汽車質(zhì)量均為1000

m1,m2,m3,m4=1000,1000,1000,1000

#設(shè)定動力學(xué)模型分子的速度平方項前的系數(shù)ci均為0.5(按照模型符號是負(fù)的)

c1,c2,c3,c4=0.5,0.5,0.5,0.5

#設(shè)定動力學(xué)模型分子的常數(shù)項系數(shù)Fi均為200(按照模型符號是負(fù)的)

f1,f2,f3,f4=200,200,200,200

#設(shè)定五輛車汽車的位移、速度、加速度

x0,x1,x2,x3,x4=[100.],[90.],[79.5],[68.5],[57.]

v0,v1,v2,v3,v4=[20.],[19.],[18.],[17.],[16.]

a1,a2,a3,a4=[0.],[0.],[0.],[0.]

#設(shè)定趨近律

defreaching_law(m:int,s:float,q2:int,mode='exponential'):

mode:指數(shù)趨近律exponential|等速趨近律uniform|準(zhǔn)滑??刂苢uasi_sliding

ifmode=='exponential':

return-m*lan*s/q2

ifmode=='uniform':

epslion=0.3

ifs0:

return-m*epslion/q2

ifs==0:

return0

ifs0:

returnm*epslion/q2

ifmode=='quasi_sliding':

delta,epslion=0.8,2.

ifs-delta:

returnm*epslion/q2

ifsdelta:

return-m*epslion/q2

else:

return-m*epslion*s/(delta*q2)

#設(shè)定第一輛車的加速度(分段函數(shù)),要注意t的長度和a0的長度相等

defget_a0(t:list):

a0=[]

foriint:

ifi4:

a0.append(0)

continue

ifi=4andi7:

a0.append(-0.25*(i-4))

continue

ifi=7andi10:

a0.append(-0.75)

continue

ifi=10andi16:

a0.append(0.25*(i-10)-0.75)

continue

ifi=16andi19:

a0.append(0.75)

continue

ifi=19andi22:

a0.append(0.25*(19-i)+0.75)

continue

ifi=22andi=30:#注意i=30,所以是取兩端,故為301份

a0.append(0)

returna0

if__name__=="__main__":

t=[float(i/10)foriinrange(301)]#將30秒劃分成301份,[0,0.1,0.2,...,29.9,30]

a0=get_a0(t)

#四輛車的車間距誤差ei1列表

e11=[x1[0]-x0[0]+l1]

e21=[x2[0]-x1[0]+l2]

e31=[x3[0]-x2[0]+l3]

e41=[x4[0]-x3[0]+l4]

#四輛車的車間距誤差導(dǎo)數(shù)ei2的列表

e12=[v1[0]-v0[0]]

e22=[v2[0]-v1[0]]

e32=[v3[0]-v2[0]]

e42=[v4[0]-v3[0]]

#四輛車切換函數(shù)的列表

s1=[q1*e11[0]+q2*e12[0]]

s2=[q1*e21[0]+q2*e22[0]]

s3=[q1*e31[0]+q2*e32[0]]

s4=[q1*e41[0]+q2*e42[0]]

#四輛車控制律的列表

u1,u2,u3,u4=[0],[0],[0],[0]

foriinrange(1,301):

#最前車0的速度、加速度更新,可以看出更新時用了直線等效,0.1指的是時間標(biāo)度(列表t劃分的,也是之后繪圖打印的x軸)

v0.append(v0[i-1]+0.1*(a0[i]+a0[i-1])*0.5)

x0.append(x0[i-1]+0.1*(v0[i]+v0[i-1])*0.5)

#車1的車間距誤差及導(dǎo)數(shù)更新

e11.append(x1[i-1]-x0[i-1]+l1)

e12.append(v1[i-1]-v0[i-1])

#車1的切換函數(shù)更新

s1.append(q1*e11[i]+q2*e12[i])

#等效控制

u1equ=c1*(e12[i]+v0[i])*(e12[i]+v0[i])-m1*q1*e12[i]/q2+m1*a0[i]+f1

#反饋控制(指數(shù)趨近律)

u1n=reaching_law(m1,s1[i],q2)#默認(rèn)采用指數(shù)趨近律,下同

#u1n=reaching_law(m1,s1[i],q2,mode='uniform')#采用等速趨近律

#u1n=reaching_law(m1,s1[i],q2,mode='quasi_sliding')#采用準(zhǔn)滑??刂?/p>

#更新控制律

u1.append(u1equ+u1n)

#利用控制律更新車1的加速度、速度、位移,加速度是利用動力學(xué)模型得到的

a1.append((-c1*v1[i-1]*v1[i-1]+u1[i]-f1)/m1)

v1.append(v1[i-1]+0.1*(a1[i]+a1[i-1])*0.5)

x1.append(x1[i-1]+0.1*(v1[i]+v1[i-1])*0.5)

#車2、3、4過程同車1

e21.append(x2[i-1]-x1[i-1]+l2)

e22.append(v2[i-1]-v1[i-1])

s2.append(q1*e21[i]+q2*e22[i])

u2equ=c2*(e22[i]+v1[i])*(e22[i]+v1[i])-m2*q1*e22[i]/q2+m2*a1[i]+f2

u2n=reaching_law(m2,s2[i],q2)#默認(rèn)采用指數(shù)趨近律

#u2n=reaching_law(m2,s2[i],q2,mode='uniform')#采用等速趨近律

#u2n=reaching_law(m2,s2[i],q2,mode='quasi_sliding')#采用準(zhǔn)滑??刂?/p>

u2.append(u2equ+u2n)

a2.append((-c2*v2[i-1]*v2[i-1]+u2[i]-f2)/m2)

v2.append(v2[i-1]+0.1*(a2[i]+a2[i-1])*0.5)

x2.append(x2[i-1]+0.1*(v2[i]+v2[i-1])*0.5)

e31.append(x3[i-1]-x2[i-1]+l3)

e32.append(v3[i-1]-v2[i-1])

s3.append(q1*e31[i]+q2*e32[i])

u3equ=c3*(e32[i]+v2[i])*(e32[i]+v2[i])-m3*q1*e32[i]/q2+m3*a2[i]+f3

u3n=reaching_law(m3,s3[i],q2)

#u3n=reaching_law(m3,s3[i],q2,mode='uniform')

#u3n=reaching_law(m3,s3[i],q2,mode='quasi_sliding')

u3.append(u3equ+u3n)

a3.append((-c3*v3[i-1]*v3[i-1]+u3[i]-f3)/m3)

v3.append(v3[i-1]+0.1*(a3[i]+a3[i-1])*0.5)

x3.append(x3[i-1]+0.1*(v3[i]+v3[i-1])*0.5)

e41.append(x4[i-1]-x3[i-1]+l4)

e42.append(v4[i-1]-v3[i-1])

s4.append(q1*e41[i]+q2*e42[i])

u4equ=c4*(e42[i]+v3[i])*(e42[i]+v3[i])-m4*q1*e42[i]/q2+m4*a3[i]+f4

u4n=reaching_law(m4,s4[i],q2)

#u4n=reaching_law(m4,s4[i],q2,mode='uniform')

#u

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論