【车路协同】相机、激光雷达、雷达联合

本文档详细介绍了如何进行相机内参矩阵标定,包括使用usb_cam获取原始图像,通过camera_calibration包进行棋盘格标定,计算并保存矫正参数。此外,还提到了lidar-camera-fusion的相关步骤,涉及catkin_make的编译选项以及aruco相关库的安装。整个过程旨在确保传感器数据的准确融合。
摘要由CSDN通过智能技术生成

lidar-camera-fusion

(已修改,编译提示缺什么安装什么)

相机

相机标定:需要

联合标定:不需要 直接看最底下的图

conda太麻烦怎么办↓

alias deactivate='conda activate yolo5'

安装(跳过此步骤,为联合标定用)

  • 拷贝这个库并编译
    catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco;aruco_ros;aruco_msgs" -DCMAKE_CXX_FLAGS="-std=c++11"
    catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco_mapping;lidar_camera_calibration" -DCMAKE_CXX_FLAGS="-std=c++11"
    catkin_make -DCATKIN_WHITELIST_PACKAGES="" -DCMAKE_CXX_FLAGS="-std=c++11"
    

1.相机内参矩阵标定

1.1.准备

usb_cam

  • 查看相机编号
    ls /dev/video*
    
  • 查看相机参数
    v4l2-ctl -d /dev/video1 --all
    
  • 查看相机支持的分辨率及帧率
    v4l2-ctl -d /dev/video0 --list-formats-ext
    
  • 修改usb_cam/launch/usb_cam-test.launch
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="1920" />
    <param name="image_height" value="1080" />
    <param name="pixel_format" value="mjpeg" />
    # yuyv
    
    • image_width和image_height可以自主设置,不同分辨率对应不同标定结果。

camera_calibration

rosdep install camera_calibration

image_proc

rosdep install image_proc

棋盘格标定板

  • http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf

1.2.标定过程

  • 启动原始图像节点
    roslaunch usb_cam usb_cam-test.launch
    
  • 原始图像话题
    /usb_cam/image_raw
  • 启动标定程序
    rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.06 image:=/usb_cam/image_raw camera:=/usb_cam
    
    • size:有效方格顶点数量,有效方格顶点指的是四个方格公共交点
    • square:方格边长,单位m
  • 采集样本数据时,应使标定板以尽可能多的位置和角度出现在相机视野中,每一个位置下都要保持标定板不动直到标定窗口中的图像高亮。
  • 标定窗口中的各指标
    • X:表示标定板在视野中的左右位置
    • Y:表示标定板在视野中的上下位置
    • Size:标定板在视野中所占尺寸大小
    • Skew:标定板在视野中倾斜程度
  • 移动标定板时,标定窗口中的各指标增加。
  • 当CALIBRATE按钮亮起时,单击计算相机内参矩阵及矫正参数,并输出至终端,此过程可能需要1-2分钟。
  • 当SAVE按钮亮起时,单击将采集的样本图片和计算结果保存至/tmp/calibrationData.tar.gz。
  • 当COMMIT按钮亮起时,单击将标定结果写入~/.ros/camera_info/head_camera.yaml。
  • 标定文件如下
    image_width: 640
    image_height: 480
    camera_name: head_camera
    camera_matrix:
      rows: 3
      cols: 3
      data: [840.7753563595409, 0, 335.526788814159, 0, 840.5589177686173, 202.4963842754806, 0, 0, 1]
    distortion_model: plumb_bob
    distortion_coefficients:
      rows: 1
      cols: 5
      data: [-0.3129866465230049, 0.06509316296498795, -0.0008767908010405245, 0.001404493264689929, 0]
    rectification_matrix:
      rows: 3
      cols: 3
      data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
    projection_matrix:
      rows: 3
      cols: 4
      data: [799.3496704101562, 0, 337.8454315774161, 0, 0, 816.1021728515625, 200.2329448380315, 0, 0, 0, 1, 0]
    
  • 参数含义如下
    camera_matrix:
          [fx  0 cx]
      K = [ 0 fy cy] 为矫正畸变前的相机内参矩阵。
          [ 0  0  1]
    distortion_model:
      plumb_bob 为径向和切向畸变模型。
    distortion_coefficients:
      [k1, k2, t1, t2, k3] 为畸变系数。
    projection_matrix:
          [fx'  0  cx' Tx]
      P = [ 0  fy' cy' Ty]
          [ 0   0   1   0]
    其中:
          [fx'  0  cx']
      K'= [ 0  fy' cy'] 为矫正畸变后的相机内参矩阵。
          [ 0   0   1 ] 
    单目相机中Tx、Ty均为0,双目相机中[Tx Ty 0]'与两相机坐标转换相关。
    
  • 启动矫正图像节点
    ROS_NAMESPACE=usb_cam rosrun image_proc image_proc
    
  • 矫正图像话题
    /usb_cam/image_rect_color
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值