FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_quaternion.h
1
2#ifndef FSB_QUATERNION_H
3#define FSB_QUATERNION_H
4
5#include "fsb_types.h"
6
7namespace fsb
8{
9
24{
28 Real qw = 1.0;
32 Real qx = 0.0;
36 Real qy = 0.0;
40 Real qz = 0.0;
41};
42
55Quaternion quat_multiply(const Quaternion& q_a, const Quaternion& q_b);
56
64Vec3 quat_rotate_vector(const Quaternion& q_in, const Vec3& p_in);
65
76
85Real quat_norm(const Quaternion& q_in);
86
92void quat_normalize(Quaternion& q_inout);
93
100Vec3 quat_log(const Quaternion& q_in);
101
108Quaternion quat_exp(const Vec3& v_in);
109
119Quaternion quat_boxplus(const Quaternion& quat, const Vec3& phi_delta);
120
130Vec3 quat_boxminus(const Quaternion& q_a, const Quaternion& q_b);
131
141Quaternion quat_circplus(const Quaternion& quat, const Vec3& phi_delta);
142
152Vec3 quat_circminus(const Quaternion& q_a, const Quaternion& q_b);
153
162
169Quaternion quat_rx(Real rx);
170
177Quaternion quat_ry(Real ry);
178
185Quaternion quat_rz(Real rz);
186
191} // namespace fsb
192
193#endif
Vec3 quat_boxminus(const Quaternion &q_a, const Quaternion &q_b)
Get body-fixed rotation vector from quaternion difference.
Definition fsb_quaternion.cpp:110
Quaternion quat_multiply(const Quaternion &q_a, const Quaternion &q_b)
Multiply two quaternions.
Definition fsb_quaternion.cpp:9
Quaternion quat_exp(const Vec3 &v_in)
Exponential of quaternion vector.
Definition fsb_quaternion.cpp:87
Quaternion quat_ry(Real ry)
Rotation about y-axis.
Definition fsb_quaternion.cpp:144
Vec3 quat_log(const Quaternion &q_in)
Logarithm of unit quaternion.
Definition fsb_quaternion.cpp:72
Quaternion quat_conjugate(const Quaternion &q_in)
Conjugate of quaternion.
Definition fsb_quaternion.cpp:37
Quaternion quat_rx(Real rx)
Rotation about x-axis.
Definition fsb_quaternion.cpp:140
Quaternion quat_circplus(const Quaternion &quat, const Vec3 &phi_delta)
Add space frame rotation vector to quaternion.
Definition fsb_quaternion.cpp:119
Quaternion quat_identity()
Identity quaternion.
Definition fsb_quaternion.cpp:135
void quat_normalize(Quaternion &q_inout)
Normalize quaternion.
Definition fsb_quaternion.cpp:47
Quaternion quat_rz(Real rz)
Rotation about z-axis.
Definition fsb_quaternion.cpp:148
Quaternion quat_boxplus(const Quaternion &quat, const Vec3 &phi_delta)
Add body-fixed rotation vector to quaternion.
Definition fsb_quaternion.cpp:103
Vec3 quat_circminus(const Quaternion &q_a, const Quaternion &q_b)
Get space frame rotation vector from quaternion difference.
Definition fsb_quaternion.cpp:126
Real quat_norm(const Quaternion &q_in)
2-norm of quaternion
Definition fsb_quaternion.cpp:42
Vec3 quat_rotate_vector(const Quaternion &q_in, const Vec3 &p_in)
Rotate vector by quaternion.
Definition fsb_quaternion.cpp:18
Unit quaternion.
Definition fsb_quaternion.h:24
Real qy
Y component.
Definition fsb_quaternion.h:36
Real qx
X component.
Definition fsb_quaternion.h:32
Real qz
Z component.
Definition fsb_quaternion.h:40
Real qw
Scalar component.
Definition fsb_quaternion.h:28
3D vector
Definition fsb_types.h:27