ubuntu 20.04 ros:noetic 传感器:D455
//安装依赖
sudo apt-get install libv4l-dev
//创建工作空间
mkdir -p ~/kalibr_ws/src
cd ~/kalibr_ws/src
//安装编译kalibr(注意我这里选择的是noetic版本的)
git clone https://github.com/ethz-asl/Kalibr.git
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release
Downloads · ethz-asl/kalibr Wiki · GitHub
打印标定板,放在A4纸上打印出来,贴在固定白墙上。
原始pdf格子参数为:
调整后格子参数为:
千万要自己测量大格子边长,即tagSize
tagSpacing:小格子的边长/大格子的边长
touch checkerboard.yaml
里面内容填写如下:
target_type: 'checkerboard' #gridtype
targetCols: 8 #number of internal chessboard corners
targetRows: 5 #number of internal chessboard corners
rowSpacingMeters: 0.030 #size of one chessboard square [m]
colSpacingMeters: 0.030 #size of one chessboard square [m]
(1)打开双目
(2)打开imu的加速度计和陀螺仪
并合并为一个topic
(3)传感器同步
默认开始IR结构光时,双目图像会有很多点,这些点可能对标定有影响,所以使用时需要关闭结构光。
如果你使用的是jetson开发板使用方法一会出现很多错误(无法安装pyqt5),建议使用方法二
roslaunch realsense2_camera rs_camera.launch
sudo apt-get install ros-noetic-rqt-reconfigure
rosrun rqt_reconfigure rqt_reconfigure
然后在配置中做修改,可以看文章底部参考链接,网上有很多教程,这里就不详细说了
在上面修改了的文件基础上在
/camera/stereo_module/emitter_enabled: 0
/camera/stereo_module/emitter_enabled: 1
将rs_camera.launch(上面的修改保存)备份,然后将里面的相关话题修改,需要改的有以下:
启动相机
roslaunch realsense2_camera rs_camera.launch
打开rviz,将左右目和彩色话题/camera/color/image_raw ,/camera/infra1/image_rect_raw 和/camera/infra2/image_rect_raw订阅出来:
然后先将图像发布频率降低到4Hz
rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color
rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 4.0 /infra_left
rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 4.0 /infra_right
开始录制
rosbag record -O mult_cam_d455 /infra_left /infra_right /color
然后相机的移动如下:首先前后、左右、上下各两个来回,然后俯仰、滚转、偏航三个方向两个来回,注意移动不要太快、需要保证标定板始终出现在图像中.
可参考:
https://www.youtube.com/watch?v=puNXsnrYWTY&app=desktop
将bag、checkerboard.yaml放在kalibr_ws路径下
cd kalibr_ws
source devel/setup.bash
rosrun kalibr kalibr_calibrate_cameras --target checkerboard.yaml --bag mult_cam_d455.bag --models pinhole-radtan pinhole-radtan --topics /infra_left /infra_right /color
参数解释:
--target checkerboard.yaml 表示标定板的配置文文件,注意如果选择棋盘,targetCols和targetRows表示的是内测点的数量。
--bag mult_cam_d455.bag 录制的包
--models pinhole-radtan pinhole-radtan 表示三个设想头的相机模型和及便模型
—topics /infra_left /infra_right /color表示三个摄像头对应的拍摄的数据话题
–show-extraction表示显示检测特征点的过程,这些参数可以相应的调整。
可以使用rosbag info 来参看录制的包的信息(我标定的时候没有用)
Camera-system parameters:
cam0 (/infra_left):
type:
distortion: [ 0.0096964 -0.00566172 0.00115569 0.0018209 ] +- [0.00100847 0.00096696 0.00020295 0.00028872]
projection: [433.54980966 435.68316368 429.8010202 241.64337826] +- [0.45833065 0.45672505 0.37916978 0.32418984]
reprojection error: [0.000048, -0.000008] +- [0.552363, 0.400148]
cam1 (/infra_right):
type:
distortion: [ 0.01410159 -0.00779497 0.00039713 -0.00319093] +- [0.00099843 0.00096758 0.00019239 0.00027278]
projection: [433.16074225 435.09128217 421.40889107 241.01116892] +- [0.44783224 0.444526 0.36506732 0.30355817]
reprojection error: [-0.000058, 0.000026] +- [0.575817, 0.412169]
baseline T_1_0:
q: [ 0.00066354 -0.00968669 -0.00047014 0.99995275] +- [0.00067496 0.00102756 0.0001445 ]
t: [-0.3950731 0.0000782 0.00416542] +- [0.00015362 0.00012994 0.00045187]
起中 reprojection error如果在1个像素以下就算合理了,这里我的标定结果为0.03多,说明比较准确了
参考:
Realsence D455标定并运行Vins-Fusion_realsense 自动标定_呼叫江江的博客-CSDN博客
D435关闭结构光(ubuntu条件下)_d435guanbi 结构光_大山同学的博客-CSDN博客
D455相机标定 双目+imu(二)_全日制一起混的博客-CSDN博客