我正在研究有关侧倾角估计的报告。在文章中,我发现了以下方案:
其中vx是纵向车速,psi_dot是水平偏航角,lambda_dot是侧倾角,lambda是侧倾角。我需要在matlab / simulink上验证此方法
这是我的模拟:
我为vx和偏航率选择了随机值(希望是合理的),而lambda_dot与本文中使用的类似。 MATLAB功能块包含以下代码:
function lambda = fcn(vx, yaw_r)
g = 9.81;
lambda0 = -(vx*yaw_r)/g;
tspan = [0 40];
[t,lambda_var] = ode45(@(t,lambda_var) tan(0.9*lambda_var)*cos(lambda_var), tspan, lambda0);
t0 = 0:0.01:40;
lambda1 = zeros(1,4001);
lambda1 = interp1(t,lambda_var,t0);
lambda = [t0' lambda1'];
我使用了我在lambda0表达式和[t,lambda_var]表达式中找到的方程。 “ lambda_d”块包含一个两列的向量,第一个具有时间值,第二个具有相应的lambda_dot值。如上面的代码所示,也应以相同的方式定义lambda(fcn块的输出)。
我认为问题出在示波器上:如果运行此仿真,则示波器上没有绘制单个信号。相反,我得到的信号与矢量的大小一样多,其中包含4000个值(在40秒tot上为0.01秒的采样时间)。
但是我现在知道问题是Simulink块中的ODE方程。我需要在该块中编写它,因为在下一步中两个输入将是可变的。我需要解决的方程是:
tan(0.9*lambda)*cos(lambda) = -vx*yawrate /g
编辑:我根据您的评论更改了主要问题。