使用kalibr对双目-IMU进行标定(小觅相机)

有些地方也没有弄得很清楚,有错误的地方欢迎大家批评指正
(っ•̀ω•́)っ✎⁾⁾ 我爱学习,学习使我进步

使用设备和环境

小觅 MYNTEYE-S1030
Ubuntu 16.04
所以用的是 ROS Kinetic

kalibr的安装

kalibr的GitHub网址,可参看其wiki进行安装和各种标定。
下面我再记录一遍使用ros的安装过程:

安装依赖项

  1. sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-kinetic-vision-opencv ros-kinetic-image-transport-plugins ros-kinetic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
    ===
    *其中,如果是ROS indigo,上面有三项注意要修改:
    ros-indigo-vision-opencv ros-indigo-image-transport-plugins ros-indigo-cmake-modules
    其他版本的ROS应该类似。
  2. sudo pip install python-igraph --upgrade
    *第一次安装的时候没成功,但是之后可以用kalibr提供的数据集进行标定,但是之后标定,好像无法识别pinhole-radtan model。
    *我在安装过程中遇到过好几次失败,网上查的办法都不太好使,可能是网络的问题,好险最后又成功了。

关于igraph:
igraph is on the Python Package Index with pre-compiled wheels for most Python distributions and platforms, so in most cases it can simply be installed using pip. ——引自官网

创建catkin工作空间

  1. mkdir -p ~/kalibr_workspace/src
  2. cd ~/kalibr_workspace
  3. *(这步一般不需要,安装ROS一般都将其写入了环境变量中了)
    source /opt/ros/kinetic/setup.bash
  4. catkin init
  5. catkin config --extend /opt/ros/kinetic
  6. *(这步应该也不需要,Necessary for catkin_tools >= 0.4.)因为我用了反而不能catkin make了
    catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
  7. catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

编译

  1. cd ~/kalibr_workspace/src
  2. git clone https://github.com/ethz-asl/Kalibr.git
  3. cd ..
  4. catkin build -DCMAKE_BUILD_TYPE=Release -j4
    编译完成

运行

每当准备运行kalibr时,在终端输入source ~/kalibr_workspace/devel/setup.bash加入环境变量。
可以用官方提供的数据集,测试一下。一个运行的例子:
kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag mydata.bag --bag-from-to 5 45

准备标定板

具体可参见:Calibration targets

kalibr提供的Aprilgrid的download链接,使用的是Google drive。
有需要的可以在下面百度云盘下载:
链接: https://pan.baidu.com/s/1PGuf0P_Ta8x9Qhod_byq3g 提取码: r4ts

关于标定板,我就使用的是电脑打开PDF显示的。用尺子量的2cm,但还是蛮怀疑这个准确度的。

april_6x6_80x80cm.yaml文件,只需要修改tagSize修改为你的tag长度。

target_type: ‘aprilgrid’ #gridtype
tagCols: 6 #number of apriltags
tagRows: 6 #number of apriltags
tagSize: 0.02 #size of apriltag, edge to edge [m] #只要改动这里就行
tagSpacing: 0.3 #ratio of space between tags to tagSize

安装MYNT-EYE-S-SDK

MYNT-EYE-S-SDK

安装ROS版

此处只写了安装ROS版的:(其他的就make install / make samples也挺简单的)

  1. cd ~/MYNT-EYE-S-SDK
  2. make ros

即可。

使用

打开相机:
source wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper mynteye.launch
打开 RViz 预览:
source wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper display.launch

标定双目

使用kalibr是标定采集好的.bag文件

使用MYNT采集数据

数据集要求:固定小觅相机,在相机视野中移动 aprilgrid 标定板。
注意关掉IR光(我怕打的光可能影响匹配),进入MYNT-EYE-S-SDK文件夹,进入wrappers/ros/src/mynt_eye_ros_wrapper/config/device/standard.yaml,应该这样就可以了。

使用kalibr对双目-IMU进行标定(小觅相机)
  1. 打开相机
    source wrappers/ros/devel/setup.bash
    roslaunch mynt_eye_ros_wrapper display.launch
  2. 调整频率
    kalibr推荐使用 4Hz 图像帧率,这里使用topic_tools/throttle降低接收频率

使用方法:throttle messages <intopic> <msgs_per_sec> [outtopic]

  • rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0 /mynteye/left/image_raw
  • rosrun topic_tools throttle messages /mynteye/right/image_raw 4.0 /mynteye/right/image_raw
  • 有的参考博客会直接改名为/left/right,这个时候标定完生成的yaml中,也会记录topic的名字,那在标定双目-IMU间关系时,注意topic统一即可。
  1. record
    rosbag record -O stereo_calib.bag /mynteye/left/image_raw /mynteye/right/image_raw
    假设保存在了~/路径下。

运行时大概长这样:
使用kalibr对双目-IMU进行标定(小觅相机)

标定

  1. source ~/kalibr_workspace/devel/setup.bash
  2. kalibr_calibrate_cameras --bag /home/jmliu/stereo_calib.bag --topics /mynteye/left/image_raw /mynteye/right/image_raw --models pinhole-radtan pinhole-radtan --target /home/jmliu/mynt_calib/april_6x6_80x80cm.yaml
    (注意修改路径)
  3. 可在当前路径得到三个文件

标定stereo-imu的关系

采集数据

数据集要求:在相机视野中固定 aprilgrid 标定板,移动相机,绕三轴(yaw-pitch-roll)旋转,且有上下、左右、推进推远、画8字的运动,运动不要过快。
最好是image 20hz, IMU 200hz,其他的也可以。
这里我是进入MYNT-EYE-S-SDK文件夹,进入wrappers/ros/src/mynt_eye_ros_wrapper/config/device/standard.yaml,修改的频率: 应该这就样可以了。

使用kalibr对双目-IMU进行标定(小觅相机)
  1. rosbag record -O stereo_imu_calib.bag /mynteye/left/image_raw /mynteye/right/image_raw /mynteye/imu/data_raw

标定

标定会使用到imu.yaml,主要包括频率、噪声、随机游走的值,应该是给定一个大概的初值。
我直接使用了kalibr里提供的imu_adis16448.yaml文件,现在想来应该有问题。我发现在MYNT-EYE-VINS-FUSION-Samples的MYNT-EYE-VINS-FUSION-Samples/config/mynteye/mynteye_stereo_imu_config.yaml中有关于imu parameters的设置。
使用kalibr对双目-IMU进行标定(小觅相机)
使用这个参数应该可以。

  1. kalibr_calibrate_imu_camera --target /home/jmliu/mynt_calib/april_6x6_80x80cm.yaml --cam /home/jmliu/camchain-homejmliustereo_calib.yaml --imu /home/jmliu/imu.yaml --bag /home/jmliu/stereo_imu_calib.bag --bag-from-to 2 45

其中需注意的点:

  • imu.yaml 中注意修改imu的topic。(这是imu_adis16448.yaml,按格式修改数值即可)
    使用kalibr对双目-IMU进行标定(小觅相机)
  • --bag-from-to 参数,如果数据集开始和最后有抬起相机的动作,请加上这个参数,去除这部分的数据。抬起放下的动作会对标定有一定影响。没有可不加。
  • 会使用到上面标定双目间关系的yaml
  • 注意修改路径。

结果

使用kalibr对双目-IMU进行标定(小觅相机)使用kalibr对双目-IMU进行标定(小觅相机)

主要参考教程

[1] SDK doc 官方教程

[2] 贺博的博客:Kalibr 标定双目内外参数以及 IMU 外参数
版权声明:本文为「白巧克力亦唯心」原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.****.net/heyijia0327/article/details/83583360

[3] 小觅相机运行VINS-Fusion(二)——Camera-IMU参数标定
版权声明:本文为「changshen_xu」原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.****.net/****_XCS/article/details/93524356