@@ -56,18 +56,21 @@ class ExtendedPose3
5656 ExtendedPose3<K, void >, Derived>;
5757 inline constexpr static int dimension =
5858 (K == Eigen::Dynamic) ? Eigen::Dynamic : 3 + 3 * K;
59- inline constexpr static int matrix_dim =
59+ inline constexpr static int matrixDim =
6060 (K == Eigen::Dynamic) ? Eigen::Dynamic : 3 + K;
6161
62- using Base = MatrixLieGroup<This, dimension, matrix_dim >;
62+ using Base = MatrixLieGroup<This, dimension, matrixDim >;
6363 using TangentVector = typename Base::TangentVector;
6464 using Jacobian = typename Base::Jacobian;
6565 using ChartJacobian = typename Base::ChartJacobian;
6666 using ComponentJacobian =
6767 std::conditional_t <dimension == Eigen::Dynamic,
6868 OptionalJacobian<Eigen::Dynamic, Eigen::Dynamic>,
6969 OptionalJacobian<3 , dimension>>;
70- using LieAlgebra = Eigen::Matrix<double , matrix_dim, matrix_dim>;
70+ // / Homogeneous matrix representation in the group.
71+ using MatrixRep = Eigen::Matrix<double , matrixDim, matrixDim>;
72+ // / Lie algebra matrix type used by Hat/Vee.
73+ using LieAlgebra = Eigen::Matrix<double , matrixDim, matrixDim>;
7174 using Matrix3K = Eigen::Matrix<double , 3 , K>;
7275
7376 static_assert (K == Eigen::Dynamic || K >= 1 ,
@@ -93,7 +96,7 @@ class ExtendedPose3
9396 * The manifold dimension is 3+3k and matrix size is (3+k)x(3+k).
9497 */
9598 template <int K_ = K, typename = IsFixed<K_>>
96- ExtendedPose3 ();
99+ ExtendedPose3 () : R_(Rot3::Identity()), t_(Matrix3K::Zero()) {}
97100
98101 /* *
99102 * Construct a dynamic-size identity element.
@@ -103,7 +106,10 @@ class ExtendedPose3
103106 * The manifold dimension is 3+3k and matrix size is (3+k)x(3+k).
104107 */
105108 template <int K_ = K, typename = IsDynamic<K_>>
106- explicit ExtendedPose3 (size_t k = 0 );
109+ explicit ExtendedPose3 (size_t k = 0 )
110+ : R_(Rot3::Identity()), t_(3 , static_cast <Eigen::Index>(k)) {
111+ t_.setZero ();
112+ }
107113
108114 /* * Copy constructor. */
109115 ExtendedPose3 (const ExtendedPose3&) = default ;
@@ -125,7 +131,7 @@ class ExtendedPose3
125131 * @param T Homogeneous matrix in R^((3+k)x(3+k)).
126132 * Top-left 3x3 is R, top-right 3xk stores x_1..x_k.
127133 */
128- explicit ExtendedPose3 (const LieAlgebra & T);
134+ explicit ExtendedPose3 (const MatrixRep & T);
129135
130136 // / @}
131137 // / @name Access
@@ -206,7 +212,9 @@ class ExtendedPose3
206212 * @return Identity with manifold dimension 3+3k and matrix size 3+k.
207213 */
208214 template <int K_ = K, typename = IsFixed<K_>>
209- static This Identity ();
215+ static This Identity () {
216+ return MakeReturn (ExtendedPose3 ());
217+ }
210218
211219 /* *
212220 * Identity element for dynamic-size K.
@@ -215,7 +223,9 @@ class ExtendedPose3
215223 * @return Identity with manifold dimension 3+3k and matrix size 3+k.
216224 */
217225 template <int K_ = K, typename = IsDynamic<K_>>
218- static This Identity (size_t k = 0 );
226+ static This Identity (size_t k = 0 ) {
227+ return MakeReturn (ExtendedPose3 (k));
228+ }
219229
220230 /* *
221231 * Group inverse.
@@ -348,7 +358,7 @@ class ExtendedPose3
348358 *
349359 * @return Matrix in R^((3+k)x(3+k)).
350360 */
351- LieAlgebra matrix () const ;
361+ MatrixRep matrix () const ;
352362
353363 /* *
354364 * Hat operator from tangent to Lie algebra.
@@ -411,12 +421,12 @@ using ExtendedPose3Dynamic = ExtendedPose3<Eigen::Dynamic>;
411421template <int K, class Derived >
412422struct traits <ExtendedPose3<K, Derived>>
413423 : public internal::MatrixLieGroup<ExtendedPose3<K, Derived>,
414- ExtendedPose3<K, Derived>::matrix_dim > {};
424+ ExtendedPose3<K, Derived>::matrixDim > {};
415425
416426template <int K, class Derived >
417427struct traits <const ExtendedPose3<K, Derived>>
418428 : public internal::MatrixLieGroup<ExtendedPose3<K, Derived>,
419- ExtendedPose3<K, Derived>::matrix_dim > {};
429+ ExtendedPose3<K, Derived>::matrixDim > {};
420430
421431} // namespace gtsam
422432
0 commit comments