Skip to content

Commit 420003b

Browse files
committed
#18 add double camera node
1 parent 15312ef commit 420003b

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

example/NetCam/main_ros2.cpp

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)