|
gtsam
|
Add the Pose3-specific operations used by the generic QCQP conversion code.
template <> struct traits<Pose3> specializes GTSAM's generic traits<T> interface for T=Pose3. Its static methods are called directly through the traits type. The member-template parameter D is the QCQP variable's column count, and if constexpr (D == 1) selects this exact homogenized vector formulation at compile time.
The lift discards the fixed last row [0, 0, 0, 1] of the Pose3 matrix and stores the first three entries of each column consecutively:
x = [1, r00, r10, r20, r01, r11, r21, r02, r12, r22, tx, ty, tz]'.
Eigen's segment<3>(start) selects three consecutive entries of x, while T.col(column).head<3>() selects the retained part of one matrix column. QcqpConstraints returns the symmetric matrices A and scalars b for the ten equations x' A x = b. Their translation rows and columns are zero, so these equations constrain only the embedded SO(3) rotation.
Static Public Member Functions | |
| template<int D = 1> | |
| static Matrix | QcqpValue (const Pose3 &value) |
| Return the D=1 homogenized QCQP variable x = [1, vec(R), tx, ty, tz] in column-major order. | |
| template<int D = 1> | |
| static std::vector< std::pair< Matrix, double > > | QcqpConstraints () |
| Return the ten D=1 lifted SE(3) manifold constraints A, b such that trace(x' A x) = b. | |
| template<int D> | |
| static Pose3 | FromQcqpValue (const Matrix &X) |
| Project a D=1 homogenized QCQP vector back to Pose3. | |
| Static Public Member Functions inherited from gtsam::internal::MatrixLieGroupTraits< Pose3, N > | |
| static LieAlgebra | Hat (const TangentVector &v) |
| static TangentVector | Vee (const LieAlgebra &X) |
| static Eigen::Matrix< double, product(N, N), 1 > | Vec (const Pose3 &m, OptionalJacobian< product(N, N), LieGroupTraits< Pose3 >::dimension > H={}) |
| Vectorize the matrix representation of a Lie group element. | |
| static TangentVector | AdjointTranspose (const Pose3 &m, const TangentVector &x, ChartJacobian Hm={}, ChartJacobian Hx={}) |
| static TangentVector | Adjoint (const Pose3 &m, const TangentVector &x, ChartJacobian Hm={}, ChartJacobian Hx={}) |
| static Jacobian | adjointMap (const TangentVector &xi) |
| static TangentVector | adjoint (const TangentVector &xi, const TangentVector &y, ChartJacobian Hxi={}, ChartJacobian H_y={}) |
| static TangentVector | adjointTranspose (const TangentVector &xi, const TangentVector &y, ChartJacobian Hxi={}, ChartJacobian H_y={}) |
| Static Public Member Functions inherited from gtsam::internal::LieGroupTraits< Pose3 > | |
| static TangentVector | Logmap (const Pose3 &m) |
| static Pose3 | Expmap (const TangentVector &v) |
| static Pose3 | Compose (const Pose3 &m1, const Pose3 &m2, ChartJacobian H1={}, ChartJacobian H2={}) |
| static Pose3 | Between (const Pose3 &m1, const Pose3 &m2, ChartJacobian H1={}, ChartJacobian H2={}) |
| static Pose3 | Inverse (const Pose3 &m, ChartJacobian H={}) |
| static Eigen::Matrix< double, dimension, dimension > | AdjointMap (const Pose3 &m) |
| static Pose3 | Identity () |
| Static Public Member Functions inherited from gtsam::internal::ManifoldTraits< Pose3 > | |
| static TangentVector | Local (const Pose3 &origin, const Pose3 &other) |
| static Pose3 | Retract (const Pose3 &origin, const TangentVector &v) |
| Static Public Member Functions inherited from gtsam::internal::GetDimensionImpl< Pose3, Pose3::dimension > | |
| static size_t | GetDimension (const Pose3 &m) |
| Static Public Member Functions inherited from gtsam::Testable< Pose3 > | |
| static void | Print (const Pose3 &m, const std::string &str="") |
| static bool | Equals (const Pose3 &m1, const Pose3 &m2, double tol=1e-8) |
Static Public Attributes | |
| static constexpr int | QcqpVectorDim = 13 |
| Dimension of the D=1 homogenized QCQP vector. | |
| static constexpr auto | dimension |
| Static Public Attributes inherited from gtsam::internal::ManifoldTraits< Pose3 > | |
| static constexpr auto | dimension |
Additional Inherited Members | |
| Public Member Functions inherited from gtsam::internal::ManifoldTraits< Pose3 > | |
| GTSAM_CONCEPT_ASSERT (HasManifoldPrereqs< Pose3 >) | |
| Public Member Functions inherited from gtsam::Testable< Pose3 > | |
| GTSAM_CONCEPT_ASSERT (HasTestablePrereqs< Pose3 >) | |
| Public Types inherited from gtsam::internal::MatrixLieGroupTraits< Pose3, N > | |
| using | LieAlgebra |
| using | TangentVector |
| using | Jacobian |
| using | ChartJacobian |
| Public Types inherited from gtsam::internal::LieGroupTraits< Pose3 > | |
| typedef OptionalJacobian< dimension, dimension > | ChartJacobian |
| typedef Pose3 | ManifoldType |
| typedef Eigen::Matrix< double, dimension, 1 > | TangentVector |
| using | Manifold |
| using | structure_category |
| using | group_flavor |
| using | Jacobian |
| Public Types inherited from gtsam::internal::ManifoldTraits< Pose3 > | |
| typedef Pose3 | ManifoldType |
| typedef manifold_tag | structure_category |
| typedef Eigen::Matrix< double, dimension, 1 > | TangentVector |
| typedef OptionalJacobian< dimension, dimension > | ChartJacobian |