intel realsense D435i calibration

引言

准备工作

  1. ubuntu18.04(ros、opencv3(kalibr)、eigen and ceres(imu))
  2. librealsense-sdk2(库)
  3. realsense-ros(相机驱动)
  4. kalibr(eigen、opencv3 标定相机内参、imu与相机外参)
  5. code_utils—>imu_utils(ceres 标定imu)
  6. 注意:标定顺序:imu噪声、相机内参、imu与相机外参(前两个不分前后)

工具安装

  1. realsense:https://blog.csdn.net/qq_38337524/article/details/115311167
  2. kalibr:https://github.com/ethz-asl/kalibr/wiki/installation(ubuntu18.04选择kalibr-fix-18.04分支)
  3. imu_utils:https://blog.csdn.net/u012132666/article/details/123235930(先编译code_utils,在编译imu_utils,放在相同的工作空间)

imu标定

修改参数

使得IMU数据同步(针对vins_mono运行IMU时间戳混乱的情况imu message ins disorder)
具体步骤:
找到realsense-ros工作环境文件夹中的rs_camera.launch
位置:在 /realsense的catkin工作环境/src/realsense-ros/realsense2_camera/launch/
修改rs_camera.launch中的参数为“copy”或"linear_interpolation"

  <arg name="unite_imu_method"      default="copy"/>

安装imu标定工具

mkdir -p ~/imu_catkin_ws/src
cd ~/imu_catkin_ws/src
catkin_init_workspace
cd ~/imu_catkin_ws 
catkin_make
source ~/imu_catkin_ws/devel/setup.bash
  • 编译code_utils
cd ~/imu_catkin_ws/
git clone https://github.com/gaowenliang/code_utils.git
cd ~/imu_catkin_ws/
catkin_make 
  • 编译imu_utils
cd ~/imu_catkin_ws/src/
git clone https://github.com/gaowenliang/imu_utils.git
cd ~/imu_catkin_ws/src/
catkin_make 
  • 写标定参数文件
cd ~/imu_catkin_ws/src/imu_utils/launch
touch d435i_imu_calibration.launch
gedit d435i_imu_calibration.launch

复制A3.launch内容

<launch>

    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
    	<!--TOPIC名称和上面一致-->
        <param name="imu_topic" type="string" value= "/camera/imu"/>
        <!--imu_name 无所谓-->
        <param name="imu_name" type="string" value= "d435i"/>
        <!--标定结果存放路径-->
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <!--数据录制时间-min,至少为10min-->
        <param name="max_time_min" type="int" value= "120"/>
        <!--采样频率,即是IMU频率,采样频率可以使用rostopic hz /camera/imu查看,设置为200,为后面的rosbag play播放频率-->
        <param name="max_cluster" type="int" value= "200"/>
    </node>
    
</launch>

录制bag包

插上相机(usb3.0),打开驱动launch文件

roslaunch realsense2_camera rs_camera.launch

静止相机,不要动!!!

// 指定想要存放的路径,开始录制
rosbag record -O imu_calibration /camera/imu 

至少录制你刚刚设定的时间以上(max_time_min)
比如上面设定10,这里就要录足十分钟
录制完之后就按下ctrl+c,结束录制
你会发现当前目录有一个名为 imu_calibration.bag的文件

开始标定

  • 打开一个终端,在imu_catkin_ws下
source ~/imu_catkin_ws/devel/setup.sh 
roslaunch imu_utils d435i_imu_calibration.launch 
  • 再打开一个,到bag包的路径下
rosbag play -r 200 imu_calibration.bag  #以200倍速度进行播放,因为IMU数据录制时间很长,如果就按照默认速度播放会播放过很久!
  • 在imu_catkin_ws下出现好几个文件,关注imu_utils/data/d435i_imu_param.yaml
    关注以下数据(平均):分别是陀螺仪和加速度计 随机游走和 高斯白噪声的平均值,是IMU噪声模型中的两种噪声
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

相机标定

安装标定工具

