- class Unit3(rot3=None)#
Direction in R^3, represented as a
Rot3that transforms [0, 0, 1] to the desired direction.
The storage is therefore a quaternion and the tangent space is 2 dimensional. Most operations are implemented using operations from
Note: an alternative implementation could directly store a unit vector and define its boxplus manifold as described in Appendix B.2 of [Hertzberg 2013]. This can be done by finding the Householder reflector of x and use it to transform the exponential map of delta, which is a small perturbation in the tangent space (R^2). Namely:
x.retract(delta) = x [+] delta = Rx * Exp(delta), where Exp(delta) = [sinc(||delta||) * delta, cos(||delta||)], and Rx = (I - 2 vv^T / (v^Tv))X, v = x - e_z != 0, X is a matrix negating 2nd vector component = I , x = e_z
[Hertzberg 2013] Integrating Generic Sensor Fusion Algorithms with Sound State Representations through Encapsulation of Manifolds
rot3 (Rot3) –
- E_Z =    #
Flat list representation of the underlying storage, length of
storage_dim(). This is used purely for plumbing, it is NOT like a tangent space.
- classmethod from_storage(vec)#
Construct from a flat list representation. Opposite of
- classmethod symbolic(name, **kwargs)#
Construct a symbolic element with the given name prefix. Kwargs are forwarded to
sf.Symbol(for example, sympy assumptions).
Apply the group operation with other.
- classmethod from_tangent(v, epsilon=0.0)#
Mapping from the tangent space vector about identity into a group element.
Mapping from this element to the tangent space vector about identity.
- classmethod from_vector(a, epsilon=0.0)#
Unit3that points along the direction of vector
adoes not have to be a unit vector.