Changing a parameter in a differential equation according to a condition ?

1 view (last 30 days)
I am trying to change the input wheel velocities of a mobile robot according to a position condition ?
if d > 0 & d < 0.4
p.WR = 0.51;
p.WL = 0.5;
elseif d > 0.4 & d < 0.8
p.WR = 0.5;
p.WL = 0.51;
elseif d == 0.4
p.WR = 0.5;
p.WL = 0.5;
end
function dt = mydglw9(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];
pose = [x y th];
end
however i always get the error [ Reference to non-existent field 'WL' ], is there a way to make the solver check the condition before solving the differential equations ?

Accepted Answer

Star Strider
Star Strider on 14 May 2017
What values does ‘d’* have?
Note that in this if block, if ‘d<=0’ or ‘d>=0.8’, the if block will not execute and the values within it will not be assigned.
  8 Comments
Moustafa Aboubakr
Moustafa Aboubakr on 14 May 2017
Thank you so much I used the beautiful mapshow function :) :) to draw the path instead of the long for loop and it worked great.
file attached for trial if u like, use mydglcallw10(1000,0,0.2,0) in command window

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!