IMU标定

简要:

        使用imu_tk以及imu_utils对imu标定。

一、imu_tk标定

1. 标定流程

        使用对应的ros_wrapper来加载数据。其数据运动过程参考对应git上的readme,

Record a bag file with IMU topic (e.g. rosbag record -O imu /imu).

Procedure:

  1. Left the IMU static for 50 seconds.
  2. Rotate the IMU and then lay it in a different attitude.
  3. Wait for at least 1 seconds.
  4. Have you rotated the IMU 36 ~ 50 times? If not, go back to step 2.
  5. Done.

tips:变换imu姿态的过程中,最好将IMU固定到某个有重量物体上旋转静止,单纯用手旋转会有轻微的抖动,感觉不太好;其中第三条等待1s这个,不如多等一会,5s左右合适;频率不要太低,一开始10hz导致计算总是失败。

从代码上看,系统首先计算整个bag数据的方差,然后利用这个方差(×N)来寻找静止时间段,最少寻找12(min_num_intervals_)个静止的时间段才会进行下一步计算。(剩余的代码没有看,因为我主要是这步错了,所以主要看得这一步。)

对应会给出如下几个矩阵作为结果,最终的结果会打印在终端:

加速度计

Misalignment Matrix
          1  0.00931641   0.0365531
          0           1 -0.00443462
         -0           0           1
Scale Matrix
0.998645        0        0
       0 0.998098        0
       0        0 0.996958
Bias Vector
 0.0519509
  0.132995
-0.0129506

Accelerometers calibration: inverse scale factors:
1.00136
1.00191
1.00305
 

角速度计

Gyroscopes calibration: residual 0.00461895
Misalignment Matrix
          1  0.00365644   0.0296156
-0.00776619           1  0.00522669
 -0.0200886   0.0053562           1
Scale Matrix
0.999833        0        0
       0  1.01073        0
       0        0  1.00325
Bias Vector
-9.35939e-05
 4.13307e-05
 -0.00040904

Gyroscopes calibration: inverse scale factors:
1.00017
0.989384
0.996757
 

会有一些图显示中间结果,没细看,感觉就是找的静止时间段

IMU标定_第1张图片

结果使用主要就是参考这两个公式吧。

加速度计:a^O = T^a K^a (a^S + b^a + v^a)

角速度计:\omega^O = T^gK^g(\omega^S + b^g + v^g)

其中,a^O为矫正后的输出,a^S为未矫正前的输入,v^a为白噪声。T^a为三轴不互相垂直带来的误差,对应上述结果中的Misalignment Matrix;K^a为scale的误差,对应上述结果中的Scale Matrix;b^a为bias,对应上述结果中的Bias Vector。角速度计公式与结果对应关系和加速度计是一样的。

tips:估结果准确性的话,目前的想法是可以参考迭代结果的误差。

2. 算法原理

        先参考这篇吧,回头有空重读论文再重写(估计难了~) 。论文在此。

二、imu_utils标定

1.标定流程

标定流程比较简单,采集一个静置120分钟的imu数据,然后使用roslaunch imu_utils ***.launch进行标定。

2. 算法原理

(待写)

你可能感兴趣的:(摄像头标定,IMU标定,SLAM)