Automotive Vision_5 Tracking Moving Objects(追踪移动物体)I ( with Regression and Kalman Filter)

Motion estimation by regression

  • 静止的点
    根据已知点,最小二乘法
    x ^ = 1 n ∑ i = 1 n x i , V a r ( x ) = ∑ i = 1 n ( x − x i ) 2 \hat{x}=\frac{1}{n}\sum_{i=1}^{n}x_i,Var(x)=\sum_{i=1}^n(x-x_i)^2 x^=n1i=1nxi,Var(x)=i=1n(xxi)2
  • 固定速度
    x = x 0 + v ∗ t ( + n o i s e ) x=x_0+v*t(+noise) x=x0+vt(+noise)
    search for min ⁡ x 0 , v ∑ i = 1 n ( x 0 + v t i − x i ) 2 \min_{x_0,v}\sum_{i=1}^n(x_0+vt_i-x_i)^2 minx0,vi=1n(x0+vtixi)2
  • 加速度(类似)
  • 矩阵算法
    在这里插入图片描述
    简单的回归
% load('data.mat');
actual_x0 = 5;
actual_v = 3;
numT = 50;

sequence = actual_x0 + actual_v .* (1:numT);%50个点,固定速度
measurements = awgn(sequence, 1);%add white gaussian noise to signal

figure('Name', 'Regression Result'); hold on;
plot(1:numT, sequence, 'r*-');
plot(1:numT, measurements, 'ks');

% Implement regression here
A = [ numT sum(1:numT);
    sum(1:numT) sum((1:numT) .^2)];%教材上的矩阵
B = [ sum(measurements)
    sum( measurements .* (1:numT)) ];

X = linsolve(A, B); % A*X=B 求除法

% Calculate estimated poses
est_poses = zeros(1,numT); % estimated poses
est_poses(1) = measurements(1,1); % first pose must be trusted, no regression computed here

x0 = X(1);
v = X(2);
for t=1:numT
    est_poses(1,t)= x0 + t * v;
end

% Display predicted values
plot(1:numT, est_poses, 'bx', 'LineWidth', 2);
axis equal;

squared_mean_error = analyze_residual_error(est_poses, sequence)

第二个是用sliding window 计算
就是把求回归的长度控制在一定长度

load('data.mat');

window_length = 50;

figure('Name', 'Regression Result'); hold on;
plot(1:numT, true_poses(:,1), 'r*-');
plot(1:numT, measurements(:,1), 'ks');

% Variables to use
x0 = 0; % initial position
v = 0;  % velocity
est_poses = zeros(numT,1); % estimated poses
est_poses(1) = measurements(1,1); % first pose must be trusted, no regression computed here

