Helper class that will publish results onto the ROS framework.
Also save to file the current total state and covariance along with the groundtruth if we are simulating. We visualize the following things:
- State of the system on TF, pose message, and path
- Image of our tracker
- Our different features (SLAM, MSCKF, ARUCO)
- Groundtruth trajectory if we have it
- Will setup ROS subscribers and callbacks.
- void visualize()
- Will visualize the system if we have new things.
- void visualize_odometry(double timestamp)
- Will publish our odometry message for the current timestep. This will take the current state estimate and get the propagated pose to the desired time. This can be used to get pose estimates on systems which require high frequency pose estimates.
- void visualize_final()
- After the run has ended, print results.
- void callback_inertial(const sensor_msgs::Imu::ConstPtr& msg)
- Callback for inertial information.
- void callback_monocular(const sensor_msgs::ImageConstPtr& msg0, int cam_id0)
- Callback for monocular cameras information.
- void callback_stereo(const sensor_msgs::ImageConstPtr& msg0, const sensor_msgs::ImageConstPtr& msg1, int cam_id0, int cam_id1)
- Callback for synchronized stereo camera information.
- void publish_state()
- Publish the current state.
- void publish_images()
- Publish the active tracking image.
- void publish_features()
- Publish current features.
- void publish_groundtruth()
- Publish groundtruth (if we have it)
- void publish_loopclosure_information()
- Publish loop-closure information of current pose and active track information.
CameraData> ov_msckf:: ROS1Visualizer:: camera_queue protected
Queue up camera measurements sorted by time and trigger once we have exactly one IMU measurement with timestamp newer than the camera measurement This also handles out-of-order camera measurements, which is rare, but a nice feature to have for general robustness to bad camera drivers.