kalibr:https://github.com/ethz-asl/kalibr/wiki/installation(ubuntu18.04选择kalibr-fix-18.04分支)
报错参考:https://blog.csdn.net/u010003609/article/details/104715475以及https://blog.csdn.net/ndwonduosk_/article/details/124718186

标定板yaml文件

标定板可打印,也可使用实验室现成的,测量格子并写成yaml文件,以下是我的

target_type: 'checkerboard' #gridtype
targetCols: 8               #number of internal chessboard corners
targetRows: 11               #number of internal chessboard corners
rowSpacingMeters: 0.03      #size of one chessboard square [m]
colSpacingMeters: 0.03      #size of one chessboard square [m]

录制bag包

  • 打开2个终端,启动realsense和rviz(方便观察相机视野)
source devel/setup.bash
roslaunch realsense2_camera rs_camera.launch
rviz
  • 在打开一个终端,修改话题
// 20为相机帧数,大于6,小于90,选择20
rosrun topic_tools throttle messages /camera/color/image_raw 20 /color
  • 在打开一个终端,录制2min左右
rosbag record -O camd435i /color

开始标定

在Kalibr的工作空间,执行source devel/setup.sh

//26-100 指的是录制的第26秒到100秒这段时间,pinhole-radtan指的是针孔相机模型和畸变模型
kalibr_calibrate_cameras --target /位置/文件名.yaml --bag /位置/camd435i.bag --bag-from-to 26 100 --models pinhole-radtan --topics /color --show-extraction

标定完之后就可以发现当前目录下出现了三个文件,就是标定的结果。
camchain-…camd435i.yaml
results-cam-…camd435i.txt
report-cam-…camd435i.pdf

关注yaml文件,intrinsic 是内参
distortion_coeffs 是畸变参数

cam0:
  cam_overlaps: []
  camera_model: pinhole
  distortion_coeffs: [0.11114194921960645, -0.2171600270591326, -0.0037942616908056637,
    -0.004000340562604045]
  distortion_model: radtan
  intrinsics: [579.5589935482029, 578.1762234104125, 326.6772381912598, 243.3955018655041]
  resolution: [640, 480]
  rostopic: /color

imu、相机标定外参

录制bag包

  • 打开一个终端,调节imu和相机话题的频率并修改话题
rosrun topic_tools throttle messages /camera/color/image_raw 20.0 /color
rosrun topic_tools throttle messages /camera/imu 200.0 /imu
  • 再打开一个终端,开始录包(你想保存bag包的路径下)
rosbag record -O dynamic /color /imu

文件准备

  • 文件准备:一个是相机的标定文件yaml,一个是IMU的标定文件yaml,一个是录制的数据包bag
  • camchain-…camd435i.yaml
cam0:
 cam_overlaps: []
 camera_model: pinhole
 distortion_coeffs: [0.11114194921960645, -0.2171600270591326, -0.0037942616908056637,
   -0.004000340562604045]
 distortion_model: radtan
 intrinsics: [579.5589935482029, 578.1762234104125, 326.6772381912598, 243.3955018655041]
 resolution: [640, 480]
 rostopic: /color
  • 新建imu.yaml
#Accelerometers
accelerometer_noise_density: 1.86e-03   #Noise density (continuous-time)
accelerometer_random_walk:   4.33e-04   #Bias random walk

#Gyroscopes
gyroscope_noise_density:     1.87e-04   #Noise density (continuous-time)
gyroscope_random_walk:       2.66e-05   #Bias random walk

rostopic:                    /imu0      #the IMU ROS topic
update_rate:                 200.0      #Hz (for discretization of the values above)

开始标定

在kalibr工作目录下执行 source devel/setup.sh

kalibr_calibrate_imu_camera --target 标定板位置/标定板名称.yaml --cam 相机标定位置/相机标定名称.yaml --imu imu.yaml --bag dynamic.bag --bag-from-to 30 110 --imu-models scale-misalignment --max-iter 15 --show-extraction

生成很多文件,主要关注camchain-imucam-dynamic.yaml

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值