internal::LieGroup needed if you also want Testable traits
parent
42b0f0f4d4
commit
9d522c72f3
|
|
@ -291,10 +291,10 @@ typedef std::pair<Point2,Point2> Point2Pair;
|
|||
GTSAM_EXPORT boost::optional<Pose2> align(const std::vector<Point2Pair>& pairs);
|
||||
|
||||
template<>
|
||||
struct traits<Pose2> : public internal::LieGroupTraits<Pose2> {};
|
||||
struct traits<Pose2> : public internal::LieGroup<Pose2> {};
|
||||
|
||||
template<>
|
||||
struct traits<const Pose2> : public internal::LieGroupTraits<Pose2> {};
|
||||
struct traits<const Pose2> : public internal::LieGroup<Pose2> {};
|
||||
|
||||
} // namespace gtsam
|
||||
|
||||
|
|
|
|||
|
|
@ -324,10 +324,10 @@ GTSAM_EXPORT boost::optional<Pose3> align(const std::vector<Point3Pair>& pairs);
|
|||
typedef std::vector<Pose3> Pose3Vector;
|
||||
|
||||
template<>
|
||||
struct traits<Pose3> : public internal::LieGroupTraits<Pose3> {};
|
||||
struct traits<Pose3> : public internal::LieGroup<Pose3> {};
|
||||
|
||||
template<>
|
||||
struct traits<const Pose3> : public internal::LieGroupTraits<Pose3> {};
|
||||
struct traits<const Pose3> : public internal::LieGroup<Pose3> {};
|
||||
|
||||
|
||||
} // namespace gtsam
|
||||
|
|
|
|||
|
|
@ -208,9 +208,9 @@ namespace gtsam {
|
|||
};
|
||||
|
||||
template<>
|
||||
struct traits<Rot2> : public internal::LieGroupTraits<Rot2> {};
|
||||
struct traits<Rot2> : public internal::LieGroup<Rot2> {};
|
||||
|
||||
template<>
|
||||
struct traits<const Rot2> : public internal::LieGroupTraits<Rot2> {};
|
||||
struct traits<const Rot2> : public internal::LieGroup<Rot2> {};
|
||||
|
||||
} // gtsam
|
||||
|
|
|
|||
|
|
@ -463,9 +463,9 @@ namespace gtsam {
|
|||
GTSAM_EXPORT std::pair<Matrix3,Vector3> RQ(const Matrix3& A);
|
||||
|
||||
template<>
|
||||
struct traits<Rot3> : public internal::LieGroupTraits<Rot3> {};
|
||||
struct traits<Rot3> : public internal::LieGroup<Rot3> {};
|
||||
|
||||
template<>
|
||||
struct traits<const Rot3> : public internal::LieGroupTraits<Rot3> {};
|
||||
struct traits<const Rot3> : public internal::LieGroup<Rot3> {};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -129,11 +129,11 @@ public:
|
|||
};
|
||||
|
||||
template<>
|
||||
struct traits<SO3> : public internal::LieGroupTraits<SO3> {
|
||||
struct traits<SO3> : public internal::LieGroup<SO3> {
|
||||
};
|
||||
|
||||
template<>
|
||||
struct traits<const SO3> : public internal::LieGroupTraits<SO3> {
|
||||
struct traits<const SO3> : public internal::LieGroup<SO3> {
|
||||
};
|
||||
} // end namespace gtsam
|
||||
|
||||
|
|
|
|||
|
|
@ -74,30 +74,6 @@ Vector9 PoseRTV::Logmap(const PoseRTV& p, ChartJacobian H) {
|
|||
return (Vector9() << Lx, Lv).finished();
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
PoseRTV PoseRTV::retract(const Vector& v,
|
||||
ChartJacobian Horigin,
|
||||
ChartJacobian Hv) const {
|
||||
if (Horigin || Hv) CONCEPT_NOT_IMPLEMENTED;
|
||||
assert(v.size() == 9);
|
||||
// First order approximation
|
||||
Pose3 newPose = pose().retract(sub(v, 0, 6));
|
||||
Velocity3 newVel = velocity() + rotation() * Point3(sub(v, 6, 9));
|
||||
return PoseRTV(newPose, newVel);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
Vector PoseRTV::localCoordinates(const PoseRTV& p1,
|
||||
ChartJacobian Horigin,
|
||||
ChartJacobian Hp) const {
|
||||
if (Horigin || Hp) CONCEPT_NOT_IMPLEMENTED;
|
||||
const Pose3& x0 = pose(), &x1 = p1.pose();
|
||||
// First order approximation
|
||||
Vector6 poseLogmap = x0.localCoordinates(x1);
|
||||
Vector3 lv = rotation().unrotate(p1.velocity() - velocity()).vector();
|
||||
return (Vector(9) << poseLogmap, lv).finished();
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
PoseRTV inverse_(const PoseRTV& p) { return p.inverse(); }
|
||||
PoseRTV PoseRTV::inverse(ChartJacobian H1) const {
|
||||
|
|
|
|||
|
|
@ -223,6 +223,6 @@ private:
|
|||
|
||||
|
||||
template<>
|
||||
struct traits<PoseRTV> : public internal::LieGroupTraits<PoseRTV> {};
|
||||
struct traits<PoseRTV> : public internal::LieGroup<PoseRTV> {};
|
||||
|
||||
} // \namespace gtsam
|
||||
|
|
|
|||
|
|
@ -148,5 +148,5 @@ public:
|
|||
};
|
||||
|
||||
template<>
|
||||
struct traits<Similarity3> : public internal::LieGroupTraits<Similarity3> {};
|
||||
struct traits<Similarity3> : public internal::LieGroup<Similarity3> {};
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue