模拟移动机器人控制(二)

原创 2012年03月27日 23:27:58
MATLAB模拟移动机器人控制 
程序:
clc;close all;clear;
PI = [3;7;0]%PI = [xi;yi;ci]
PT = [120;81;pi/2]%PT = [xt;yt;ct]
VW = [7;pi/50]%VW = [v;w]
P = PI; %P = [x;y;c]
[xi,yi,ci,xt,yt,ct,x,y,c,v,w] = df(PI,PT,P,VW);
D = ((x-xt).^2+(y-yt).^2).^0.5;
i = 1;
L(:,i) = P;
while (D>v)
    C = atan((yt-y)*(xt-x).^(-1));
    if (c>C)
        n = -1;
    else
        n = 1;
    end
    T = [0 0;0 0;0 n];
    P = P+T*VW;
    [xi,yi,ci,xt,yt,ct,x,y,c,v,w] = df(PI,PT,P,VW);
    i = i+1;
    L(:,i) = P;
    T = [cos(c) 0;sin(c) 0;0 0];
    P = P+T*VW;
    [xi,yi,ci,xt,yt,ct,x,y,c,v,w] = df(PI,PT,P,VW);
    D = ((x-xt).^2+(y-yt).^2).^0.5;
end
while(c>(ct+0.5*w)||c<(ct-0.5*w))
     if (c>ct)
        n = -1;
    else
        n = 1;
    end
    T = [0 0;0 0;0 n];
    P = P+T*VW;
    [xi,yi,ci,xt,yt,ct,x,y,c,v,w] = df(PI,PT,P,VW);
end
i = i+1;
L(:,i) = P
hold
plot(L(1,:),L(2,:),'ro')
plot(L(1,:),L(2,:))    
调用函数df:
function [xi,yi,ci,xt,yt,ct,x,y,c,v,w]=df(PI,PT,P,VW)
xi = PI(1,1);
yi = PI(2,1);
ci = PI(3,1);
xt = PT(1,1);
yt = PT(2,1);
ct = PT(3,1);
x = P(1,1);
y = P(2,1);
c = P(3,1);
v = VW(1,1);
w = VW(2,1);

结果:


PI =


     3
     7
     0




PT =


  120.0000
   81.0000
    1.5708




VW =


    9.0000
    0.0628




L =


  Columns 1 through 9


    3.0000    3.0000   11.9822   20.9113   29.7519   38.4691   47.0286   55.3966   63.5400
    7.0000    7.0000    7.5651    8.6931   10.3795   12.6178   15.3989   18.7120   22.5440
         0    0.0628    0.1257    0.1885    0.2513    0.3142    0.3770    0.4398    0.5027


  Columns 10 through 18


   71.4268   79.0258   86.3069   93.2415   99.8022  105.9632  111.7000  116.9901  121.8125
   26.8798   31.7023   36.9923   42.7291   48.8901   55.4508   62.3854   69.6666   77.2655
    0.5655    0.6283    0.6912    0.7540    0.8168    0.8796    0.9425    1.0053    1.5708

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

模拟移动机器人控制(四)(修改)

解决了大于360°时机器人无限调整角度的问题; clc;close all;clear hold on axis([0,200,0,200]); t= 0.01; [X,Y] = ginput(1...

模拟移动机器人控制(四)(再次修改)

环境:WIN7;MATLAB2010 加入了模拟光电编码器的计数显示 clc;close all;clear subplot(121);title('模拟机器人坐标'); hold on a...

模拟移动机器人控制(三)

MATLAB模拟移动机器人跟踪轨迹的控制 代码: clc,close all;clear X = 1:0.1:10;; P = rand(1,4)*10; Y = P(1,1)*X+P(1,2...

模拟移动机器人控制(一)

MATLAB模拟移动机器人控制 程序: clc;close all;clear; PI = [3;7;0]%PI = [xi;yi;ci] PT = [120;81;pi/2]%PT = [xt;...

基于ROS平台的移动机器人-2-小车底盘控制

基于ROS平台的移动机器人-2-小车底盘控制说明本博文将介绍小车底盘控制的原理,如PID控制,控制程序的编写等。小车控制思想 控制电机转动。电机的控制我们分为两部分,一部分为电机转动方向的控制,另一个...

基于ROS平台的移动机器人-4-通过ROS利用键盘控制小车移动

基于ROS平台的移动机器人-4-通过ROS利用键盘控制小车移动准备工作1.下载串口通信的ROS包(1)cd ~/catkin_ws/src (2)git@github.com:Forrest-Z/se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)