% Implement regression here
for t=2:numT
    current_window_length = min(t, window_length);%窗口的长度不会超过50
    t_0 = t - current_window_length + 1;
    %还是用那个矩阵法计算
    A = [ current_window_length  sum(t_0:t) ;
        sum(t_0:t)  sum((t_0:t) .^2) ];
    
    timesteps = (t_0:t);
    B = [ sum(measurements(timesteps,1));
        sum( measurements(timesteps,1) .* (t_0:t)') ];
    
    X = linsolve(A, B);
    
    x0 = X(1);
    v = X(2);
    est_poses(t)= x0 + t * v;
end

% Display predicted values
plot(1:numT, est_poses, 'bx', 'LineWidth', 2);
axis equal;

squared_mean_error = analyze_residual_error(est_poses, true_poses)

Kalman Filter

在这里插入图片描述
kf.m

load('data.mat');

% initialization
initial_state = [0 3];
initial_state_uncertainty = 4; % initial uncertainty: 4m
initial_state_cov_matrix = diag([initial_state_uncertainty^2 initial_state_uncertainty^2]);%创建一个2*2的矩阵,这两个数在一个对角线上

state = initial_state';
unc = initial_state_cov_matrix;

% this vectors stores the list of estimated states (excluding the initial state).
state_history = zeros(numT, 2);

A = eye(2);%主对角线为1,其余为0,2*2矩阵
H = eye(2);

% plotting of true poses
figure('Name', 'Poses');
hold on;
plot(true_poses(:,1), true_poses(:,2), 'r*-');
plot(measurements(:,1), measurements(:,2), 'ks');

% main loop of kalman filter
Q = noise_system;
R = noise_meas;

for i = 1:numT
    % prediction: fill in your code
    u = delta_motion(i, :)';    
    state = A * state + u;
    unc = A * unc * A' + Q;
%     unc = system_matrix'*unc*system_matrix+noise_system;
    
    % innovation: fill in your code
    z = measurements(i, :)';
    
    k_gain = unc * H' * (H * unc * H' + R)^-1; 
    state = state + k_gain * (z - H * state);
    unc = (eye(2) - k_gain * H) * unc;
    
    % store the estimated state for error analysis in 'state_history'
    state_history(i, :) = state;

    % plot estimated state and covariance after innovation
    plot (state(1), state(2), 'bx');
    error_ellipse(unc, state);
end

axis equal;
mean_squared_error = analyze_state_error(state_history, true_poses)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TC10是一份关于汽车以太网的唤醒和睡眠规范,该规范发布于2017年11月。在汽车以太网系统中,唤醒和睡眠功能对于有效的能源管理和系统性能至关重要。 根据规范,唤醒和睡眠功能旨在控制汽车以太网系统的活动状态。当汽车以太网系统处于睡眠状态时,电力消耗较低,能够在不需要系统操作的时候节省能源。而当需要进行通信或处理任务时,必须唤醒系统并使其转换到工作状态。 规范中明确了唤醒和睡眠过程的详细步骤和要求。其中,唤醒过程包括了外部信号的检测和通知车载局域网(LAN),以及系统的逐步恢复和建立连接。睡眠过程则包括了提前准备、断开连接、降低功耗等步骤。 在规范中还提到了唤醒和睡眠过程中的时间要求。为了确保系统的稳定运行,唤醒和睡眠的时间应当符合规范要求,并且需要测试和验证来确保系统在各种条件下都能够正确响应。 TC10规范的发布对于汽车以太网系统的设计和实现具有重要的指导意义。它为汽车制造商和供应商提供了一套标准的唤醒和睡眠规范,确保系统在能源管理和性能方面符合行业要求。同时,它也为整个汽车行业的发展和创新打下了基础,推动了更高效、安全和环保的汽车以太网技术的应用。 ### 回答2: TC10是汽车以太网中的唤醒和休眠规范,于2017年11月发布。该规范定义了汽车以太网系统中的唤醒和休眠过程,以确保系统在需要时可以快速启动,同时也能有效地降低能源消耗。 在这个规范中,唤醒是指当车辆处于休眠状态时,以太网系统被激活并恢复正常工作。它可以通过触发特定的信号或事件来完成,例如车门启动、驾驶员上车、远程启动等。唤醒过程需要确保以太网系统能够迅速响应并正常运行,以使车辆其他相关系统能够正常运行。 而休眠是指当车辆处于非工作状态时,以太网系统进入休眠模式以节省能源。休眠模式下的以太网系统会降低功耗,并关闭不必要的功能,以保证最小的能源消耗。休眠状态可以通过特定的条件来触发,例如长时间无操作、车辆熄火等。休眠过程需要确保以太网系统能够完全停止工作,并保持最低的能源消耗。 TC10规范还涵盖了唤醒和休眠过程的具体细节,包括通信协议、控制信号、时间延迟要求等。这些细节确保了汽车以太网系统在唤醒和休眠过程中的稳定性和可靠性。通过遵循该规范,汽车制造商和相关供应商可以确保车辆的以太网系统具有高效的能源管理能力,进一步提升汽车整体性能和可持续发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值