📄 simulation.m
字号:
%localization using a kalman filter approach
clear all;
%simulation parameter
global diameter_robot measure_var odomtrie_var ...
visu_time hold_rate width X_0 init_kalmann P_0
diameter_robot = 1; %diameter of the robot for simulation demonstration
X_0 = [-8 -8 pi/2]'; %init position
width = 4; %width of the corridor
visu_time = 0.01; %updating time for simulation
hold_rate = 10; %number of iterations between to fixed plots
init_kalmann = 1; %for initialization of kalman filter
P_0 = eye(3,3)*0.1; %no doubt about initposition
disp('startposition');
visualize(0,X_0);
disp('start simulation');
%assignement1)
robot_state = X_0;
robot_state_noise = X_0;
odomtrie_var = [0.001;0.0001] %odometrie covariance
measure_var = [1e-5;1e-5;1e-5]; %measurement covariance
% translation
control.delta=0.1;
control.omega=0.0;
for i=1:160
delta = [control.delta control.omega];
robot_state = vehicle(delta,robot_state);
robot_state_noise = vehicle_noise(delta,robot_state_noise);
xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] =
% ekf_filter(delta,xywpose_noisymeasure);
information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
visualize(1,robot_state_noise,xywpose_noisymeasure,information);
visualize(2,robot_state);
%visualize(3,robot_state_estimate);
end
% % rotation
% control.delta=0.0;
% control.omega=-pi/100;
% for i=161:210
% delta = [control.delta control.omega];
% robot_state = vehicle(delta,robot_state);
% robot_state_noise =
% vehicle_noise(delta,robot_state_noise);
% information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
% xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] = ekf_filter(delta,xywpose_noisymeasure);
% visualize(1,robot_state_noise,xywpose_noisymeasure,information);
% visualize(2,robot_state);
% visualize(3,robot_state_estimate);
% end
%
% % translation
% control.delta=0.1;
% control.omega=0.0;
% for i=211:370
% delta = [control.delta control.omega];
% robot_state = vehicle(delta,robot_state);
% robot_state_noise = vehicle_noise(delta,robot_state_noise);
% xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] =
% ekf_filter(delta,xywpose_noisymeasure);
% information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
% visualize(1,robot_state_noise,xywpose_noisymeasure,information);
% visualize(2,robot_state);
% visualize(3,robot_state_estimate);
% end
%
% % rotation
% control.delta=0.0;
% control.omega=-pi/100;
% for i=371:420
% delta = [control.delta control.omega];
% robot_state = vehicle(delta,robot_state);
% robot_state_noise = vehicle_noise(delta,robot_state_noise);
% xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] =
% ekf_filter(delta,xywpose_noisymeasure);
% information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
% visualize(1,robot_state_noise,xywpose_noisymeasure,information);
% visualize(2,robot_state);
% visualize(3,robot_state_estimate);
% end
%
% % translation
% control.delta=0.1;
% control.omega=0.0;
% for i=421:580
% delta = [control.delta control.omega];
% robot_state = vehicle(delta,robot_state);
% robot_state_noise = vehicle_noise(delta,robot_state_noise);
% xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] =
% ekf_filter(delta,xywpose_noisymeasure);
% information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
% visualize(1,robot_state_noise,xywpose_noisymeasure,information);
% visualize(2,robot_state);
% visualize(3,robot_state_estimate);
% end
%
% % rotation
% control.delta=0.0;
% control.omega=-pi/100;
% for i=581:630
% delta = [control.delta control.omega];
% robot_state = vehicle(delta,robot_state);
% robot_state_noise = vehicle_noise(delta,robot_state_noise);
% xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] =
% ekf_filter(delta,xywpose_noisymeasure);
% information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
% visualize(1,robot_state_noise,xywpose_noisymeasure,information);
% visualize(2,robot_state);
% visualize(3,robot_state_estimate);
% end
%
% % translation
% control.delta=0.1;
% control.omega=0.0;
% for i=631:790
% delta = [control.delta control.omega];
% robot_state = vehicle(delta,robot_state);
% robot_state_noise = vehicle_noise(delta,robot_state_noise);
% xywpose_noisymeasure = measurement_noise(robot_state_noise);
% [robot_state_estimate,cov_noise] =
% ekf_filter(delta,xywpose_noisymeasure);
% information = sprintf('delta w: %0.5g \ndelta v: %0.5g',delta(2),delta(1));
% visualize(1,robot_state_noise,xywpose_noisymeasure,information);
% visualize(2,robot_state);
% visualize(3,robot_state_estimate);
% end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -