admin管理员组

文章数量:1660205

rpg_trajectory_evaluation工具使用

用于评估的每个轨迹估计(例如,视觉惯性焦距算法的输出)被组织为一个自给文件夹。每个文件夹至少需要包含两个文本文件,指定真实情况,并使用时间戳估计姿势。

  • stamped_groundtruth.txt*真值轨迹,有时间戳
  • stamped_traj_estimate.txt*估计有时间戳的姿势
  • (任择)eval_cfg.yaml*具体规定评价参数
  • (任择)start_end_time.yaml指定分析的开始和结束时间(以秒为单位)。

真值数据(stamped_groundtruth.txt)和估计姿势数据(stamped_traj_estimate.txt)以下列格式指定

# timestamp tx ty tz qx qy qz qw
1.403636580013555527e+09 1.258278699999999979e-02 -1.561510199999999963e-03 -4.015300900000000339e-02 -5.131151899999999988e-02 -8.092916900000000080e-01 8.562779200000000248e-04 5.851609599999999523e-01
......

注意,文件是分隔的,四元数具有w组件在最后。时间戳以秒为单位,用于建立时间对应关系。

下面有一些脚本scripts/dataset_tools为了帮助您将数据格式(Euroc样式,ROS包)转换为上述格式。有关详细信息,请参阅下面的相应部分。

目前eval_cfg.yaml指定两个轨迹对准参数(用于绝对误差):

  • align_type
    

    :

    • sim3*相似变换(仅用于视觉单目情况)
    • se3*刚体转换(只用于视觉立体声)
    • posyaw:平移加上围绕重力旋转(用于视觉-惯性情况)
    • none*不要对准轨道
  • align_num_frames在对准中使用的姿势数(从开始开始)。-1意味着所有的姿势都会被使用。

如果该文件不存在,则将使用sim3还有所有的姿势。

开始和结束时间:

start_end_time.yaml可以指定以下内容(根据实际时间):

  • start_time_sec::只有在此之后才会使用姿态进行分析。
  • end_time_sec*只有在此之前的姿态才能用于分析。

如果该文件不存在,则对stamped_traj_estimate.txt中所有的姿态进行分析.

运行评估

单一轨迹估计

rosrun rpg_trajectory_evaluation analyze_trajectory_single.py <result_folder>

<result_folder>应该包含上述的真值轨迹、轨迹估计和可选的评估配置。

输出量:

<result_folder>中,输出了两个文件夹saved_results/traj_est和plots。

  • saved_results/traj_est
    

    *包含不同错误统计信息的文本文件

    • absolute_err_statistics_<align_type>_<align_frames>.yaml使用指定对齐的绝对错误的统计信息。
    • relative_error_statistics_<len>.yaml利用<len>.长度的子轨迹计算相对误差的统计量。
    • cached_rel_err.pickle由于计算相对误差费时,我们将相对误差缓存在不同的子轨道长度上,以便下次直接使用。
  • plots绝对误差、相对误差和轨迹图。

    • --recalculate_errors::将删除上述错误缓存文件并重新计算所有内容。违约:False.
    • --png::将地块保存为PNG而不是pdf。默认:False
    • --mul_trials*将分析n跑啊。如属n > 1,估计文件应以数字后缀结尾(例如,stamped_traj_estimate0.txt)。默认:None

多轨迹估计

rosrun rpg_trajectory_evaluation analyze_trajectories.py \
  euroc_vislam_mono.yaml --output_dir=./results/euroc_vislam_mono --results_dir=./results/euroc_vislam_mono --platform laptop --odometry_error_per_dataset --plot_trajectories --rmse_table --rmse_boxplot --mul_trials=10
参数

配置:

  • config配置文件scripts/analyze_trajectories_config

路径:

  • --results_dir*文件夹,其中<platform>文件夹将被找到。违约:results工具箱文件夹中的文件夹。
  • --output_dir*所有绘图和文本文件的文件夹。违约:results工具箱文件夹中的文件夹。
  • --platform*结果文件夹将在<results_dir>。违约:laptop

分析备选方案:

  • --mul_trials我们要分析多少次试验。违约:None。如果某些算法-数据集配置的运行次数较少,则只考虑可用的配置。
  • --odometry_error_per_dataset是否计算每个数据集的相对误差。违约:False.
  • --overall_odometry_error::是否计算和比较不同算法在所有数据集上的总体计量误差。违约:False.
  • --rmse_table是否生成翻译表RMSE(绝对错误)。违约:False.
    • --rmse_table_median_only*默认情况下,--rmse_table选项保存多次运行的中位数/平均值/分钟/最大值。使用此选项只保存中位数。
    • --rmse_boxplot*是否为不同数据集的RMSE绘制盒形图(仅适用于分析多项试验的结果)。违约:False.
  • --plot_trajectories*是否绘制轨迹。违约:False。默认情况下,会生成许多绘图,其中一些可以通过以下选项关闭。
    • --no_plot_side*不要策划旁见
    • --no_plot_aligned*不要绘制地面真相与估计之间的直线关系。
    • --no_plot_traj_per_alg不要为每种算法生成图

MISC:

  • --recalculate_errors:是否清除缓存并重新计算所有内容。违约:False.
  • --png::将地块保存为PNG而不是pdf。违约:False
  • --dpi允许以较高的dpi进行储蓄。违约:300
  • --no_sort_names*在绘图/写入结果时,不要对数据集和算法的名称进行排序(使用配置文件中的顺序)。默认值:名称将被排序。

本文标签: 工具rpgtrajectoryevaluation