@@ -12,21 +12,27 @@ class CamDriver final : public rclcpp::Node {
1212 public:
1313 CamDriver ()
1414 : Node(" gige_driver" ), node_handle_(std::shared_ptr<CamDriver>(this , [](auto *) {})), transport_(node_handle_) {
15- std::string camera_name = " cam_1" ;
15+ std::string camera_name_1 = " cam_1" ;
16+ std::string camera_name_2 = " cam_2" ;
1617 const std::string imu_name = " imu_1" ;
1718 // synchronizer_.SetUsbLink("/dev/ttyACM0", 921600);
1819 synchronizer_.SetNetLink (" 192.168.1.188" , 8888 );
1920 const auto mv_cam = std::make_shared<infinite_sense::MvCam>();
20- mv_cam->SetParams ({{camera_name, infinite_sense::CAM_1}});
21+ mv_cam->SetParams ({{camera_name_1, infinite_sense::CAM_1},
22+ {camera_name_2, infinite_sense::CAM_2},
23+ });
2124 synchronizer_.UseSensor (mv_cam);
2225 synchronizer_.Start ();
2326 imu_pub_ = this ->create_publisher <sensor_msgs::msg::Imu>(imu_name, 10 );
24- img_pub_ = transport_.advertise (camera_name, 10 );
27+ img1_pub_ = transport_.advertise (camera_name_1, 10 );
28+ img2_pub_ = transport_.advertise (camera_name_2, 10 );
2529 {
2630 using namespace std ::placeholders;
2731 infinite_sense::Messenger::GetInstance ().SubStruct (imu_name, std::bind (&CamDriver::ImuCallback, this , _1, _2));
28- infinite_sense::Messenger::GetInstance ().SubStruct (camera_name,
29- std::bind (&CamDriver::ImageCallback, this , _1, _2));
32+ infinite_sense::Messenger::GetInstance ().SubStruct (camera_name_1,
33+ std::bind (&CamDriver::ImageCallback1, this , _1, _2));
34+ infinite_sense::Messenger::GetInstance ().SubStruct (camera_name_2,
35+ std::bind (&CamDriver::ImageCallback2, this , _1, _2));
3036 }
3137 }
3238
@@ -48,21 +54,32 @@ class CamDriver final : public rclcpp::Node {
4854 imu_pub_->publish (imu_msg);
4955 }
5056
51- void ImageCallback (const void *msg, size_t ) const {
57+ void ImageCallback1 (const void *msg, size_t ) const {
5258 const auto *cam_data = static_cast <const infinite_sense::CamData *>(msg);
5359 std_msgs::msg::Header header;
5460 header.stamp = rclcpp::Time (cam_data->time_stamp_us * 1000 );
5561 header.frame_id = " map" ;
5662 const cv::Mat image_mat (cam_data->image .rows , cam_data->image .cols , CV_8UC1, cam_data->image .data );
5763 const sensor_msgs::msg::Image::SharedPtr image_msg = cv_bridge::CvImage (header, " mono8" , image_mat).toImageMsg ();
58- img_pub_ .publish (image_msg);
64+ img1_pub_ .publish (image_msg);
5965 }
6066
67+ void ImageCallback2 (const void *msg, size_t ) const {
68+ const auto *cam_data = static_cast <const infinite_sense::CamData *>(msg);
69+ std_msgs::msg::Header header;
70+ header.stamp = rclcpp::Time (cam_data->time_stamp_us * 1000 );
71+ header.frame_id = " map" ;
72+ const cv::Mat image_mat (cam_data->image .rows , cam_data->image .cols , CV_8UC1, cam_data->image .data );
73+ const sensor_msgs::msg::Image::SharedPtr image_msg = cv_bridge::CvImage (header, " mono8" , image_mat).toImageMsg ();
74+ img2_pub_.publish (image_msg);
75+ }
76+
77+
6178 private:
6279 infinite_sense::Synchronizer synchronizer_;
6380 SharedPtr node_handle_;
6481 image_transport::ImageTransport transport_;
65- image_transport::Publisher img_pub_ ;
82+ image_transport::Publisher img1_pub_,img2_pub_ ;
6683 rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtr imu_pub_;
6784};
6885
0 commit comments