file
SO3Utils.h
Namespaces
- namespace iDynTree
Classes
- struct iDynTree::GeodesicL2MeanOptions
- Struct containing the options for geodesicL2MeanRotation and geodesicL2WeightedMeanRotation.
Functions
-
auto isValidRotationMatrix(const iDynTree::
Rotation& r) -> bool - Check if the rotation matrix is valid.
-
auto geodesicL2Distance(const iDynTree::
Rotation& rotation1, const iDynTree:: Rotation& rotation2) -> double - Computes the geodesic distance between two rotation matrices.
-
auto geodesicL2MeanRotation(const std::vector<iDynTree::
Rotation>& inputRotations, iDynTree:: Rotation& meanRotation, const GeodesicL2MeanOptions& options = GeodesicL2MeanOptions()) -> bool - Computes the geodesic mean amongst the provided rotations.
-
auto geodesicL2WeightedMeanRotation(const std::vector<iDynTree::
Rotation>& inputRotations, const std::vector<double>& weights, iDynTree:: Rotation& meanRotation, const GeodesicL2MeanOptions& options = GeodesicL2MeanOptions()) -> bool - Computes the weighted geodesic mean amongst the provided rotations.
Function documentation
bool isValidRotationMatrix(const iDynTree:: Rotation& r)
Check if the rotation matrix is valid.
Parameters | |
---|---|
r | The input rotation |
Returns | True if it is a rotation matrix. |
It checks that the determinant is 1, that the Frobenius norm is finite and that it is orthogonal.
double geodesicL2Distance(const iDynTree:: Rotation& rotation1,
const iDynTree:: Rotation& rotation2)
Computes the geodesic distance between two rotation matrices.
Parameters | |
---|---|
rotation1 | The first rotation. |
rotation2 | The other rotation. |
Returns | the geodesic L2 distance between the two rotation matrices. |
It implements the angular distance presented in Sec. 4 of "Rotation Averaging" (available at http:/
bool geodesicL2MeanRotation(const std::vector<iDynTree:: Rotation>& inputRotations,
iDynTree:: Rotation& meanRotation,
const GeodesicL2MeanOptions& options = GeodesicL2MeanOptions())
Computes the geodesic mean amongst the provided rotations.
Parameters | |
---|---|
inputRotations | The rotations to average. |
meanRotation | The mean rotation. |
options | The options for the inner optimization (refinement) loop. |
Returns | false in case of failure, true otherwise. |
It implements Algorithm 1 in Sec. 5.3 of "Rotation Averaging" (available at http:/
Inside it calls geodesicL2WeightedMeanRotation.
bool geodesicL2WeightedMeanRotation(const std::vector<iDynTree:: Rotation>& inputRotations,
const std::vector<double>& weights,
iDynTree:: Rotation& meanRotation,
const GeodesicL2MeanOptions& options = GeodesicL2MeanOptions())
Computes the weighted geodesic mean amongst the provided rotations.
Parameters | |
---|---|
inputRotations | The rotations to average. |
weights | The weights for each rotation. If this vector is null assumes that each weight is 1.0 (equivalent to geodesicL2MeanRotation) |
meanRotation | The weighted mean rotation. |
options | The options for the inner optimization (refinement) loop. |
Returns | false in case of failure, true otherwise. |
It implements Algorithm 1 in Sec. 5.3 of "Rotation Averaging" (available at http:/