相机型号: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 主要流程:
- 将参数分别定义到矩阵
- 写入sensor_msgs/CameraInfo Message
- 发布话题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: 链接