From ea9d298e955b2992980e396a3ebcc085390fd841 Mon Sep 17 00:00:00 2001 From: Joan Sola <jsola@iri.upc.edu> Date: Sat, 23 Apr 2022 23:00:32 +0200 Subject: [PATCH] Normalize homogeneous landmark after transformation to world frame --- src/processor/processor_visual_odometry.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/processor/processor_visual_odometry.cpp b/src/processor/processor_visual_odometry.cpp index 0be8e83c3..ae13d5d32 100644 --- a/src/processor/processor_visual_odometry.cpp +++ b/src/processor/processor_visual_odometry.cpp @@ -492,7 +492,6 @@ LandmarkBasePtr ProcessorVisualOdometry::emplaceLandmark(FeatureBasePtr _feat) double distance = 1; Eigen::Vector4d vec_homogeneous_c; vec_homogeneous_c = {point3d(0),point3d(1),point3d(2),point3d.norm()/distance}; - vec_homogeneous_c.normalize(); //TODO: lmk from camera to world coordinate frame. Transform<double,3,Isometry> T_w_r @@ -505,6 +504,9 @@ LandmarkBasePtr ProcessorVisualOdometry::emplaceLandmark(FeatureBasePtr _feat) * T_r_c * vec_homogeneous_c; + // normalize to make equivalent to a unit quaternion + vec_homogeneous_w.normalize(); + auto lmk_hp_ptr = LandmarkBase::emplace<LandmarkHp>(getProblem()->getMap(), vec_homogeneous_w, feat_pi->getKeyPoint().getDescriptor()); -- GitLab