file 13:
仿真移动机器人避障的实验
萝卜 @ 2006-02-07 13:32
% 仿真移动机器人避障的实验
close all;clc;
axes('position',[0.1,0.15,0.56,0.7]);
% Author's email: zjliu2001@163.com
set(gcf,'DoubleBuffer','on');
N=50;
A=ones(N,N,3);
xn=round((N+1)/2);
yn=xn;
A(xn,yn,:)=0;
A(10:13,10:13,2:3)=0;
A(40:43,10:13,2:3)=0;
A(10:13,40:43,2:3)=0;
A(40:43,40:43,2:3)=0;
H=imshow(A);
k=0;
p=[1,-1,i,-i];
ss=['while k==1;',...
't=round(3*rand)+1;x=real(p(t));',...
'y=imag(p(t));A(xn,yn,:)=1;',...
'xn=xn+x;yn=yn+y;',...
'if xn<1 | xn>N;xn=mod(xn,N)+1;end;',...
'if yn<1 | yn>N;yn=mod(xn,N)+1;end;',...
'if A(xn,yn,2)==0;',...
'xn=xn-x;yn=yn-y;A(xn,yn,:)=0;',...
'else A(xn,yn,:)=0;end;',...
'set(H,''CData'',A);',...
'pause(0.2);end;'];
po1=uicontrol(gcf,'style','push',...
'unit','normalized','position',[0.74,0.6,0.2,0.08],...
'string','start','fontsize',12,'callback',[]);
set(po1,'callback',['k=~k;if k==1;',...
'set(po1,''string'',''stop'');',...
'else set(po1,''string'',''start'');',...
'end;',ss]);