微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Matlab 进行轨迹优化

如何解决使用 Matlab 进行轨迹优化

我正在尝试创建一个轨迹规划器。我正在研究论文。这个想法是最小化jerk(acc导数)。目标函数

J= int(t0 -> tf) 0.5*j_lat^2*dt.

哈密顿量是

H=0.5*j_lat^2+ p1*v_lat+p2*a_lat+p3*j_lat.
syms t
syms l v_lat a_lat j_lat p1 p2 p3 H C1 C2 C3 C4 C5 C6
%% relation
dl=v_lat;
dv_lat=a_lat;
da_lat=j_lat;

g=1/2*j_lat^2;
%% Hamiltonian
H=g+p1*v_lat+p2*a_lat+p3*j_lat;

%costate equations
Dp1= -diff(H,l); %differential of a symbolic equation
Dp2= -diff(H,v_lat);
Dp3= -diff(H,a_lat);

%solve for control j
dj= diff(H,j_lat); 
sol_j= solve(dj,j_lat); %solution of dH/dj_lat=0

%substitute j to state equations
da_lat=subs(da_lat,j_lat,sol_j);

p1=C1;
p2=-C1*t+C2;
p3=0.5*C1*t^2-C2*t+C3;

l=-1/120*C1*t^5+1/24*C2*t^4-1/6*C3*t^3+1/2*C4*t^2+C5*t+C6;
v_lat=-1/24*C1*t^4+1/6*C2*t^3-1/2*C3*t^2+C4*t+C5;
a_lat=-1/6*C1*t^3+1/2*C2*t^2-C3*t+C4;
j_lat=-1/2*C1*t^2+C2*t-C3;

%% solution 

%convert symbolic objs to strings for using "dsolve"
eq1= strcat('dl=',char(dl));
eq2= strcat('dv_lat=',char(dv_lat));
eq3= strcat('da_lat=',char(da_lat));
eq4= strcat('Dp1=',char(Dp1));
eq5= strcat('Dp2=',char(Dp2));
eq6= strcat('Dp3=',char(Dp3));
eq7= strcat('p1=',char(p1));
eq8= strcat('p2=',char(p2));
eq9= strcat('p3=',char(p3));
eq10= strcat('l=',char(l));
eq11= strcat('v_lat=',char(v_lat));
eq12= strcat('a_lat=',char(a_lat));

sol_h= dsolve(eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,eq9,eq10,eq11,eq12);

我不知道为什么会出现此错误

**Error using mupadengine/feval_internal**
**Invalid equation or initial condition.**

**Error in dsolve>mupadDsolve (line 334)**
**T = feval_internal(symengine,'symobj::dsolve',sys,x,options);**

**Error in dsolve (line 203)**
**sol = mupadDsolve(args,options);**

**Error in Untitled4 (line 61)**
**sol_h=dsolve(eq1,eq12);** 

有人可以帮我吗?我有点绝望! 最好的,艾丽卡

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。