1.課題概述
小車側方位停車過程的動態模擬matlab模擬。模擬得到小車的停車動畫,小車移動的xy軸座標以及角度變換。
2.系統模擬結果
3.核心程式與模型
版本:MATLAB2022a
%階段3 %車輪 pause(1); for i=1:13 ya1=ya1+0.5; yb1=yb1+0.5; ya2=ya2+0.5; yb2=yb2+0.5; cla; patch([Car2pos_x1 Car2pos_x2 Car2pos_x3 Car2pos_x4],[Car2pos_y1 Car2pos_y2 Car2pos_y3 Car2pos_y4],[0.7 0.7 0]); patch([Car1pos_x1 Car1pos_x2 Car1pos_x3 Car1pos_x4],[Car1pos_y1 Car1pos_y2 Car1pos_y3 Car1pos_y4],[0.7 0.7 0]); patch([xa1 xb1 xb2 xa2],[ya1 yb1 yb2 ya2],[0 1 0]); ya11=ya1+(D-WLen/2); yb11=ya11+WLen; ya21=ya2+(D-WLen/2); yb21=ya21+WLen; xa11=xa2+(Wkd/2); xb11=xa2+(Wkd/2); xa21=xa2-(Wkd/2); xb21=xa2-(Wkd/2); patch([xa11 xb11 xb21 xa21],[ya11 yb11 yb21 ya21],[0 0 0]); xa22=xa1-(Wkd/2); xb22=xa1-(Wkd/2); xa12=xa1+(Wkd/2); xb12=xa1+(Wkd/2); patch([xa12 xb12 xb22 xa22],[ya11 yb11 yb21 ya21],[0 0 0]); ya13=ya11+Hcar; yb13=yb11+Hcar; patch([xa11 xb11 xb21 xa21],[ya13 yb13 yb13 ya13],[0 0 0]); patch([xa12 xb12 xb22 xa22],[ya13 yb13 yb13 ya13],[0 0 0]); pause(.02); end hold on plot(-59*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(-40*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(-21*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(-2*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(17*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(36*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(55*ones(1,121),[-20:100],'r','linewidth',2); hold on plot(74*ones(1,121),[-20:100],'r','linewidth',2); hold on figure; subplot(121); plot(Xset,'b-o') hold on plot(Yset,'r-s') legend('x座標變化','y座標變化'); subplot(122); plot(thetas,'b-o') legend('角度變化'); 38
4.系統原理簡介
假設小車是一個剛體,其側方位停車過程中涉及到以下幾個關鍵狀態變數:
位置座標:小車前端中心點在水平面上的座標(x, y)。
角度:小車與垂直方向之間的夾角θ。
速度:小車向前和向側面的線速度(vx, vy)。
角速度:小車轉向的角度速度ω。
側方位停車的過程可以拆分為直線行駛、轉向、倒車和微調等階段,對於每一個階段,可以分別建立相應的運動學方程:
結合上述運動學模型和控制策略,構建小車側方位停車的動態模擬流程,包括:
設定初始條件(小車位置、速度、目標車位位置等)。
設計和實現控制器,根據當前狀態計算下一步的控制輸入(驅動力矩、轉向角等)。
更新小車的運動狀態(位置、速度、角度)。
檢查是否達到停車條件(如與車位邊界點的距離是否小於閾值),未達到則重複步驟2和3,直至成功停車。
這樣的模擬有助於驗證控制策略的有效性,最佳化停車演算法,並在實際應用前對停車過程進行預判和除錯。在實際程式設計實現時,可以利用Matlab工具搭建模擬模型,並視覺化整個停車過程。