全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5032
推到 Plurk!
推到 Facebook!

利用matlab之fuzzt tool boxs做倒車入庫問題

尚未結案
suhlih
一般會員


發表:1
回覆:1
積分:0
註冊:2008-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-29 23:43:10 IP:118.169.xxx.xxx 訂閱
clc;
clear all;
%initial position
l=0.45;
v(1)=-5;
x(1)=-15;
y(1)=5;
phi(1)=0;
theta(1)=pi/2;
% xe(1)=0;
% thetae(1)=0;
t=0.1;
angle1=readfis('angle'); %angle1=phi
vel=readfis('angle2');
correct=readfis('correct');
for i=1:300
xe(i)=x(i)-0; %車子距離x軸之誤差量
thetae(i)=pi/2-theta(i); %車子theta角與中心線的角度差

if y(i)<5 && abs(xe(i))<3 && abs(thetae(i))>pi/12 % 若滿足條件則將車子作前進修正動作
while abs(xe(i))>0.5 && abs(thetae(i))>pi/36 % 直到滿足許可之誤差量為止
phi(i 1)=evalfis([xe(i) thetae(i)],correct);
v(i)=5;

x(i 1)=v(i)*cos(theta(i))*cos(phi(i))*t x(i);
y(i 1)=v(i)*sin(theta(i))*cos(phi(i))*t y(i);
theta(i 1)=theta(i) v(i)*(sin(phi(i))/l)*t;

end
else
phi(i 1)=evalfis([theta(i) x(i)],angle1); % 倒車入庫控制
v(i 1)=evalfis([x(i) y(i)],vel);

x(i 1)=v(i)*cos(theta(i))*cos(phi(i))*t x(i);
y(i 1)=v(i)*sin(theta(i))*cos(phi(i))*t y(i);
theta(i 1)=theta(i) v(i)*(sin(phi(i))/l)*t;
end
end

以上程式是為了要做倒車入庫使用,而若無法順利倒車入庫時,則執行向前修正直到約趨於中心線為止,

再執行倒車完成任務。

PS. 請開 Untitled5.m 檔案

感謝大大!!
suhlih
一般會員


發表:1
回覆:1
積分:0
註冊:2008-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-30 11:04:09 IP:163.13.xxx.xxx 訂閱
發生的問題是,他到while回圈裡面就無法跳出了
系統時間:2024-04-19 20:00:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!