保姆级教程:在Ubuntu 20.04 + ROS Noetic下,用usb_cam搞定棋盘格标定(附打印标定板PDF)
零成本实战:Ubuntu 20.04+ROS Noetic下USB摄像头标定全指南
当你第一次尝试让机器人"看清"世界时,相机标定就像给机器人的眼睛配一副精准的眼镜。想象一下,如果人类的眼睛看到的棋盘格都是扭曲的,我们永远无法准确判断物体距离——这正是未经标定的摄像头面临的困境。本教程将带你用最经济的方案(总成本不超过一张A4纸),完成从驱动安装到参数调优的全流程。
1. 环境配置:搭建ROS视觉工作台
在开始标定前,我们需要准备一个稳定的ROS开发环境。Ubuntu 20.04 LTS作为长期支持版本,与ROS Noetic的组合堪称经典搭配。打开终端,让我们一步步搭建这个视觉工作台:
# 安装USB摄像头驱动包 sudo apt-get install ros-noetic-usb-cam # 安装相机标定功能包 sudo apt-get install ros-noetic-camera-calibration注意:如果遇到依赖问题,建议先运行
sudo apt update更新软件源列表。国内用户可使用清华或中科大镜像加速下载。
安装完成后,验证摄像头是否被系统识别:
ls /dev/video*正常情况下会显示类似/dev/video0的设备节点。若未显示,尝试重新插拔USB接口或检查摄像头兼容性。
常见问题排查表:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无视频设备 | 驱动未加载 | 执行sudo modprobe uvcvideo |
| 图像卡顿 | USB带宽不足 | 改用USB3.0接口或降低分辨率 |
| 色彩异常 | 格式不支持 | 在launch文件中修改pixel_format |
2. 低成本标定板制作秘籍
专业标定板动辄数百元,而我们可以用以下方案实现零成本:
- PDF生成:访问 棋盘格生成网站 下载11x8的棋盘格PDF
- 打印技巧:
- 使用激光打印机(比喷墨精度更高)
- 关闭"适应边框"选项确保1:1打印
- 用游标卡尺测量打印后的方格边长应为设计值(如20mm)
- 平板方案:将PDF直接显示在高清平板上,亮度调至最高
# 检查标定板尺寸参数(示例) rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.02参数说明:
--size 11x8表示内部角点数量(横向11个,纵向8个)--square 0.02每个方格实际边长为0.02米(2厘米)
3. 标定实战:像游戏一样完成校准
启动标定程序后,你会看到一个交互界面。这其实是个"进度条游戏"——需要通过不同方位的移动让所有指标变绿:
roslaunch usb_cam usb_cam-test.launch rosrun camera_calibration cameracalibrator.py \ --size 11x8 \ --square 0.02 \ image:=/usb_cam/image_raw高效移动策略:
- X轴移动:左右平移标定板,覆盖整个画面宽度
- Y轴移动:上下升降标定板,注意保持倾斜度<30°
- Size变化:前后移动产生距离变化(建议40cm→120cm)
- Skew调整:绕Z轴旋转15°~75°
专业提示:在自然光环境下操作,避免反光。每个位置保持2-3秒直到进度条增长。
当所有进度条变绿后,点击"CALIBRATE"按钮。这个过程可能需要3-5分钟,期间不要移动摄像头。完成后重点关注两个参数:
- Reprojection error(重投影误差):应<0.15
- Linear error(线性误差):应<0.1
4. 参数应用与效果验证
标定生成的ost.yaml文件包含摄像头内在参数和畸变系数。让我们创建功能包来应用这些参数:
cd ~/catkin_ws/src catkin_create_pkg my_camera_config roscpp mkdir -p my_camera_config/config mkdir -p my_camera_config/launch示例launch文件配置:
<launch> <node name="usb_cam" pkg="usb_cam" type="usb_cam_node"> <param name="camera_info_url" value="file://$(find my_camera_config)/config/ost.yaml"/> </node> </launch>验证标定效果时,广角镜头的差异最明显。安装image_proc进行实时矫正:
ROS_NAMESPACE=usb_cam rosrun image_proc image_proc在rqt_image_view中对比原始图像和矫正后图像,边缘的桶形畸变会得到明显改善。
最后分享一个实用技巧:将标定板固定在硬纸板上,用手机支架固定摄像头,这样单人操作时能保持稳定。记得标定过程中摄像头对焦环要用胶带固定,防止意外移动。
