I am gettting an ode23 error when i run y code please help me solve this issue.
the code is as follows.
function [t,x] = NAviGAtiON()
clc
time=[0 300];
x0=[0;0;0];
[t x]=ode23(@vehicle,time,x0);
plot(x(:,1),x(:,2),'r',Goal(1),Goal(2),'o',Obs1(1),Obsl(2),'x',Obs2(1),Obs2(2),'x')
axis([0 12 0 12])
function dx = vehicle(t,x)
Goal=[10;10];
Obs1=[3;3];
Obs2=[9;9];
KG=30;
Ko=30;
rG=sqrt((Goal(1)-x(1))^2+(Goal(2)-x(2)^2));
FGx=KG*(Goal(1)-x(1))/rG;
FGy=KG*(Goal(2)-x(2))/rG;
ro1=sqrt((Obs1(1)-x(1))^2+(Obs1(2)-x(2)^2));
Fo1x=-Ko*(Obs2(1)-x(1))/ro2^3;
Fo2y=-Ko*(Obs2(2)-x(1))/ro2^3;
Fx=(FGx+Fo1x+Fo2x);
Fy=(FGy+Fo1y+Fo2y);
alpha=atan(Fy/Fx);
v=1;L=2;
if rG<0.05
v=0;
end
K=2;
ph=(k*(alpha-x(3)));
dx=[v*cos(ph)*cos(x(3));v*cos(ph)*sin(x(3));v*sin(ph)/L];
end
end

댓글 수: 5

Steven Lord
Steven Lord 2020년 4월 8일
What is the full and exact text (everything displayed in red exactly as it is displayed; don't summarize or trim out 'unnecessary' parts) of the error message you received?
Error in NAviGAtiON (line 7)
[t x]=ode23(@vehicle,time,x0);
This is the error text. Thanks a lot for helping.
Undefined function or variable 'ro2'.
Error in NAviGAtiON/vehicle (line 23)
Fo1x=-Ko*(Obs2(1)-x(1))/ro2^3;
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode23 (line 112)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in NAviGAtiON (line 7)
[t x]=ode23(@vehicle,time,x0);
@Steven Lord, I have fixed all the issues with the code but now the output result is not the one expected.
The vehicle does not reach the final goal in the plot.
The final code and the result are as follows. Kindly find the attachment.
function [t,x] = NAviGAtiON()
clc
time=[0 300];
x0=[0;0;0];
[t x]=ode23(@vehicle,time,x0);
plot(x(:,1),x(:,2),'r',Goal(1),Goal(2),'o',Obs1(1),Obs1(2),'x',Obs2(1),Obs2(2),'x')
axis([0 12 0 12])
function dx = vehicle(t,x)
Goal=[10;10];
Obs1=[3;3];
Obs2=[9;9];
KG=30;
Ko=30;
L=2;
rG=sqrt((Goal(1)-x(1))^2+(Goal(2)-x(2)^2));
FGx=KG*(Goal(1)-x(1))/rG;
FGy=KG*(Goal(2)-x(2))/rG;
ro1=sqrt((Obs1(1)-x(1))^2+(Obs1(2)-x(2)^2));
Fo1x=-Ko*(Obs1(1)-x(1))/ro1^3;
Fo1y=-Ko*(Obs1(2)-x(2))/ro1^3;
ro2=sqrt((Obs2(1)-x(1))^2+(Obs2(2)-x(2)^2));
Fo2x=-Ko*(Obs2(1)-x(1))/ro2^3;
Fo2y=-Ko*(Obs2(2)-x(2))/ro2^3;
Fx=(FGx+Fo1x+Fo2x);
Fy=(FGy+Fo1y+Fo2y);
alpha=atan(Fy/Fx);
v=1;L=2;
if rG<0.05
v=0;
end
K=2;
ph=K*(alpha-x(3));
dx=[v*cos(ph)*cos(x(3));v*cos(ph)*sin(x(3));v*sin(ph)/L];
end
end

댓글을 달려면 로그인하십시오.

 채택된 답변

Steven Lord
Steven Lord 2020년 4월 8일

0 개 추천

Nowhere in the code you posted do you define a variable named ro2. On the line before you tried to use ro2 you defined a variable named ro1. Perhaps you meant to use ro1 instead of ro2, or perhaps you intended to define a variable named ro2 instead of one named ro1?

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Programming에 대해 자세히 알아보기

제품

질문:

2020년 4월 8일

댓글:

2020년 4월 22일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by