軌道評価ツールの使用: evo のインストールと学習

evo は、視覚的なオドメトリおよびスラム問題のための軌道評価ツールです。

中核となる機能は、カメラの軌跡をプロットしたり、推定された軌跡と真の値の間の誤差を評価したりする機能です。複数のデータセット (TUM、KITTI、EuRoC MAV、ROS バッグ) の軌跡形式をサポートし、これらのデータ形式間の相互変換をサポートします。ここでは、その基本的な機能を簡単に紹介します。

evo ツールの github アドレス

1. インストール

ターミナルでインストール コマンドを使用します:
注: 関連する依存関係をインストールする必要があります

    sudo apt install python-pip
    pip install evo --upgrade --no-binary evo
    or 
    pip install evo --upgrade --no-binary evo --user
    pip install numpy --upgrade --user

2. 関連コマンドの使用 - フォーマット変換

形式変換のための 3 つの接尾辞コマンド:
フォーマット変換
異なるデータ形式:
ファイル形式
異なるファイル間の形式変換のためのコマンド:

  1. EuRoc データ形式を TUM データ形式に変換する
    例えば
    コマンド ライン:
	evo_traj euroc data.csv --save_as_tum

次に、17 ビット データ ファイルは、図
17ビット に示すように、TUM 形式に準拠した軌跡ファイル形式に変換され、8 ビット形式のファイルは変換されます。以下に示すように、「timestamp x y z q_x q_y q_z q_w 」です。
ここに画像の説明を挿入します

  1. TUMデータ形式をKITTIデータ形式に変換します

上記の変換コマンドと同様です。

evo_traj tum traj_1.txt --save_as_kitti
  1. TUM データ形式を Bag データ形式に変換する
evo_traj tum traj_1.txt  --save_as_bag

3. 関連コマンドの使用 - 描画

3.1 単一の軌跡を描く

たとえば、次のコマンドと取得されたイメージ:

 evo_traj euroc v203_truth.csv --plot

例えば

3.2 複数の軌跡を描く

例えばevoに付属する例。

evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz

複数の軌跡を出力する場合は軌跡の位置合わせに注意が必要ですが、単眼カメラではスケール補正も行うことができます。

4. 軌跡関連のコマンドでメトリクスを実行する

4.1 エボエイプ

絶対姿勢誤差は、絶対軌道誤差としてよく使用されます。推定軌道と基準軌道を比較し、軌道全体の統計を計算します。軌道の大域的な一貫性をテストするのに適しています。
コマンド構文: コマンド形式 参照軌道 推定軌道 [オプション]
形式には euroc、tum、およびその他のデータ形式が含まれ、オプションのオプションには位置合わせコマンド、描画コマンドが含まれます。 、結果などを保存します。
例: evo_ape を使用して、ORB-SLAM の結果軌道と S-PTAM の軌道の間の絶対姿勢誤差を計算します。ここで、KITTI_00_gt.txt は基準グラウンド トゥルースであり、描画して保存します。個々の結果を evo_res の .zip ファイルに保存します:

mkdir results
evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -r full -va --plot --plot_mode xz --save_results results/ORB.zip

コマンドの意味は、並進誤差と回転誤差を考慮した ape の計算、並進誤差と回転位置合わせの実行、詳細モードでの表示、図面の保存、計算結果の保存です。
コマンドを実行した結果は次の図に示すようになります。
結果
ここで、-plot または -p は描画を意味します。
ここで、- r は、ape のベースとなるポーズ関係を意味します。-r/--pose_relation およびオプションの場合、上記のコマンドで選択されたパラメータは「full」です。オプションは追加されません。デフォルトは trans_part です。
ここに画像の説明を挿入します
このうち、-v は冗長モードであるverbose mode、-aはSE(3)梅山アライメントを示し、残りのオプションは下表の通りです。 -s を追加しないことは、デフォルトのスケール調整パラメーターが 1.0 であること、つまりスケール調整が実行されないことを意味します。
(軌道アライメント a とスケール スケーリング - s、これら 2 つのパラメータは evo_traj、evo_ape、evo_rpe にありますオプションのパラメータ)
位置合わせ
また、evo_ape を使用して 2 つのファイルの絶対ポーズ エラーを評価することもできます。次に例を示します。

evo_ape euroc  a.csv b.csv 或者 evo_ape kitti a.txt b.txt //evo支持 kitti、tum、euroc 这三个公开数据集格式

注: 比較する 2 つのデータ ファイルは、両方とも kitti、tum、または euroc の同じ形式である必要があります。
次の結果が得られます:
結果
その中のパラメータ:

  • max: 最大誤差を示します。
  • mean:平均误差;
  • median:误差中位数;
  • min:最小误差;
  • rmse: 二乗平均平方根誤差;
  • sse: 分散の合計、誤差の二乗の合計;
  • std:标准差。

注: evo_ape + データ形式 + --help を通じて、その他のパラメータの意味とその使用方法を確認できます。例:

evo_ape tum --help

4.2 evo_rpe

相対ポーズ エラーは絶対ポーズを比較しません。相対ポーズ エラーは動き (姿勢増分) を比較します。相対姿勢誤差により、1 メートルあたりのスラム システムの平行移動や回転ドリフトなどの局所的な精度が得られます。
コマンド構文: コマンド形式 参照軌道 推定軌道 [オプション]
形式には euroc、tum、およびその他のデータ形式が含まれ、オプションのオプションには位置合わせコマンド、描画コマンドが含まれます。 、結果などを保存します。
例:

evo_rpe euroc data.csv V102.txt -r angle_deg --delta 1 --delta_unit m -va --plot --plot_mode xyz --save_plot ./VIO --save_results ./VIO.zip

コマンドの意味: 1 メートルあたりの回転角度を考慮して rpe を求め、詳細モードで表示および描画します。結果は図
結果
に示されています。ここで、-r は、ape の基礎となる姿勢関係を表します。パラメータ表現エフェクトは evo_ape と同じ意味を持ちます。追加しない場合、デフォルトは trans_part になります。
-r に加えて、次のものがあります。
–d/–delta は相対ポーズ間の増分を表します。f。例:evo_rpe + データ形式 + --help を使用すると、その他のパラメータの意味と使用方法を確認できます 注: では使用できないことに注意してください。 -all_pairs 関数は -plot コマンドに –all_pairs を追加すると、rpe を計算するときに、位置データ内の連続したペアのみではなくすべてのペアが使用されます。このとき、-all_pairs モードは -t/ で制御できます。 –delta_tol 相対的なデルタ許容値。 -va --plot --plot_mode xyz --save_plot ./VIO --save_results ./VIO.zip は、evo_ape で説明されているものと同等です。 デフォルトは 、 –delta_unitデフォルトは 1 の場合、 –delta のパラメータは整数である必要があります。それ以外の場合は、浮動小数点型にすることができます。 –delta f これらは一緒になって、メートルあたり、ラジアンあたり、100 メートルあたりなど、ローカル精度を測定する単位を表します。等–delta_unit が –d/–delta -u/–delta_unit で、それぞれ [f, d, r, m] オプションのパラメータは は増分単位を表します。 –u/–delta_unit




evo_rpe euroc --help

5. メトリックからの複数の結果を処理する

evo_res は、指標内の複数の結果ファイルを比較するために使用できます。

  • 情報と統計を印刷します (デフォルト)
  • 結果をプロットする
  • 統計をテーブルに保存する

たとえば、上記の evo_ape/evo_rpe の結果を .zip ファイルとして保存した後、evo_res を使用してさまざまな結果を比較し、保存用のグラフとテーブルを生成できます。コマンドは次のとおりです。

evo_res results/*.zip -p --save_table results/table.csv

注:evo_res --help では、オプションのパラメータの意味を確認できます。

6. evo でよく使用されるその他のコマンド

  • evo_fig: シリアル化された図を再度開くためのツール
  • evo_config: グローバル設定と構成ファイル操作のためのツール

その他のコマンド

7. evo の使用時に発生する問題

エラーコマンド

[エラー] 参照がないと整列または同期できません
理由: 参照がないため、整列または同期が妨げられます。つまり、-a または -s は使用できません。
解決策: --ref を evo コマンドに追加し、その後に変換および回転する必要がある参照ファイルを追加し、データ形式が適切であることを確認します。

エラー報告の手順:

[エラー] TUM 軌跡ファイルには 1 行あたり 8 つのエントリが必要であり、行の末尾に末尾の区切り文字 (スペース) は必要ありません。
理由:生成された元のファイルにはスペースが含まれる場合がありますが、これは完全に標準化された tum 結果ファイルではありません。
解決策: 次のコマンドを実行して余分なスペースをクリアします。

cat results.txt | tr -s [:space:] > results_new.txt
エラー報告の手順:

[エラー] TUM 軌跡ファイルには 1 行あたり 8 つのエントリが必要であり、行の末尾に末尾の区切り文字 (スペース) は必要ありません。
理由:対応する tum ファイル内のデータの列数が、指定された 8 列 (8 列 = タイムスタンプ + 3 次元座標 + クォータニオン) ではありません。
解決策: 結果のデータを 8 列に変更するコードを記述します。
注: evo を描画に使用するには、形式が正確である必要があります。データの各行には上部のグリッドが必要です。データ間にスペースがあってはなりません。余分なスペースは必要です。安全性を高めるために、カンマに変換することをお勧めします。

エラー報告の手順:

[エラー] 最大時間差分 0.01 (秒)、時間オフセット 0.0 (秒) の参照と test.txt の間に一致するタイムスタンプが見つかりませんでした
理由: グラフ化する必要がある 2 つのデータ ファイルのタイムスタンプが一致していません。
解決策: タイムスタンプを一致させるか、テキスト ファイルのタイムスタンプを 0、1、2、3 に変更する必要があります...数値は同じです整列できます。
列番号とタイムスタンプ コードを変更するには、このブログ投稿を参照してください。

優れた参考ブログ投稿

  1. SLAM精度测评——EVO;
  2. SLAM 評価ツール - EVO のインストールから使用まで;
  3. EVO使用;
  4. 弾道評価ツールの使い方まとめ (1) evo 導入から導入まで;
  5. evo のインストール、evo の使用方法の詳細チュートリアル、SLAM 軌道精度評価ツール、ORB-SLAM2 によって生成された軌道精度を評価する方法;

おすすめ

転載: blog.csdn.net/weixin_52303102/article/details/130742017