使用kalibr_calibration标定相机(realsense)和imu(h7min)
vslam-evaluation/VINS/Installation documentation/4.IMU和相机联合标定kalibr_calibration.md at master · DroidAITech/vslam-evaluation · GitHub
目录
1.kalibr安装
1.1安装依赖项
1.2创建工作空间
1.3下载kalibr并编译
1.4设置环境变量
2.准备标定板
3.配置驱动和打开realsense摄像头
3.1更新系统
3.2注册服务器公钥
3.3添加Intel RealSense仓库
3.4安装realsense SDK
3.5测试RealSense D435/D435i
3.6ROS环境下的配置
3.7启动ROS节点并测试摄像头
3.8查看相机内参等信息通过rostopic echo /camera/color/data_raw
4.用imu_utils标定IMU数据
注意:
5.录制imu和相机的bag包
6.相机、imu、标定板yaml文件
1.kalibr安装
1.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
sudo pip install python-igraph --upgrade
1.2创建工作空间
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/kinetic/setup.bash
catkin init
catkin config --extend /opt/ros/kinetic
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
1.3下载kalibr并编译
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4
1.4设置环境变量
source ~/kalibr_workspace/devel/setup.bash
2.准备标定板
标定板可以用 kalibr 提供的pdf 下载地址为:https://github.com/ethz-asl/kalibr/wiki/downloads, 由于Aprilgrid能提供序号信息, 能够防止姿态计算时出现跳跃的
情况,所以这里采用Aprilgrid 6x6 0.8x0.8 m (A0 page)进行标定。
我下载了这个pdf, 打印成了A4纸大小,在标定前, 注意测量格子的尺寸信息填入yaml文件, 尺寸信息具体是哪些数据可以看看kalibr的说明,说明的网址为:
https://github.com/ethz-asl/kalibr/wiki/calibration-targets
3.配置驱动和打开realsense摄像头
3.1更新系统
sudo apt-get update && sudo apt-get upgrade
3.2注册服务器公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
3.3添加Intel RealSense仓库
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
3.4安装realsense SDK
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
3.5测试RealSense D435/D435i
realsense-viewer
3.6ROS环境下的配置
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
sudo apt-get install ros-$ROS_DISTRO-realsense2-description
3.7启动ROS节点并测试摄像头
roslaunch realsense2_camera rs_camera.launch
//see images
rosrun image_view image_view image:=/camera/color/image_raw
3.8查看相机内参等信息通过rostopic echo /camera/color/data_raw
4.用imu_utils标定IMU数据
双目相机 -- IMU联合标定_双目+imu 如何标定-CSDN博客
使用Kalibr标定相机和IMU(ZED+px4)外参-CSDN博客(我参考了这篇博客的imu)
sudo apt-get install libdw-dev
4.1下载imu_utils和code_utils,并将imu_utils和code_utils放在工作空间下。
code_utils.zip
imu_utils.zip
注意:
1. code_utils 依赖 ceres库, 需要先全局安装ceres库,okvis等内部的ceres不行。
2. 由于imu_utils依赖code_utils,所以先把code_utils放在工作空间的src下面,然后编译。
3. 编译code_utils 报错, fatal error: backward.hpp: No such file or directory
解决办法: 在code_utils下面找到sumpixel_test.cpp,修改#include “backward.hpp” 为
#include “code_utils/backward.hpp” 即可编译成功。
cd catkin_ws
catkin_make
4.2编译成功以后,再把imu_utils放到工作空间的src下面,进行编译。
cd catkin_ws
catkin_make
4.3让IMU静止不动两个小时,录制IMU的bag.
cd MYNT-EYE-D-SDK
source wrappers/ros/devel/setup.bash
roslaunch mynteye_wrapper_d display.launch
rosbag record /mynteye/imu/data_raw -O imu.bag
4.4两个小时以后按Ctrl+C完成录制。
4.5获得这四个参数
Gyr:
avg-axis:
gyr_n: 3.1820671461855504e-03
gyr_w: 3.0693398103399251e-05
Acc:
avg-axis:
acc_n: 2.6449533258549235e-02
acc_w: 7.2111910796954259e-04
5.录制imu和相机的bag包
rosbag record /camera/color/image_raw /mavros/imu/data_raw -O imu_camera.bag
注意:1.录制bag包的时候imu的频率应为200hz左右
2.录制的时候要注意按照官方的说法-充分激励IMU- 绕3个轴旋转和3个方向的平移,这里有个官方视频介绍,打不开的话有人把它搬到B站上了https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY
3.三个topic按照自己的情况改。另外可以再加两个(非必要): /camera/left/camera_info /camera/right/camera_info
4.录制时间大于30min
6.相机、imu、标定板yaml文件
相机
cam0:
cam_overlaps: []
camera_model: "pinhole" # 相机模型,kalibr也支持鱼眼模型
distortion_coeffs: [0.0, 0.0, 0.0, 0.0] # 相机畸变参数
distortion_model: "radtan" # 畸变模型
intrinsics: [603.3211669921875, 602.70361328125, 324.1352844238281, 242.0079803466797] # 内参
resolution: [640, 480] # 分辨率
rostopic: "/camera/color/image_raw" # ROS话题
imu
rostopic: /mavros/imu/data_raw
update_rate: 195 #Hz
accelerometer_noise_density: 0.1 #VINS默认 0.2
accelerometer_random_walk: 0.03 #0.05
gyroscope_noise_density: 0.02 #0.02
gyroscope_random_walk: 0.00004 #4e-5
target
#example for aprilgrid
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 a=0.02cm b=0.006cm
7.运行获取结果
rosrun kalibr kalibr_calibrate_imu_camera --imu /home/fhzn/calib/imu.yaml --cam /home/fhzn/calib/camera.yaml --target /home/fhzn/calib/target.yaml --bag /home/fhzn/calib/imu_camera.bag --show-extraction
使用kalibr标定双目相机以及IMU--安装运行标定全过程以及踩坑记录-CSDN博客