前言
ORB-SLAM的地图和定位可视化是通过Rviz进行展示的,而在ORB-SLAM2中,为了不依赖于ROS,ORB-SLAM2的可视化采用了pangolin库。而我的硕士课题有个需求,就是要使ORB-SLAM2的结果和Cartographer的结果同时显示在同一个可视化工具中,而Cartographer是采用Rviz显示的,还定制了专用的Rviz插件。思考再三,决定为ORB-SLAM2重新添加基于Rviz的可视化模块。
ORB-SLAM2的Rviz可视化
简单分析一下ORB-SLAM中关于Rviz的可视化,总结了以下几点:
1.ORB-SLAM的Rviz视化用了单独的一个类来完成可视化信息的发布:MapPublisher类
2.所有的可视化信息都是Rviz的Mark类型,根据发布的地图点,关键帧,Covisibility Graph,Spanning Tree和相机轨迹,设计了不同的Mark类型。
3.所有的可视化信息,包或地图,轨迹等都是从ORB-SLAM中的Map类中获取的。
4.每次获得一帧图像,进行Track后,利用MapPublisher类发布可视化信息。
5.在配置相应的Rviz,使其可以接收可视化信息。
明白了这几点之后,在ORB-SLAM2中添加Rviz可视化模块就很简单了,主要对源代码做两个改动。
1.添加MapPublisher类和配置Rviz,并在每次Track之后利用MapPublisher类发布可视化信息,这里可以直接复用ORB-SLAM中的MapPublisher类和Rviz。
2.为Map类添加返回相关信息的接口。
3.特