Bootstrap

basler相机ROS硬触发程序补充camera_info话题


相机型号:acA1920-40gc(GigE接口)
触发方式:GNSS的PPS硬触发
运行环境:Ubuntu20.04 (64-Bit)
程序依赖:pylon Release 6.3.0


0 准备工作

先调试出来相机外部硬触发,并且可以由ROS采集图像。
ROS外部硬触发参考: basler相机外部硬触发,转换图像格式并发送到ROS下的topic

1 参数准备

相机标定的内参,用于填充D、K,从官方文档中可以知道D是畸变参数,K是相机内参矩阵。
标定方法:
matlab标定: Ubuntu20.04 ROS读取basler相机图像步骤。MATLAB2021b标定basler单目相机

2 代码(C++)

2.1 主要流程:

  1. 将参数分别定义到矩阵
  2. 写入sensor_msgs/CameraInfo Message
  3. 发布话题camera_info

2.2 主要代码

sensor_msgs::CameraInfo cam_info;
ros::Publisher pub_cam_info = n.advertise<sensor_msgs::CameraInfo>("camera_info", 100);

//定义camera_info的Header
cam_info.header.frame_id = "camera";  
cam_info.header.stamp = ros::Time::now();

//定义camera_info的参数
cam_info.height = ptrGrabResult->GetHeight();
cam_info.width = ptrGrabResult->GetWidth();
cam_info.distortion_model = "plumb_bob";
cam_info.D = D;
cam_info.K = K;
cam_info.P = P;
cam_info.R = r;
cam_info.binning_x = 0;
cam_info.binning_y = 0;

pub_cam_info.publish(cam_info);

3 参考内容

camera_info话题定义: 链接
ROS中生成CameraInfo消息: 链接
根据相机内参向ROS发布camera_info: 链接

;