@@ -41,20 +41,21 @@ class CamDriver {
4141
4242 // 自定义回调函数
4343 void ImageCallback (const void *msg, size_t ) {
44- const auto *cam_data = static_cast <const infinite_sense::CamData *>(msg);
45- std_msgs::msg::Header header;
46- header.stamp = rclcpp::Time (cam_data->time_stamp_us * 1000 );
47- header.frame_id = " map" ;
44+ const auto *cam_data = static_cast <const CamData *>(msg);
4845 const cv::Mat image_mat (cam_data->image .rows , cam_data->image .cols , CV_8UC1, cam_data->image .data );
49- const sensor_msgs::msg::Image::SharedPtr image_msg = cv_bridge::CvImage (header, " mono8" , image_mat).toImageMsg ();
50- image_pub_.publish (image_msg);
46+ sensor_msgs::ImagePtr msg =
47+ // mono8:灰度类型,bgr8:彩图,具体需要根据相机类型进行修改
48+ cv_bridge::CvImage (std_msgs::Header (), " mono8" , image_mat).toImageMsg ();
49+ msg->header .stamp = CreateRosTimestamp (cam_data->time_stamp_us );
50+ image_pub_.publish (msg);
5151 }
5252 void Init () {
5353 synchronizer_.SetUsbLink (" /dev/ttyACM0" , 921600 );
5454 mv_cam_ = std::make_shared<MvCam>();
5555 mv_cam_->SetParams ({{" cam_1" , CAM_1}});
5656 synchronizer_.UseSensor (mv_cam_);
5757 imu_pub_ = node_.advertise <sensor_msgs::Imu>(imu_name_, 1000 );
58+ image_transport::ImageTransport it_ (node_);
5859 image_pub_ = it_.advertise (camera_name_, 30 );
5960 synchronizer_.Start ();
6061 std::this_thread::sleep_for (std::chrono::milliseconds (5000 ));
@@ -74,7 +75,6 @@ class CamDriver {
7475
7576 private:
7677 ros::NodeHandle &node_;
77- image_transport::ImageTransport it_;
7878 ros::Publisher imu_pub_;
7979 image_transport::Publisher image_pub_;
8080 std::shared_ptr<MvCam> mv_cam_;
0 commit comments