这里使用了OpenCV camera calibration
sudo apt install ros-$ROS_DISTRO-camera-calibration # https://github.com/ros-perception/image_pipeline/tree/melodic源码安装 123
选择对应的ROS版本,新建一个工作空间,把camera-calibration拖进去编译即可。
可以自己生成生成标定板网站,也可以直接用这个
rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.02 image:=/camera2/camera/color/image_raw 1
–size 9x6 表示棋盘格按照角点(两个黑色块相接的地方)为9列6行
–square 0.02 表示每个黑白块的边长为2cm
image:=/camera/rgb/image_raw 设置接收的rgb图像话题
更多参数参考:http://wiki.ros.org/camera_calibration
这里还有个报错,显示找不到cameracalibrator这个可执行文件,因为这个文件是从windows拖到车里的,所以这些python文件没有可执行权限,所以运行失败
chmode +x xxx.py # 添加执行权限 1 calibration file应该类似如下
image_width: 640 image_height: 480 # The camera name is fixed. The color camera is rgb_camera, the depth/IR camera name is ir_camera camera_name: rgb_camera camera_matrix: rows: 3 cols: 3 data: [517.301, 0, 326.785, 0, 519.291, 244.563, 0, 0, 1] distortion_model: plumb_bob distortion_coefficients: rows: 1 cols: 5 data: [-0.41527, 0.31874, -0.00197, 0.00071, 0] rectification_matrix: rows: 3 cols: 3 data: [0.999973, 0.00612598, -0.00406652, -0.00610201, 0.999964, 0.00588094, 0.0041024, -0.00585596, 0.999974 ] projection_matrix: rows: 3 cols: 4 data: [517.301, 0, 326.785, -25.3167, 0, 519.291, 244.563, 0.282065, 0, 0, 1, 0.0777703]
123456789101112131415161718192021生成压缩包/tmp/calibrationdata.tar.gz',其中的 ost.yaml就是标定结果。
[image] width:800 height:600 [narrow_stereo] camera matrix 375.192406 0.000000 400.541492 0.000000 376.253860 317.513124 0.000000 0.000000 1.000000 distortion 0.131676 -0.094047 0.004399 -0.004491 0.000000 rectification 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 projection 786.365845 0.000000 -8.585413 0.000000 0.000000 862.199036 -9.969647 0.000000 0.000000 0.000000 1.000000 0.000000
12345678910111213141516171819202122232425Kalibr安装参考官网,下载好依赖即可,安装过程可能会出现内存不足情况,且编译时间很久。
标定板下载–Aprilgrid 6x6 0.8x0.8 m (A0 page)
标定前, 注意测量格子的尺寸信息填入yaml文件
target_type: 'aprilgrid' #gridtype tagCols: 6 #number of apriltags---6列 tagRows: 6 #number of apriltags---6行 tagSize: 0.088 # size of apriltag, edge to edge [m]--a tagSpacing: 0.3 #ratio of space between tags to tagSize--a/b codeOffset: 0 #code offset for the first tag in the aprilboard 123456
可以使用下面命令自定义一个Aprilgrid标定板(前提安装好kalibr)
rosrun kalibr kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT] 1
报错:kalibr_create_target_pdf: command not found,因为执行ROS命令没有加rosrun kalibr
# 这样子实际大小在一张A4左右 rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.025 --tspace 0.3 12
参考
将ros topic的频率降低到4hz左右进行采集
ROS 提供了改变 topic 发布频率的节点throttle, 指令如下
# 使用方法rosrun topic_tools throttle messages <intopic> <msgs_per_sec> [outtopic] rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0 /left rosrun topic_tools throttle messages /mynteye/right/image_raw 4.0 /right 123456
录制数据
rosbag record -O stereo_calibra.bag /left /right- 1
官网给了这个示例,可以先跑下这个看看对不对
source ros_ws/kalibr/devel/setup.bash # 径向和切向畸变 rosrun kalibr kalibr_calibrate_cameras --bag stereo_calibra.bag --topics /left /right --models pinhole-radtan pinhole-radtan --target april_6x6_80x80cm_A0.yaml # 或者采用 pinhole-equi 模型,对畸变大的相机效果不错----全景畸变 rosrun kalibr kalibr_calibrate_cameras --bag stereo_calibra.bag --topics /left /right --models pinhole-equi pinhole-equi --target april_6x6_80x80cm_A0.yaml 12345678
该工具必须提供以下输入:
–bag filename.bag关于支持的相机型号模型
Kalibr支持以下投影模型
pinhole camera model (pinhole)1-针孔相机模型The intrinsics vector contains all parameters for the model:
fu, fv: focal-length焦距pu, pv: principal point主点xi: mirror parameter (only omni)镜像参数xi, alpha: double sphere model parameters (only ds)双球模型参数alpha, beta: extended unified model parameters (only eucm)Distortion models畸变模型
radial-tangential (radtan)*-径向切向畸变请注意,主题 (–topics) 和相机/畸变模型 (–model) 的顺序必须匹配并确定输出中的内部相机编号。
可以使用以下方式运行校准:
kalibr_calibrate_cameras --bag [filename.bag] --topics [TOPIC_0 ... TOPIC_N] --models [MODEL_0 ... MODEL_N] --target [target.yaml] 1
由于对焦距的初始猜测错误,在处理前几张图像后,优化可能会出现偏差。在这种情况下,只需尝试重新启动校准,因为初始猜测是基于随机选择的图像。
使用 help 参数可以获得有关选项的更多信息:
kalibr_calibrate_cameras --h 1
示例包文件的示例命令(在此处下载):
# 就是要给出配置文件yaml和bag的路径! rosrun kalibr kalibr_calibrate_cameras --target april_6x6.yaml --models pinhole-radtan pinhole-radtan --topics /cam0/image_raw /cam1/image_raw --bag cam_april.bag --bag-freq 10.0 1234567
大车没电了,下次补下
参考
命令行窗口输入 cameraCalibrator
或在APP中找到图像处理和计算机视觉,点击Camera Calibrator
若标定图为棋盘格:
更改参数,因为这里是20mm的标定板
CAMERA MODEL 栏中
Camera Model:选择 Standard
Options:
选择 2 Coefficients,3 Coefficients 一般用于鱼眼相机,工业相机一般不选择此项
勾选 Tangential Distortion,用以计算切向畸变
不勾选 Skew,若勾选,标定相机内参结果将出现参数 s ,即内参的第一行是 [fx, s, u0] ,这将会与我们使用的 OpenCV 进行测距的参数不同
然后点击校准
拖拽红线,让误差尽可能小,抛弃哪些大于红线的图像
最后输出标定结果
Camera Intrinsics# 相机内参 IntrinsicMatrix: [3×3 double] 焦距 FocalLength: [fx、fy] PrincipalPoint: [cx、cy] Skew: 0# 倾斜系数,描述了图像的x轴和y轴之间的角度偏差,一般情况下为0 RadialDistortion: [k1、k2] #径向畸变参数 TangentialDistortion: [p1、p2] # 切向畸变参数, ImageSize: [600 800] Camera Extrinsics# 相机外参 RotationMatrices: [3×3×52 double] TranslationVectors: [52×3 double] Accuracy of Estimation MeanReprojectionError: xxx# 平均重投影误差 123456789101112131415
最终校准结果
Camera Intrinsics IntrinsicMatrix: [3×3 double] FocalLength: [371.4645 372.0877] PrincipalPoint: [402.1875 313.9287] Skew: 0 RadialDistortion: [0.1160 -0.0816] TangentialDistortion: [0.0026 -0.0053] ImageSize: [600 800] Camera Extrinsics RotationMatrices: [3×3×19 double] TranslationVectors: [19×3 double] Accuracy of Estimation MeanReprojectionError: 0.1345 ReprojectionErrors: [54×2×19 double] ReprojectedPoints: [54×2×19 double] Calibration Settings NumPatterns: 19 WorldPoints: [54×2 double] WorldUnits: 'millimeters' EstimateSkew: 0 NumRadialDistortionCoefficients: 2 EstimateTangentialDistortion: 1 estimationErrors = cameraCalibrationErrors - 属性: IntrinsicsErrors: [1×1 intrinsicsEstimationErrors] ExtrinsicsErrors: [1×1 extrinsicsEstimationErrors]
123456789101112131415161718192021222324252627相关知识
掌握MATLAB求解非齐次线性方程组:从理论到实践
嫁接植物(从理论到实践)
MATLAB界面设计全攻略:从基础入门到高级应用
金湖大讲堂·明理丨农学院开展“利用生物多样性促进农业可持续发展:从理论到现实”学术讲座
揭秘UI设计落地全攻略:从理论到实践的完美转化,让你的设计梦想触手可及!
如何实现一个高效的全景视频拼接系统?请详细描述从相机标定到颜色均衡处理的整个工作流程。
模态分析子空间识别方法实践指南:高效掌握系统辨识技术
探索花境设计之道:从理论到实践的全攻略!
探索MATLAB支持向量机分类:从入门到精通
matlab绘制花朵
网址: ROS、Kalibr与MATLAB相机标定教程:从理论到实践 https://m.huajiangbk.com/newsview1326474.html
上一篇: (已修正精度 1mm左右)Rea |
下一篇: Lidar与imu外参标定 |