Fusion SLAM
  • 概述
  • 介绍
  • 里程计
  • 地图生成
  • 地图优化
  • 数据集与实验
  • 接口与扩展
  • 已知问题
  • 未来工作
  • 附录与参考
  • 相关教程
项目
  • 简体中文
  • English
  • 概述
  • 介绍
  • 里程计
  • 地图生成
  • 地图优化
  • 数据集与实验
  • 接口与扩展
  • 已知问题
  • 未来工作
  • 附录与参考
  • 相关教程
项目
  • 简体中文
  • English
  • 概述
  • 介绍

    • 符号
    • 流程图
    • 流程描述
    • 坐标系定义
    • 主要论文
    • 相关研究
  • 里程计

    • 介绍
    • 初始化
    • 状态估计
    • 时间同步
    • 地图约束
    • 异常处理
  • 地图生成
  • 地图优化
  • 数据集与实验
  • 接口与扩展
  • 已知问题
  • 未来工作
  • 附录与参考

    • 参考文献
    • 附录
  • 相关教程

    • 里程计教程
    • ROVIOLI教程

ROVIOLI教程

在VIO模式下运行ROVIOLI:配置文件、ROS话题、包/话题模式、可视化

在本教程中,我们使用ROVIOLI来构建一个地图,采用视觉惯性里程计(VIO)模式,即不使用任何定位。 ROVIOLI在VIO模式下有两种运行模式:

  • 从rosbag构建地图
  • 从rostopic构建地图

必要条件

运行ROVIOLI需要以下校准文件:

  • 相机校准和IMU参数, Euroc数据集的示例文件
  • finder localication 配置文件 estimator_config.yaml

从rosbag构建地图

对于这个教程,我们将从Euroc数据集中构建地图。 请访问Euroc数据集网站,并下载Machine Hall 01的bag文件。

修改rovioli.launch中的datasource_type为rosbag,指定datasource_rosbag的正确路径。 现在,启动一个roslaunch运行数据集:

source ~/maplab_ws/devel/setup.bash
roslaunch rovioli rovioli.launch

注意:

# 使用此标志来移除(或更改)相机话题的后缀(默认为:image_raw)。
vio_camera_topic_suffix=""

save_folder是生成的VI地图将要保存的文件夹的名称。

在ROVIOLI完成并保存地图后,save_folder应该是这样的:

$ tree save_folder
save_folder
├── metadata
├── resource_info
├── resources
└── vi_map
    ├── edges
    ├── landmark_index
    ├── missions
    ├── other_fields
    ├── vertices0
    ├── vertices1
    ├── ...

从rostopic构建地图

对于这个教程,我们将从Euroc数据集中构建地图。 请访问Euroc数据集网站,并下载Machine Hall 01的bag文件。

修改rovioli.launch中的datasource_type为rostopic。 现在,使用Euroc数据集作为实时源,调用:

source ~/maplab_ws/devel/setup.bash
roslaunch rovioli rovioli.launch

然后,在单独的终端中启动数据源:

rosbag play MH_01_easy.bag  # or start your sensor node.

注意:

# 使用此标志来移除(或更改)相机话题的后缀(默认为:image_raw)。
vio_camera_topic_suffix=""

输出

默认情况下,姿势估计值会发布在以下列表中:

  • /maplab_rovio/T_G_I
  • /maplab_rovio/T_G_M 在没有定位时为单位矩阵。
  • /maplab_rovio/T_M_I
  • /maplab_rovio/bias_acc
  • /maplab_rovio/bias_gyro
  • /maplab_rovio/velocity_I

可视化

使用这个RViz配置用于可视化最重要的ROVIOLI主题。

这里有一个启用/禁用maplab中某些组件可视化的最重要标志的列表。 ROVIOLI:

Maplab特征跟踪模块的可视化

Maplab的特征跟踪模块计算并匹配Brisk或FREAK特征,这些特征被地图构建器用于构建姿势图/VIMap。关键点检测和特征匹配的结果可以发布为ROS图像话题。

启用/禁用"使用以下标志:

