[相機] 如何發佈camera_info

問題描述:

在跑某些包時,僅僅有圖像數據是不夠的,還需要獲得相機信息。

例如跑stereo_image_proc時,需要左右目的camera_info


問題解決辦法:

 1. 安裝camera_info軟件包

$ sudo apt-get install ros-kinetic-camera-info-manager

2. 開始在自己的代碼文件中進行修改

2.1 添加頭文件

#include <camera_info_manager/camera_info_manager.h>

2.2 在類中定義相關指針、發佈的話題

boost::shared_ptr<camera_info_manager::CameraInfoManager> cinfo_;
image_transport::CameraPublisher image_pub;

2.3 在構造函數中進行2.2中定義的指針的賦值

cinfo_.reset(new camera_info_manager::CameraInfoManager(node_, camera_name_, cam_info_url_));

這裏的node_爲類中定義的ros::NodeHandle node_;

camera_name_爲讀取的相機名稱,爲string類型;

cam_info_url_爲相機的配置文件所在的路徑,string類型,例如:

"file:///data/config/left.yaml"

2.4  在獲取到圖像後進行發佈時

首先需要將所需要發佈的圖像變爲sensor_msgs::Image(這裏視情況而定,各顯神通)

然後給這個sensor_msgs::Image的header.stamp賦值ros::Time::now()

然後新建CameraInfoPtr指針,賦值,再發布圖像和這個cameraInfo就好了:

sensor_msgs::CameraInfoPtr ci_(new sensor_msgs::CameraInfo(cinfo_->getCameraInfo()));
ci_->header.frame_id = msg_.header.frame_id;
ci_->header.stamp = msg_.header.stamp;
image_pub.publish(msg_, *ci_);

 


感覺寫的好爛啊。。。大家可以自己看參考鏈接。。。

參考鏈接:

1. ros_wiki相同問題

2.這個是主要參考的代碼,ros的usb_cam驅動

3.http://docs.ros.org/kinetic/api/sensor_msgs/html/msg/CameraInfo.html

4.http://wiki.ros.org/camera_info_manager

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章