• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【玩具】ANUMatlabToy-RobotMovementSimulation

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

给朋友做的,当是放松了。。。本人真心不会matlab,下面的代码不代表个人水平,纯属堆砌。

这个程序模拟了一些机器人在一个方形空间中的移动轨迹。

clc;
clear all;
close all;

%--------------------Input parameters------------------
%R=input('Number of Robots: ');
%L=input('Length of the Room (m): ');
%N=input('Number of Steps: ');
%S=input('Maximum Size of each Step (cm):');
%typeN=input('Type of the North Wall (Reflecting(0)/Absorbing(1)): ');
%typeS=input('Type of the South Wall (Reflecting(0)/Absorbing(1)): ');
%typeW=input('Type of the West Wall (Reflecting(0)/Absorbing(1)): ');
%typeE=input('Type of the East Wall (Reflecting(0)/Absorbing(1)): ');

%-----------random----------------
%R = round(unifrnd(3,10,1,1));
%L = round(unifrnd(1,10,1,1));
%N = round(unifrnd(10,100,1,1));
%S = round(unifrnd(10,100,1,1));

%---------pre_assignment------------------
R = 8;
L = 1;
N = 10;
S = 50;
typeN = 0;
typeS = 0;
typeW = 0;
typeE = 0;


%B=zeros(N+1,3);
B=[];
B(1,:)=[0 0 0];
save result B;
M=N;
for i=1:R
    N = M;
    t = 1;
    position=[0 0 0];
while N>0
    B(M-N+1,:)=position;
    save result B;
    step = rand(1,1)*S;
    d = floor(rand(1,1)*4);
    [nextposition,N] = newposition(d,step,position,L,typeN,typeS,typeW,typeE,N);
    position=nextposition;
    N=N-1;
    t=t+1;
   %disp(position);
end
 B(t,:)=position;
 disp(B);
 plot3(B(:,1),B(:,2),B(:,3),'*-','color',[mod(floor((i-1)/4),2),mod(floor((i-1)/2),2),mod((i-1),2)]);
 hold on;
 title('Position of the Robots');
 text(0,0,0,'Origin');
 text(0,50*L,0,'North');
 text(0,-50*L,0,'South');
 text(50*L,0,0,'West');
 text(-50*L,0,0,'East');
 axis([-50*L 50*L -50*L 50*L 0 M]);
 grid on
end
function [ nextposition ,N] = newposition( d,step,position,L,typeN,typeS,typeW,typeE,N )
    %disp(position);
    if d==0
        nextposition = position + [0 step 1];
            if nextposition(2)>50*L
                if typeN==0
                    new=100*L-nextposition(2);
                    nextposition(2)=new;
                else 
                    nextposition(2)=50*L;
                    N=0;
                end
            end
            
    elseif d==1
        nextposition = position + [0 -step 1];
         if nextposition(2)<-50*L
             if typeS==0
                new=-100*L-nextposition(2);
                nextposition(2)=new;
             else
                nextposition(2)=- 50*L;
                N=0;
             end
        end 
    elseif d==2
        nextposition = position + [step 0 1];
        if nextposition(1)>50*L
            if typeE==0
                new=100*L-nextposition(1);
                nextposition(1)=new;  
            else
                nextposition(1)=50*L;
                N=0;
            end
        end
    else
        nextposition = position + [-step 0 1];
         if nextposition(1)<-50*L
             if typeW==0
                new=-100*L-nextposition(1);
                nextposition(1)=new;
             else
                 nextposition(1)=-50*L;
                 N=0;
             end
         end
    end
end


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转载】matlab循环时显示进度条发布时间:2022-07-18
下一篇:
MATLAB之Matlab MEX找不到编译器的问题发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap