FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
Unit Quaternions

Rotations using quaternions. More...

Classes

struct  fsb::Quaternion
 Unit quaternion. More...
 

Functions

Quaternion fsb::quat_multiply (const Quaternion &q_a, const Quaternion &q_b)
 Multiply two quaternions.
 
Vec3 fsb::quat_rotate_vector (const Quaternion &q_in, const Vec3 &p_in)
 Rotate vector by quaternion.
 
Quaternion fsb::quat_conjugate (const Quaternion &q_in)
 Conjugate of quaternion.
 
real_t fsb::quat_norm (const Quaternion &q_in)
 2-norm of quaternion
 
void fsb::quat_normalize (Quaternion &q_inout)
 Normalize quaternion.
 
Vec3 fsb::quat_log (const Quaternion &q_in)
 Logarithm of unit quaternion.
 
Quaternion fsb::quat_exp (const Vec3 &v_in)
 Exponential of quaternion vector.
 
Quaternion fsb::quat_boxplus (const Quaternion &quat, const Vec3 &phi_delta)
 Add body-fixed rotation vector to quaternion.
 
Vec3 fsb::quat_boxminus (const Quaternion &q_a, const Quaternion &q_b)
 Get body-fixed rotation vector from quaternion difference.
 
Quaternion fsb::quat_circplus (const Quaternion &quat, const Vec3 &phi_delta)
 Add space frame rotation vector to quaternion.
 
Vec3 fsb::quat_circminus (const Quaternion &q_a, const Quaternion &q_b)
 Get space frame rotation vector from quaternion difference.
 
Quaternion fsb::quat_identity ()
 Identity quaternion.
 
Quaternion fsb::quat_rx (real_t rx)
 Rotation about x-axis.
 
Quaternion fsb::quat_ry (real_t ry)
 Rotation about y-axis.
 
Quaternion fsb::quat_rz (real_t rz)
 Rotation about z-axis.
 

Detailed Description

Rotations using quaternions.

Function Documentation

◆ quat_boxminus()

Vec3 fsb::quat_boxminus ( const Quaternion q_a,
const Quaternion q_b 
)

Get body-fixed rotation vector from quaternion difference.

\( q_a \boxminus q_b = 2 \log(q_b^{-1} q_a) \)

Parameters
q_aOrientation a
q_bOrietnation b
Returns
Body-fixed rotation vector from b to a in radians

◆ quat_boxplus()

Quaternion fsb::quat_boxplus ( const Quaternion quat,
const Vec3 phi_delta 
)

Add body-fixed rotation vector to quaternion.

\( q \boxplus \phi = q \exp\left(\tfrac{1}{2}\phi \right) \)

Parameters
quatQuaternion to rotate
phi_deltaRotation vector in radians
Returns
Rotated quaternion

◆ quat_circminus()

Vec3 fsb::quat_circminus ( const Quaternion q_a,
const Quaternion q_b 
)

Get space frame rotation vector from quaternion difference.

\( q_a \ominus q_b = 2 \log(q_a q_b^{-1}) \)

Parameters
q_aOrientation a
q_bOrietnation b
Returns
Space frame rotation vector from b to a in radians

◆ quat_circplus()

Quaternion fsb::quat_circplus ( const Quaternion quat,
const Vec3 phi_delta 
)

Add space frame rotation vector to quaternion.

\( q \oplus \phi = \exp\left(\tfrac{1}{2}\phi \right) q \)

Parameters
quatInitial orientation
phi_deltaAxis-angle rotation vector
Returns
Final orientation

◆ quat_conjugate()

Quaternion fsb::quat_conjugate ( const Quaternion q_in)

Conjugate of quaternion.

Returns conjugate: \( q^* = [q_w, -q_x, -q_y, -q_z] \)

Parameters
q_inQuaternion
Returns
Conjugate of quaternion

◆ quat_exp()

Quaternion fsb::quat_exp ( const Vec3 v_in)

Exponential of quaternion vector.

Parameters
v_inQuaternion vector with assumed scalar component of zero
Returns
Unit quaternion

◆ quat_identity()

Quaternion fsb::quat_identity ( )

Identity quaternion.

\( q = [1, 0, 0, 0] \)

Returns
Identity quaternion

◆ quat_log()

Vec3 fsb::quat_log ( const Quaternion q_in)

Logarithm of unit quaternion.

Parameters
q_inUnit quaternion
Returns
Logarithm of unit quaternion

◆ quat_multiply()

Quaternion fsb::quat_multiply ( const Quaternion q_a,
const Quaternion q_b 
)

Multiply two quaternions.

Returns quaternion multiplication:

\[ q = q_a q_b \]

Parameters
q_aQuaterion a
q_bQuaternion b
Returns
Quaternion product of a and b

◆ quat_norm()

real_t fsb::quat_norm ( const Quaternion q_in)

2-norm of quaternion

\( \| q \| = \sqrt{q_w^2 + q_x^2 + q_y^2 + q_z^2} \)

Parameters
q_inQuaternion
Returns
Norm of quaternion

◆ quat_normalize()

void fsb::quat_normalize ( Quaternion q_inout)

Normalize quaternion.

Parameters
q_inoutQuaternion to normalize on input, normalized on output

◆ quat_rotate_vector()

Vec3 fsb::quat_rotate_vector ( const Quaternion q_in,
const Vec3 p_in 
)

Rotate vector by quaternion.

Parameters
q_inQuaternion
p_inPoint to rotate
Returns
Rotated point

◆ quat_rx()

Quaternion fsb::quat_rx ( real_t  rx)

Rotation about x-axis.

Parameters
rxRotation angle in radians
Returns
Rotation unit quaternion

◆ quat_ry()

Quaternion fsb::quat_ry ( real_t  ry)

Rotation about y-axis.

Parameters
ryRotation angle in radians
Returns
Rotation unit quaternion

◆ quat_rz()

Quaternion fsb::quat_rz ( real_t  rz)

Rotation about z-axis.

Parameters
rzRotation angle in radians
Returns
Rotation unit quaternion