MCPcopy Create free account
hub / github.com/MIT-SPARK/Kimera-VIO-ROS / RosDataProvider

Method RosDataProvider

src/ros-data-source.cpp:20–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18namespace VIO {
19
20RosDataProvider::RosDataProvider()
21 : RosBaseDataProvider(),
22 left_img_subscriber_(),
23 right_img_subscriber_(),
24 sync_(nullptr),
25 // initialize last timestamp (img) to be 0
26 last_timestamp_(0),
27 // initialize last timestamp (imu) to be 0
28 last_imu_timestamp_(0),
29 // keep track of number of frames processed
30 frame_count_(1) {
31 ROS_INFO("Starting SparkVIO wrapper for online");
32
33 // Start IMU subscriber
34 imu_subscriber_ =
35 nh_imu_.subscribe("imu", 50, &RosDataProvider::callbackIMU, this);
36
37 // Define Callback Queue for IMU Data
38 ros::CallbackQueue imu_queue;
39 nh_imu_.setCallbackQueue(&imu_queue);
40
41 // Spawn Async Spinner (Running on Custom Queue) for IMU
42 // 0 to use number of processor queues
43
44 ros::AsyncSpinner async_spinner_imu(0, &imu_queue);
45 async_spinner_imu.start();
46
47 // Subscribe to stereo images. Approx time sync, should be exact though...
48 DCHECK(it_);
49 left_img_subscriber_.subscribe(*it_, "left_cam", 1);
50 right_img_subscriber_.subscribe(*it_, "right_cam", 1);
51 sync_ = VIO::make_unique<message_filters::Synchronizer<sync_pol>>(
52 sync_pol(10), left_img_subscriber_, right_img_subscriber_);
53 DCHECK(sync_);
54 sync_->registerCallback(
55 boost::bind(&RosDataProvider::callbackCamAndProcessStereo, this, _1, _2));
56
57 // Define Callback Queue for Cam Data
58 ros::CallbackQueue cam_queue;
59 nh_cam_.setCallbackQueue(&cam_queue);
60
61 // Spawn Async Spinner (Running on Custom Queue) for Cam
62 ros::AsyncSpinner async_spinner_cam(0, &cam_queue);
63 async_spinner_cam.start();
64
65 ////// Define Reinitializer Subscriber
66 reinit_flag_subscriber_ = nh_reinit_.subscribe(
67 "reinit_flag", 10, &RosDataProvider::callbackReinit, this);
68 reinit_pose_subscriber_ = nh_reinit_.subscribe(
69 "reinit_pose", 10, &RosDataProvider::callbackReinitPose, this);
70
71 // Define Callback Queue for Reinit Data
72 ros::CallbackQueue reinit_queue;
73 nh_reinit_.setCallbackQueue(&reinit_queue);
74
75 ros::AsyncSpinner async_spinner_reinit(0, &reinit_queue);
76 async_spinner_reinit.start();
77

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected