本次工作
我首先参照网络上的文档整理了全部的代码,并对于C++和OpenCV的一些操作也进行了详细的注释,并写了这篇的博客进行全部的讲解,其中1-4章节是前端VIO信息,5章节是后端DBOW词袋回环,6-7章节是GPS与VIO融合,8章节是参考文献。
1. 程序入口rosNodeTest.cpp
1.1 定义内容
运行程序时,首先进入的是主程序vins_estimator/src/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)