手把手教你用cam_lidar_calibration标定自己的VLP-16与海康相机(从录制bag到评估结果)

张开发
2026/4/16 10:35:38 15 分钟阅读

分享文章

手把手教你用cam_lidar_calibration标定自己的VLP-16与海康相机(从录制bag到评估结果)
实战指南VLP-16激光雷达与工业相机的精准标定全流程在自动驾驶和机器人感知系统中激光雷达与相机的联合标定是确保多传感器数据准确融合的基础环节。本文将带您完成从硬件准备到结果评估的完整标定流程特别针对VLP-16激光雷达和海康威视相机的组合场景。1. 环境准备与硬件检查1.1 基础环境配置确保您的系统满足以下要求Ubuntu 20.04 LTSROS Noetic完整版Python 3.8或更高版本OpenCV 4.2及以上创建工作空间并获取标定工具mkdir -p ~/calib_ws/src cd ~/calib_ws/src git clone https://github.com/acfr/cam_lidar_calibration cd .. catkin_make -DPYTHON_EXECUTABLE/usr/bin/python31.2 硬件连接验证首先确认传感器正常工作# 查看激光雷达话题 rostopic list | grep points # 查看相机话题 rostopic list | grep image常见问题排查如果缺少camera_info话题需要手动发布确保激光雷达点云包含强度信息XYZIR格式检查传感器时间同步状态2. 标定板制作与数据采集2.1 标定板规格要求推荐使用以下参数的棋盘格棋盘格尺寸7x9内部角点6x8单个方格边长50mm材质高对比度哑光表面物理尺寸至少300x400mm2.2 数据采集最佳实践采集数据时需注意保持标定板与传感器距离1.5-3米标定板倾斜角度约45度每个位姿静止采集3-5秒覆盖传感器视野的不同区域录制rosbag的命令示例rosbag record -O calibration_data.bag /velodyne_points /camera/image_raw /camera/camera_info3. 参数配置与标定执行3.1 params.yaml关键配置修改cam_lidar_calibration/cfg/params.yaml中的参数camera: topic: /camera/image_raw info_topic: /camera/camera_info lidar: topic: /velodyne_points calibration: checkerboard: rows: 6 cols: 8 square_size: 0.053.2 启动标定流程依次执行以下命令# 启动标定主程序 roslaunch cam_lidar_calibration run_optimiser.launch import_samples:false # 播放采集的数据包 rosbag play calibration_data.bag -r 0.2 # 如需手动发布相机信息 rosrun cam_lidar_calibration cam_info在RViz中操作设置Fixed Frame为激光雷达坐标系调整点云显示范围聚焦于标定板使用rqt工具截取有效区域采集至少5个不同位姿后点击Optimize4. 结果评估与应用4.1 标定质量评估运行评估命令查看结果roslaunch cam_lidar_calibration assess_results.launch \ csv:$(rospack find cam_lidar_calibration)/data/your_calibration.csv \ visualise:true关键评估指标平均重投影误差应2像素各轴平移参数稳定性旋转角度的合理性4.2 标定结果应用将获得的标定参数应用到您的感知系统import numpy as np # 标定结果示例 calib_params { rotation: [-1.5809, 0.0041, -1.4960], # roll, pitch, yaw (rad) translation: [0.0706, 0.0141, -0.1139] # x, y, z (m) } def create_transform_matrix(params): 将标定参数转换为4x4变换矩阵 from scipy.spatial.transform import Rotation r Rotation.from_euler(xyz, params[rotation]).as_matrix() t np.array(params[translation]) tf np.eye(4) tf[:3,:3] r tf[:3,3] t return tf5. 高级技巧与问题排查5.1 提升标定精度的技巧在不同光照条件下采集数据使用更大尺寸的标定板增加数据采集位姿数量建议9-12个确保标定板边缘清晰可见5.2 常见错误解决方案问题现象可能原因解决方案点云无法显示坐标系设置错误检查RViz中Fixed Frame设置标定板检测失败棋盘格参数不匹配确认params.yaml中的行列数优化不收敛数据质量差重新采集更清晰的数据重投影误差大传感器同步问题检查时间戳同步状态对于需要更高精度的场景可以考虑使用AprilTag等更稳定的标定靶标引入IMU进行时间同步校准采用多位置联合优化方法

更多文章