




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第python實現車輛跟隨滑模控制的實例上一篇文章介紹了Python使用OPENCV的目標跟蹤算法實現自動視頻標注效果,感興趣的朋友點擊查看,使用滑模變結構控制策略來解決汽車跟蹤問題,今天通過本文介紹下python實現車輛跟隨滑模控制的實例,內容如下所示:
下面分別采用指數趨近律、等速趨近律、準滑模控制的方法完成車輛跟隨問題的仿真
importmatplotlib.pyplotasplt
指數趨近律、等速趨近律、準滑模控制的車輛跟隨問題仿真,運行結果以圖片形式保存在同目錄下。
#q1,q2分別是切換函數ei1,ei2前面的系數
q1,q2=2,1
#lan是指數趨近律前面的系數
lan=0.5
#設定期望車間距均為12
l1,l2,l3,l4=12,12,12,12
#設定汽車質量均為1000
m1,m2,m3,m4=1000,1000,1000,1000
#設定動力學模型分子的速度平方項前的系數ci均為0.5(按照模型符號是負的)
c1,c2,c3,c4=0.5,0.5,0.5,0.5
#設定動力學模型分子的常數項系數Fi均為200(按照模型符號是負的)
f1,f2,f3,f4=200,200,200,200
#設定五輛車汽車的位移、速度、加速度
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.]
#設定趨近律
defreaching_law(m:int,s:float,q2:int,mode='exponential'):
mode:指數趨近律exponential|等速趨近律uniform|準滑模控制quasi_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)
#設定第一輛車的加速度(分段函數),要注意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]
#四輛車的車間距誤差導數ei2的列表
e12=[v1[0]-v0[0]]
e22=[v2[0]-v1[0]]
e32=[v3[0]-v2[0]]
e42=[v4[0]-v3[0]]
#四輛車切換函數的列表
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指的是時間標度(列表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的車間距誤差及導數更新
e11.append(x1[i-1]-x0[i-1]+l1)
e12.append(v1[i-1]-v0[i-1])
#車1的切換函數更新
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
#反饋控制(指數趨近律)
u1n=reaching_law(m1,s1[i],q2)#默認采用指數趨近律,下同
#u1n=reaching_law(m1,s1[i],q2,mode='uniform')#采用等速趨近律
#u1n=reaching_law(m1,s1[i],q2,mode='quasi_sliding')#采用準滑模控制
#更新控制律
u1.append(u1equ+u1n)
#利用控制律更新車1的加速度、速度、位移,加速度是利用動力學模型得到的
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)#默認采用指數趨近律
#u2n=reaching_law(m2,s2[i],q2,mode='uniform')#采用等速趨近律
#u2n=reaching_law(m2,s2[i],q2,mode='quasi_sliding')#采用準滑模控制
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 思考與分析的語文試題及答案展示
- 基層護理工作經驗試題及答案累計
- 2025年自考行政管理社會責任競爭試題答案
- 2025年執業藥師考試學習資源試題及答案
- 培訓資源的執業藥師試題及答案
- 2025執業醫師考試策略與試題及答案
- 中醫內科學-咳嗽課件
- 藥師考試護理問題解決技巧試題及答案
- 中藥復方的機理與應用研究試題及答案
- 動車機械師綜合練習測試題附答案
- 實驗 驗證牛頓第二定律
- 鉆孔水文地質工程地質綜合編錄一覽表模板
- 備用柴油發電機定期啟動試驗記錄表
- 國企食堂運作方案
- 二年級上冊心理健康教育說課稿-面對批評 全國通用
- 勞務派遣合同示范文本(4篇)
- 2023年廣西賀州中考語文真題及答案
- 押運員崗位職責
- 2008年安徽省中考英語試卷及答案
- 眼動的檢查與訓練
- 超市項目投標書(宜佳)標書模板
評論
0/150
提交評論