vins_fusion入门系列-数据的读取
VINS_FUSION功能介绍
港科大在2019年1月12号发布了Vins-fusion,从2017年发布的Vins-mono:单目+IMU,这次晋级了vins-fusion,demo中主要给出了四个版本:
(1)单目+imu
(2)纯双目
(3)双目+imu
(4)VIO+GPS
地址为:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion
双目SLAM对比与之前单目的slam,主要一个好处在于初始化过程中,可以静止进行初始化。另一方面由于尺度信息不一定完全依靠IMU,因此不会造成尺度不可关的情况。但是由于视觉误匹配等各种原因,造成实际上双目的精度会比单目来的差一丢丢。不过鲁棒性上考虑,双目明显优于单目。
程序入口
1.定义内容
运行程序时,首先进入的是主程序rosNodeTest.cpp
里边主要定义了 估计器、 缓存器 、 获取传感器数据的函数 和 一个主函数
vins_estimator:: rosNodeTest.cpp
// 获得左目的message
void img0_callback(const sensor_msgs::ImageConstPtr &img_msg)
// 获得右目的message
void img1_callback(const sensor_msgs::ImageConstPtr &img_msg)
// 从msg中获取图片,返回值cv::Mat,输入是当前图像msg的指针
cv::Mat getImageFromMsg(const sensor_msgs::ImageConstPtr &img_msg)
// 从两个主题中提取具有相同时间戳的图像
// 并将图像输入到估计器中
void sync_process()
// 输入imu的msg信息,进行解算并把imu数据输入到estimator
void imu_callback(const sensor_msgs::ImuConstPtr &imu_msg)
// 把特征点的点云msg输入到estimator
void feature_callback(const sensor_msgs::PointCloudConstPtr &feature_msg)
// 是否重启estimator,并重新设置参数
void restart_callback(const std_msgs::BoolConstPtr &restart_msg)
// 是否使用IMU
void imu_switch_callback(const std_msgs::BoolConstPtr &switch_msg)
// 相机的开关
void cam_switch_callback(const std_msgs::BoolConstPtr &switch_msg)
int main(int argc, char **argv)
2.程序执行
main