Moved things to inl
parent
e93149babb
commit
f7ad80673c
|
|
@ -97,6 +97,32 @@ typename SO<N>::TangentVector SO<N>::ChartAtOrigin::Local(const SO& R,
|
||||||
return -2 * Vee(X);
|
return -2 * Vee(X);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <int N>
|
||||||
|
typename SO<N>::MatrixDD SO<N>::AdjointMap() const {
|
||||||
|
throw std::runtime_error(
|
||||||
|
"SO<N>::AdjointMap only implemented for SO3 and SO4.");
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int N>
|
||||||
|
SO<N> SO<N>::Expmap(const TangentVector& omega, ChartJacobian H) {
|
||||||
|
throw std::runtime_error("SO<N>::Expmap only implemented for SO3 and SO4.");
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int N>
|
||||||
|
typename SO<N>::MatrixDD SO<N>::ExpmapDerivative(const TangentVector& omega) {
|
||||||
|
throw std::runtime_error("SO<N>::ExpmapDerivative only implemented for SO3.");
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int N>
|
||||||
|
typename SO<N>::TangentVector SO<N>::Logmap(const SO& R, ChartJacobian H) {
|
||||||
|
throw std::runtime_error("SO<N>::Logmap only implemented for SO3 and SO4.");
|
||||||
|
}
|
||||||
|
|
||||||
|
template <int N>
|
||||||
|
typename SO<N>::MatrixDD SO<N>::LogmapDerivative(const TangentVector& omega) {
|
||||||
|
throw std::runtime_error("O<N>::LogmapDerivative only implemented for SO3.");
|
||||||
|
}
|
||||||
|
|
||||||
template <int N>
|
template <int N>
|
||||||
typename SO<N>::VectorN2 SO<N>::vec(
|
typename SO<N>::VectorN2 SO<N>::vec(
|
||||||
OptionalJacobian<internal::NSquaredSO(N), dimension> H) const {
|
OptionalJacobian<internal::NSquaredSO(N), dimension> H) const {
|
||||||
|
|
|
||||||
|
|
@ -220,27 +220,24 @@ class SO : public LieGroup<SO<N>, internal::DimensionSO(N)> {
|
||||||
/// @name Lie Group
|
/// @name Lie Group
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
MatrixDD AdjointMap() const {
|
/// Adjoint map
|
||||||
throw std::runtime_error(
|
MatrixDD AdjointMap() const;
|
||||||
"SO<N>::AdjointMap only implemented for SO3 and SO4.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exponential map at identity - create a rotation from canonical coordinates
|
* Exponential map at identity - create a rotation from canonical coordinates
|
||||||
*/
|
*/
|
||||||
static SO Expmap(const TangentVector& omega, ChartJacobian H = boost::none) {
|
static SO Expmap(const TangentVector& omega, ChartJacobian H = boost::none);
|
||||||
throw std::runtime_error("SO<N>::Expmap only implemented for SO3 and SO4.");
|
|
||||||
}
|
/// Derivative of Expmap, currently only defined for SO3
|
||||||
|
static MatrixDD ExpmapDerivative(const TangentVector& omega);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log map at identity - returns the canonical coordinates of this rotation
|
* Log map at identity - returns the canonical coordinates of this rotation
|
||||||
*/
|
*/
|
||||||
static TangentVector Logmap(const SO& R, ChartJacobian H = boost::none) {
|
static TangentVector Logmap(const SO& R, ChartJacobian H = boost::none);
|
||||||
throw std::runtime_error("SO<N>::Logmap only implemented for SO3 and SO4.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// template <int N_ = N, typename = IsSO3<N_>>
|
/// Derivative of Logmap, currently only defined for SO3
|
||||||
static Matrix3 LogmapDerivative(const Vector3& omega);
|
static MatrixDD LogmapDerivative(const TangentVector& omega);
|
||||||
|
|
||||||
// inverse with optional derivative
|
// inverse with optional derivative
|
||||||
using LieGroup<SO<N>, internal::DimensionSO(N)>::inverse;
|
using LieGroup<SO<N>, internal::DimensionSO(N)>::inverse;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue