3 Star 1 Fork 1

Daitole/UWB-IMU-AHRS

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
gt4.m 3.08 KB
一键复制 编辑 原始数据 按行查看 历史
Qin Shi 提交于 2019-07-09 21:25 . first commit
function [p,v,a,eul,eul_rate,t,freq] = gt4()
freq = 100; % Groundtruth simulation frequency in Hz.
sim_step = 1/freq;
start_time = 0;
% First: static case at start up, 0-5s
end_time = 5;
t_i = (start_time+sim_step: sim_step: end_time)';
p_i = repmat([0 0 0],length(t_i),1);
v_i = repmat([0 0 0],length(t_i),1);
a_i = repmat([0 0 0],length(t_i),1);
eul_i = repmat([0 0 0],length(t_i),1);
eul_rate_i = repmat([0 0 0],length(t_i),1);
t = t_i;
p = p_i;
v = v_i;
a = a_i;
eul = eul_i;
eul_rate = eul_rate_i;
% Second: no acceleration, orientation change with time, 5~60s
end_time = 50;
t_i = (start_time+sim_step : sim_step : end_time)';
p_i = [1.2*t_i, t_i 0.1*t_i];
v_i = repmat([1.2, 1, 0.1], length(t_i),1);
a_i = repmat([0, 0, 0], length(t_i),1);
eul_i = [pi/8*cos(0.2*t_i)-pi/8*cos(0.2*t_i(1)), ...
pi/12*cos(0.2*t_i)-pi/12*cos(0.2*t_i(1)), ...
pi/6*cos(0.1*t_i)-pi/6*cos(0.1*t_i(1))];
eul_rate_i = [-0.2*pi/8*sin(0.2*t_i), ...
-0.2*pi/12*sin(0.2*t_i), ...
-0.1*pi/6*sin(0.1*t_i)];
t = [t; t(end,:) + t_i];
p = [p; p(end,:) + v(end,:).*t_i + a(end,:).*t_i.*t_i + p_i];
v = [v; v(end,:) + a(end,:).*t_i + v_i];
a = [a; a(end,:) + a_i];
eul = [eul; eul(end,:) + eul_rate(end,:).*t_i + eul_i];
eul_rate = [eul_rate; eul_rate(end,:) + eul_rate_i];
% Third: with acceleration
end_time = 10;
t_i = (start_time+sim_step : sim_step : end_time)';
p_i = [0.002, 0.04, -0.05].*t_i.*t_i.*t_i;
v_i = [0.006, 0.12, -0.15].*t_i.*t_i;
a_i = [0.012, 0.24, -0.3].*t_i;
eul_i = [pi/8*cos(0.2*t_i)-pi/8*cos(0.2*t_i(1)), ...
pi/12*cos(0.2*t_i)-pi/12*cos(0.2*t_i(1)), ...
pi/6*cos(0.1*t_i)-pi/6*cos(0.1*t_i(1))];
eul_rate_i = [-0.2*pi/8*sin(0.2*t_i), ...
-0.2*pi/12*sin(0.2*t_i), ...
-0.1*pi/6*sin(0.1*t_i)];
t = [t; t(end,:) + t_i];
p = [p; p(end,:) + v(end,:).*t_i + a(end,:).*t_i.*t_i + p_i];
v = [v; v(end,:) + a(end,:).*t_i + v_i];
a = [a; a(end,:) + a_i];
eul = [eul; eul(end,:) + eul_rate(end,:).*t_i + eul_i];
eul_rate = [eul_rate; eul_rate(end,:) + eul_rate_i];
% Fourth: turning into zero acceleration and zero euler_rate
end_time = 10;
t_i = (start_time+sim_step : sim_step : end_time)';
p_i = [-0.002, -0.04, 0.05].*t_i.*t_i.*t_i;
v_i = [-0.006, -0.12, 0.15].*t_i.*t_i;
a_i = [-0.012, -0.24, 0.3].*t_i;
eul_i = -eul_rate(end,:)/end_time.*t_i;
eul_rate_i = repmat(-eul_rate(end,:)/end_time,length(t_i),1);
t = [t; t(end,:) + t_i];
p = [p; p(end,:) + v(end,:).*t_i + a(end,:).*t_i.*t_i + p_i];
v = [v; v(end,:) + a(end,:).*t_i + v_i];
a = [a; a(end,:) + a_i];
eul = [eul; eul(end,:) + eul_rate(end,:).*t_i + eul_i];
eul_rate = [eul_rate; eul_rate(end,:) + eul_rate_i];
% 5th: static
end_time = 20;
t_i = (start_time+sim_step: sim_step: end_time)';
p_i = repmat([0 0 0],length(t_i),1);
v_i = repmat([0 0 0],length(t_i),1);
a_i = repmat([0 0 0],length(t_i),1);
eul_i = repmat([0 0 0],length(t_i),1);
eul_rate_i = repmat([0 0 0],length(t_i),1);
t = [t; t(end,:) + t_i];
p = [p; p(end,:) + v(end,:).*t_i + a(end,:).*t_i.*t_i + p_i];
v = [v; v(end,:) + a(end,:).*t_i + v_i];
a = [a; a(end,:) + a_i];
eul = [eul; eul(end,:) + eul_rate(end,:).*t_i + eul_i];
eul_rate = [eul_rate; eul_rate(end,:) + eul_rate_i];
end
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Matlab
1
https://gitee.com/daitole/UWB-IMU-AHRS.git
git@gitee.com:daitole/UWB-IMU-AHRS.git
daitole
UWB-IMU-AHRS
UWB-IMU-AHRS
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385