MRP to be the attitude representation stored in a context #14
Description
Modified Rodrigues Parameters have been developed for the aerospace industry and recommended by Schaub (cf. Basilisk) and as the attitude representation in NASA's Best Practices for Navigation Filters.
Some of the main reasons include:
- Ease of interpolation, although switching to the shadow set may lead to interpolation issues
- Only three numbers proportional to the tangent of the quarter of the angle -- which implies that a 32 bit representation may be sufficient in many (most?) cases
- Ease of conversion to a skew-symmetric matrix and to quaternions
- No ambiguity in quaternion nomenclature or structure
- The orientation path between two MRPs is necessarily the shortest path (which is not true for quaternions)
- MRPs are necessarily normalized
Proposed signatures
This would be available everywhere by default.
MRP definition
pub struct MRP {
s1: f32,
s2: f32,
s3: f32,
is_singular: bool
}
Question: are 32 bits indeed enough to represent all rotations without loss compared to a 64 bit unit quaternion? This question can be easily answered with a plot showing the error in conversion to/from a 32 bit MRP and 64 bit quaternion.
Question: if the shadow set is always enforced, is there a need for the is_singular
parameter?
Nomenclature
The nomenclature from Schaub and Junkins shall be used throughout the implementation, including for the naming of the operations (e.g. Add
vs Mul
).