二、IMU标定
陀螺仪模型:
其中,为陀螺仪测量值;为陀螺仪真实值;为陀螺仪零偏(也叫偏置);为陀螺随机噪声项(包括白噪声和随机游走噪声)。
注意:我们通过艾伦方差法imu_tils工具标定的是陀螺仪和加速度计的白噪声和随机游走噪声。
1、启动相机节点
source ./devel/setup.bash
roslaunch zed_wrapper zed2.launch
2、打开ros话题,找到相机中imu的话题:zed/imu/data_raw
rostopic list
3、下载imu_tils和code_tils
官网下载:
https://github.com/gaowenliang
4、运行下面rosbag指令,静止imu两小时
rosbag record /zed/imu/data_raw -O imu.bag
5、标定imu
在标定之前,我们需要重新写一个launch文件,用于imu_tils订阅我们zed2相机的imu话题。
在imu_tils文件下,复制launch文件夹中的.launch,将其命名为zed_calibration.launch,修改内容为如下:
<launch>
<node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
<param name="imu_topic" type="string" value= "/zed2/zed_node/imu/data_raw"/>
<param name="imu_name" type="string" value= "ZED2"/>
<param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
<param name="max_time_min" type="int" value= "120"/>
<param name="max_cluster" type="int" value= "200"/>
</node>
</launch>
最后,执行标定:
在imu_tils文件夹下,打开终端,输入:
source ./devel/setup.bash
roslaunch imu_tils zed_calibration.launch
最后得到imu的标定结果(得到加速度计和陀螺仪的avg-axis):
%YAML:1.0
---
type: IMU
name: imutest
Gyr:
unit: " rad/s"
avg-axis:
gyr_n: 1.66653821181e-03
gyr_w: 3.62995642537e-06
Acc:
unit: " m/s^2"
avg-axis:
acc_n: 1.95210249097e-03
acc_w: 3.21657754841e-05
6、通过相机SDK驱动读取厂家标定的IMU两个噪声
cd /usr/local/zed/samples/tutorials/tutorial 7-sensor data/cpp
mkdir build
cd build
cmake ..
make
./ZED_Tutorial_7
因为IMU参数在程序数据读取前面,所以及时ctrl+c停止。获得下图: