SLAM実験
TUM データセット
assign.py が使用するもの
手順
python2 associate.py rgb.txt depth.txt > associate.txt
注: ここで提供される公式スクリプトは python2 です。
エボ
evo_ape、evo_rpeの計算方法
導入の前に、最初に定義式をマークしましょう:
アルゴリズム推定姿勢: P 1 . . . . . . P n ∈ SE ( 3 ) P_1....P_n\in SE(3)P1…… Pん∈SE ( 3 )
実際のポーズ:Q 1 . . . . . . Q n ∈ SE ( 3 ) Q_1......Q_n\in SE(3)Q1…… Qん∈SE ( 3 )
の下付き文字は時刻ttここでは、推定された姿勢と実際の姿勢がフレームごとに時間的に整合しており、フレームの合計数が同じであると仮定します。△ \三角△はインターバル時間の間隔を表します。
インストール
公式サイトを参照することをお勧めします
一つ間違える
操作中にevo_traj tum data.tum -p
次のエラーが報告されます
[ERROR] Unhandled error in evo.main_traj
Traceback (most recent call last):
File "/home/houyiliang/.local/lib/python3.8/site-packages/evo/entry_points.py", line 99, in launch
main_module.run(args)
File "/home/houyiliang/.local/lib/python3.8/site-packages/evo/main_traj.py", line 420, in run
from evo.tools import plot
File "/home/houyiliang/.local/lib/python3.8/site-packages/evo/tools/plot.py", line 43, in <module>
import seaborn as sns
File "/home/houyiliang/.local/lib/python3.8/site-packages/seaborn/__init__.py", line 2, in <module>
from .rcmod import * # noqa: F401,F403
File "/home/houyiliang/.local/lib/python3.8/site-packages/seaborn/rcmod.py", line 5, in <module>
from . import palettes
File "/home/houyiliang/.local/lib/python3.8/site-packages/seaborn/palettes.py", line 9, in <module>
from .utils import desaturate, get_color_cycle
File "/home/houyiliang/.local/lib/python3.8/site-packages/seaborn/utils.py", line 11, in <module>
import pandas as pd
File "/home/houyiliang/.local/lib/python3.8/site-packages/pandas/__init__.py", line 48, in <module>
from pandas.core.api import (
File "/home/houyiliang/.local/lib/python3.8/site-packages/pandas/core/api.py", line 22, in <module>
from pandas.core.algorithms import (
File "/home/houyiliang/.local/lib/python3.8/site-packages/pandas/core/algorithms.py", line 40, in <module>
from pandas.core.dtypes.cast import (
File "/home/houyiliang/.local/lib/python3.8/site-packages/pandas/core/dtypes/cast.py", line 23, in <module>
from dateutil.parser import ParserError
ImportError: cannot import name 'ParserError' from 'dateutil.parser' (/usr/lib/python3/dist-packages/dateutil/parser/__init__.py)
[ERROR] evo module evo.main_traj crashed - no logfile written (disabled)
ここでのエラーは、ImportError: cannot import name 'ParserError' from 'dateutil.parser'
不足しているものはすべてインストールするということであることがわかります。
pip install python-dateutil==2.8.2
python-dateutil の最新バージョン番号はpypi Web サイトから確認できます
。インストールは成功し、実行を継続しますがevo_traj tum data.tum -p
、新しいエラーが表示されます
File "/home/houyiliang/.local/lib/python3.8/site-packages/matplotlib/backends/_backend_tk.py", line 8, in <module>
import tkinter as tk
ModuleNotFoundError: No module named 'tkinter'
古いルールに欠けているものと何をインストールする必要があるか
sudo apt-get update
sudo apt-get install python3-tk
インストールが完了したら、再度実行し、別のエラーを報告します。
from PIL import Image, ImageTk
ImportError: cannot import name 'ImageTk' from 'PIL' (/usr/lib/python3/dist-packages/PIL/__init__.py)
また
sudo apt-get install python3-pil python3-pil.imagetk
もう終わりです
サポートされているトラック
- ros——ROS データ パッケージ
データ パッケージに次のトピックが含まれている場合: geometry_msgs/PoseStamped、geometry_msgs/TransformStamped、geometry_msgs/PoseWithCovarianceStamped、および nav_msgs/Odometry は、軌道比較に EVO ツールを使用できます。
v1.9 以降、TF トピックは EVO 評価もサポートします。 - euroc—EuRoC MAV データセット
EuRoC データセット自体は EVO ツールの直接使用をサポートしていないため、評価するには TUM タイプのデータセットに変換する必要があります。
EuRoC データセット内の csv で終わるファイルには、グラウンド トゥルース情報が保存されます。
EuRoC データセットを使用する場合は、座標系、グラウンド トゥルース、IMU、およびカメラの軸規則が異なることに注意してください。 - kitti——KITTI データセット
KITTI データセットによって出力される軌跡データには、タイムスタンプ情報が含まれません。12 個の記述データが KITTI 軌跡ファイルに保存されます。これは、同次姿勢行列 SE(3) の最初の 3 行です。
//SE(3)
a b c d
e f g h
i j k l
0 0 0 1
//kitti traj file
a b c d e f g h i j k l
tum -タイムスタンプ (秒単位)、位置と方向 (四元数) を含む 1 行あたり 8 つのエントリを持つTUM RGB-D データセット。各値はスペースで区切られ、末尾にスペースはありません
timestamps x y z q_x q_y q_z q_w
トラック間のトランジション
異なる種類の軌道には、相互に変換できるものとできないものがあります。次の表に、軌道の種類間の変換関係を示します。
–save_as_bag | –save_as_kitti | –save_as_tum | |
---|---|---|---|
バッグ | はい | はい | はい |
ユーロック | はい | はい | はい |
子猫 | いいえ | はい | いいえ |
タム | はい | はい | はい |
//Example
// export a EuRoC groundtruth file to a TUM trajectory
evo_traj euroc data.csv --save_as_tum
//(will be saved as data.tum)
//export TUM trajectories to KITTI format
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_kitti
//(will be saved as *.kitti)
//export TUM trajectories to ROS bagfile
evo_traj tum traj_1.txt traj_2.txt traj_3.txt --save_as_bag
//(will be saved as <timestamp>.bag with topics traj_1, traj_2 and traj_3)