| 18 | namespace VIO { |
| 19 | |
| 20 | RosDataProvider::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 |
nothing calls this directly
no outgoing calls
no test coverage detected