I am doing a mobile robot simulation by solving the differential equation using ode solver and an animated line to show the movement of the robot (robot path)
%Simulation Experiment (kinematics input speed)***************
function mydglcallw6(WR,WL,n)clf;tspan = [0 2];initials = zeros(n,3); %start at origin
p = par();%**************************************************************
%Creating robot path according to input speed******************
for i = 1:n p.WL = WL(i) ;p.WR = WR(i); sol(i)= ode23(@mydglw5, tspan, initials(i,:),[],p);[t,s] = ode23(@mydglw5, tspan, initials(i,:),[],p);initials(i+1,:) = deval(sol(i),2);curve = animatedline(0,0,'Color','r','linewidth',2);axis([-1.5 1.5 -1.5 1.5]);xlabel('x-position [m]');ylabel('y-position [m]');title('robot path');grid on for j = 1:length(s(:,1)) addpoints(curve,s(j,1),s(j,2)) drawnow pause(0.02)endendend%*************************************************************
%Model Parameters*********************************************
function p = par();p.L = 0.12; %length [m]
p.r = 0.1; %radius of wheel [m]
%p.WL = 2;p.WR = 2.5; %wheel velocities [th/s]
end%*************************************************************%Differential Equations***************************************
function dt = mydglw5(t,c,p)x = c(1);y = c(2);th = c(3);dx = (((p.r*p.WL)+(p.r*p.WR))/2) * cos(th);dy = (((p.r*p.WL)+(p.r*p.WR))/2) * sin(th);dth= ((p.r*p.WL)-(p.r*p.WR))/p.L;dt = [dx;dy;dth];in = [x(end);y(end);th(end)]; %compare last value with deval
end
when i use this code, i always get an unwanted line in the graph ?? how can i remove it ?
Best Answer