ROS机器人开发实践 胡春旭 用camera_calibration标定单目摄像头 填坑指南

本文记录了使用ROS进行单目摄像头标定的过程,重点在于解决了一个特定问题。标定完成后,将camera_calibration.yaml文件放置于指定目录,并调整了usb_cam_with_calibration.launch文件中的image_width和image_height参数,从而成功避免了运行时的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

楼主的运气比较好,标定过程只遇到一个坑

流程

在标定完毕后,将标定好的文件更名为:camera_calibration.yaml
粘贴到:~/ros_exploring/robot_perception/robot_vision目录下
标定好的文件内容如图(这是我自己的标定结果)
在这里插入图片描述
此处要修改camera_name 为 head_camera

运行roslaunch robot_vision usb_cam_with_calibration.launch
报错:
在这里插入图片描述这个鸟问题困扰我好几天,各种百度google也没找到靠谱的解决办法,后来自己反复看胡大神的源代码,原来是这个鸟文件出了问题:
在这里插入图片描述就是发黄的那个鸟(usb_cam_with_calibration.launch)
在这里插入图片描述以楼主的第6感(灵不灵不知道)此处似乎存在端倪,因为usb_cam.launch文件的内容

### ROS使用单目摄像头进行手眼标定机器人操作系统(ROS)环境中,针对单目摄像机的手眼标定可以通过特定工具实现。对于单目相机而言,虽然其提供的深度信息不如双目或多传感器组合丰富,但在某些应用场景下依然能够满足需求。 #### 使用 `camera_calibration` 完成初步校准 为了确保后续手眼关系建立的准确性,首先需要对单目相机本身做内参校正。可以借助于官方提供的[camera_calibration](http://wiki.ros.org/camera_calibration)软件来获取相机内部参数矩阵K和畸变系数D[^3]: ```bash roslaunch camera_calibration cameracalibrator.py --size 8x6 --square 0.1 image:=/my_mono_camera/image_raw camera:=/my_mono_camera ``` 上述命令假设棋盘格尺寸为每边间隔0.1米,大小为8*6个交差点;实际操作时应根据实际情况调整这些数值。 #### 利用手眼标定算法计算外部变换矩阵T 当获得精确的相机模型之后,则可进一步实施手眼标定过程。这里推荐采用由Tsai提出的经典方法或是Axelsson等人改进后的方案。具体来说,在ROS环境下可通过调用专门设计用于此目的的数据集收集流程并结合相应的求解函数来达成目标。例如,[hand_eye_calib_camodocal](https://github.com/jhu-lcsr/hand_eye_calib_camodocal)项目就提供了这样一个完整的解决方案[^2]。 - 记录每次移动前后关节角度变化量Δθ以及对应时刻拍摄到的画面I_k。 - **优化求解部分** - 基于所记录的信息构建最小二乘问题,并通过迭代方式寻找最优解——即描述两者之间相对位姿的最佳估计值R,t (旋转和平移向量)。 值得注意的是,尽管以上介绍主要围绕“眼睛在外”的情形展开讨论,但对于“眼睛在上”的情况同样适用,只需相应修改坐标系定义即可适应不同的物理布局形式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值