feature_tracker_visualize_keypoint_detections
feature_tracker_visualize_feature_tracks
feature_tracker_visualize_keypoint_matches
feature_tracker_visualize_keypoints
feature_tracker_visualize_keypoints_individual_frames

话题:

# 对于每个帧 N,都使用一个单独的主题:
/tracking/keypoints_raw_cam{N}
/tracking/keypoint_matches_camera_{N}
/tracking/keypoint_outlier_matches_camera_{N}

T_M_I和T_G_I的可视化

这些标记可视化了每一帧的姿态估计(里程计= T_M_I,定位= T_G_I)。

启用/禁用"使用以下标志:

publish_debug_markers

话题:

/debug_T_G_I
/debug_T_M_I

VIMap和Localization的可视化

这些标记可视化了ROVIOLI正在构建的VIMap,以及定位模块发现的地标对应关系。

启用/禁用以下标志的使用:

rovioli_visualize_map

话题:

# 位姿图
/vi_map_baseframe
/vi_map_landmarks
/vi_map_vertices
/vi_map_edges/viwls

# 定位结果
/landmark_pairs
/loop_closures
/loopclosure_database
/loopclosure_inliers

在定位模式下运行ROVIOLI

在本教程中,我们将在定位模式下运行ROVIOLI。 这可以大大提高估计器的精度,并减少估计轨迹的漂移。

必要条件

与VIO的情况一样,您需要为传感器设置获取两个配置文件。 此外,您还需要: -一张用于定位的VI地图。为了在ROVIOLI中获得更好的结果,应该优化此映射并闭环。 -要运行的数据集。或者,可以使用实时来源。

准备定位地图

获取定位地图有两种方式:

  • 通过在VIO模式下运行ROVIOLI中获取的VI地图。请参阅有关优化地图的教程。
  • 或者,您可以在rovioli.launch中,将optimize_map_to_localization_map标志设置为true。
source ~/maplab_ws/devel/setup.bash
roslaunch rovioli rovioli.launch

这将保存一个经过优化的定位地图 save_folder_loc_map_localization:

$ tree save_folder_loc_map_localization
save_folder_loc_map_localization
└── localization_summary_map

您可以在ROVIOLI中使用VI地图(完整地图)或定位摘要地图(仅包含与定位相关信息的摘要地图)进行定位。

运行使用定位功能的ROVIOLI

对于本教程,我们使用Euroc数据集网站上的Machine Hall 02数据集。 关于本地化地图,我们使用了 Machine Hall 01 数据集的优化 VI 地图,我们假设该地图已保存在 save_folder_loc_map_localization 下。(或者,您可以使用[[样本数据集]]页面上的未优化地图。但请注意,这样做将导致性能不如使用优化地图时的表现。)

修改rovioli.launch中的vio_localization_map_folder指向正确的地图路径。

现在,启动一个roslaunch运行数据集:

source ~/maplab_ws/devel/setup.bash
roslaunch rovioli rovioli.launch

save_folder_loc_map_localization下的地图被用作定位的参考地图。 它可以是定位摘要地图(使用ROVIOLI中的optimize_map_to_localization_map生成)或完整的VI地图(从ROVIOLI生成并使用maplab控制台进行优化)。 如果参数是空字符串,ROVIOLI将退回到VIO模式,即ROVIOLI将不执行任何定位。 当ROVIOLI完成后,VI地图将被存储在save_folder_with_localization下。 如果您不希望保存生成的VI地图,您可以保持参数为空。

bash run_rovioli_localization "" save_map MH_02_easy.bag

ROVIOLI在定位期间的可视化

除了标准的ROVIOLI主题(如之前解释的那样),定位模式还向RViz添加了以下可视化主题:

  • /loopclosure_database:循环闭合数据库中所有地标的点云。
  • /loop_closures:连接当前活动顶点与所有用于定位的地标的线条。
  • /loopclosure_inliers:最后一次成功定位中使用的所有地标的点云。
  • /debug_T_G_I_raw_localization:红色点表示成功定位发生的顶点位置。
Prev
里程计教程