65 lines
1.6 KiB
Matlab
65 lines
1.6 KiB
Matlab
function [ref, dref] = set_trajectory(i)
|
|
syms s
|
|
|
|
switch i
|
|
case 0
|
|
% a straigth line trajectory at v=0.5m/s
|
|
xref = 0.5*s;
|
|
yref = 0;
|
|
case 1
|
|
% a straigth line trajectory at v=10 m/s
|
|
xref = 10*s;
|
|
yref = 0;
|
|
case 2
|
|
% straight line, with initial error
|
|
xref = 5 + 0.5*s;
|
|
yref = 0;
|
|
case 3
|
|
% straight line, initial error, faster
|
|
xref = 5 + 10*s;
|
|
yref = 0;
|
|
case 4
|
|
xref = cos(s);
|
|
yref = sin(s);
|
|
case 5
|
|
xref = 15*cos(s);
|
|
yref = 15*sin(s);
|
|
case 6
|
|
xref = 0.4*s;
|
|
yref = cos(0.4*s);
|
|
%xref = 0.6*s;
|
|
%yref = cos(0.6*s);
|
|
case 7
|
|
xref = 5*cos(0.05*s);
|
|
yref = 5*sin(0.05*s);
|
|
case 8
|
|
xref = 0.5*s;
|
|
yref = 1;
|
|
case 9
|
|
xref = 0.9*s;
|
|
yref = 0.5*cos(0.65*s);
|
|
case 10
|
|
xref = cos(0.5*s);
|
|
yref = 0.5 * sin(s);
|
|
case 11
|
|
% cardioid
|
|
a = 0.5;
|
|
xref = 2*a*(1-cos(0.5*s))*sin(0.5*s);
|
|
%xref = 4*a*(0.2-cos(0.5*s))*sin(0.5*s);
|
|
yref = 2*a*(1-cos(0.5*s))*cos(0.5*s);
|
|
case 12
|
|
% square! in parametic form! https://math.stackexchange.com/questions/978486/parametric-form-of-square
|
|
%speed = 0.3;
|
|
speed = 0.18;
|
|
side = 2;
|
|
s_ = speed * s;
|
|
%xref = side * cos(s) / max(abs(cos(speed*s)), abs(sin(speed*s))) ;
|
|
%yref = side * sin(s) / max(abs(cos(speed*s)), abs(sin(speed+s))) ;
|
|
p = (sqrt(2) * (abs(sin(s_ + pi/4)) + abs(cos(s_ + pi/4))));
|
|
xref = side * cos(s_) / p;
|
|
yref = side * sin(s_) / p;
|
|
end
|
|
|
|
ref = [xref; yref];
|
|
dref = diff(ref, s);
|
|
end |