gaoxiang12 / slam_in_autonomous_driving

《自动驾驶中的SLAM技术》对应开源代码
1.76k stars 430 forks source link

第三章 ESKF 噪声Q的疑问 #132

Open Maxinjun opened 6 months ago

Maxinjun commented 6 months ago

代码如下: double ev = options.accevar; double et = options.gyrovar; double eg = options.bias_gyrovar; double ea = options.bias_accevar;

    double ev2 = ev;  // * ev;
    double et2 = et;  // * et;
    double eg2 = eg;  // * eg;
    double ea2 = ea;  // * ea;

    // 设置过程噪声
    Q_.diagonal() << 0, 0, 0, ev2, ev2, ev2, et2, et2, et2, eg2, eg2, eg2, ea2, ea2, ea2, 0, 0, 0;

第一个疑问是:应该把上面的注释放开,需要平方 第二个疑问是, ev2、 et2需要乘以dt^2, eg2、ea2需要乘以dt, 参考公式如下 捕获 根据代码 // 噪声由初始化器估计 options.gyrovar = sqrt(imu_init.GetCovGyro()[0]); options.accevar = sqrt(imu_init.GetCovAcce()[0]); 可以得知acce_var_是静止时离散时间的加速度计噪声标准差,单位是m/s^2; 如果ev2=et=options.accevar, 即Q中速度对应的方差的单位也是m/s^2, 这明显是不对的,如果是 acc_var^2*dt^2, 单位为 m^2/s^2, 这才是正确的