Orb_slam2: How could I compare the pose result of ORB_SLAM with the KITTI ground truth?

Created on 10 Nov 2018  路  4Comments  路  Source: raulmur/ORB_SLAM2

How could I compare the pose result of mine algorithm(SLAM/Odometry) with the ground truth?
Just like tum rgb-d tool:
Useful tools for the RGB-D benchmark

In other words, how could I calculate the ate(ABSOLUTE TRAJECTORY ERROR) and RELATIVE POSE ERROR(rpe) between My pose result and the benchmark of KITTI?

Thanks!

Most helpful comment

You can try with this: https://github.com/MichaelGrupp/evo

shamelessadvertising

All 4 comments

You can try with this: https://github.com/MichaelGrupp/evo

shamelessadvertising

You can try with this: https://github.com/MichaelGrupp/evo

shamelessadvertising

Thank you very much!

Is APE in Evo the same as ATE for Kitti evaluation? I am using https://github.com/MichaelGrupp/evo/blob/master/notebooks/metrics_interactive.ipynb as a reference. I found an evaluate_ate.py script for the TUM dataset in the repository. What is the fundamental difference between APE and ATE? @AbnerCSZ @MichaelGrupp

Is APE in Evo the same as ATE for Kitti evaluation? I am using https://github.com/MichaelGrupp/evo/blob/master/notebooks/metrics_interactive.ipynb as a reference. I found an evaluate_ate.py script for the TUM dataset in the repository. What is the fundamental difference between APE and ATE? @AbnerCSZ @MichaelGrupp

APE(absolute pose error) in evo includes errors in rotation and translation. You can refer to their code:
class APE(PE)

        if self.pose_relation == PoseRelation.translation_part:
            # E is an array of position vectors only in this case
            self.error = [np.linalg.norm(E_i) for E_i in self.E]
        elif self.pose_relation == PoseRelation.rotation_part:
            self.error = np.array([
                np.linalg.norm(lie.so3_from_se3(E_i) - np.eye(3))
                for E_i in self.E
            ])
        elif self.pose_relation == PoseRelation.full_transformation:
            self.error = np.array(
                [np.linalg.norm(E_i - np.eye(4)) for E_i in self.E])
        elif self.pose_relation == PoseRelation.rotation_angle_rad:
            self.error = np.array(
                [abs(lie.so3_log(E_i[:3, :3])) for E_i in self.E])
        elif self.pose_relation == PoseRelation.rotation_angle_deg:
            self.error = np.array([
                abs(lie.so3_log(E_i[:3, :3])) * 180 / np.pi for E_i in self.E
            ])
        else:
            raise MetricsException("unsupported pose_relation")

ATE(absolute trajectory error) in KITTI only evaluates translation errors.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jinfagang picture jinfagang  路  4Comments

zsy372901 picture zsy372901  路  3Comments

doryashar picture doryashar  路  6Comments

ank700 picture ank700  路  3Comments

Gaoxiang-Zhang picture Gaoxiang-Zhang  路  3Comments