Sensor Fusion Library 0.6.1
Orientation sensing for Espressif (ESP32, ESP8266) processors
Loading...
Searching...
No Matches
orientation.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016-2017 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
16#ifndef ORIENTATION_H
17#define ORIENTATION_H
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
24typedef struct Quaternion
25{
26 float q0;
27 float q1;
28 float q2;
29 float q3;
31
32// function prototypes
35 float fR[][3],
36 float fGc[]
37);
40 float fR[][3],
41 float fGc[]
42);
45 float fR[][3],
46 float fGc[]
47);
50 float fR[][3],
51 float fBc[]
52);
55 float fR[][3],
56 float fBc[]
57);
60 float fR[][3],
61 float fBc[]
62);
64void feCompassNED(
65 float fR[][3],
66 float *pfDelta,
67 float *pfsinDelta,
68 float *pfcosDelta,
69 float fBc[],
70 float fGc[],
71 float *pfmodBc,
72 float *pfmodGc
73);
76 float fR[][3],
77 float *pfDelta,
78 float *pfsinDelta,
79 float *pfcosDelta,
80 float fBc[],
81 float fGc[],
82 float *pfmodBc,
83 float *pfmodGc
84);
86void feCompassWin8(
87 float fR[][3],
88 float *pfDelta,
89 float *pfsinDelta,
90 float *pfcosDelta,
91 float fBc[],
92 float fGc[],
93 float *pfmodBc,
94 float *pfmodGc
95);
98 float R[][3],
99 float *pfPhiDeg,
100 float *pfTheDeg,
101 float *pfPsiDeg,
102 float *pfRhoDeg,
103 float *pfChiDeg
104);
107 float R[][3],
108 float *pfPhiDeg,
109 float *pfTheDeg,
110 float *pfPsiDeg,
111 float *pfRhoDeg,
112 float *pfChiDeg
113);
116 float R[][3],
117 float *pfPhiDeg,
118 float *pfTheDeg,
119 float *pfPsiDeg,
120 float *pfRhoDeg,
121 float *pfChiDeg
122);
125 float R[][3],
126 Quaternion *pq
127);
130 float R[][3],
131 const Quaternion *pq
132);
134void qAeqBxC(
135 Quaternion *pqA,
136 const Quaternion *pqB,
137 const Quaternion *pqC
138);
140void qAeqAxB(
141 Quaternion *pqA,
142 const Quaternion *pqB
143);
146 const Quaternion *pqA,
147 const Quaternion *pqB
148);
150void fqAeqNormqA(
151 Quaternion *pqA
152);
154void fqAeq1(
155 Quaternion *pqA
156);
159 Quaternion *pq,
160 const float rvecdeg[],
161 float fscaling
162);
165 Quaternion *pq,
166 float rvecdeg[]
167);
170 Quaternion *pq,
171 Quaternion *pLPq,
172 float flpf,
173 float fdeltat,
174 float fOmega[]
175);
178void fveqconjgquq(
179 Quaternion *pfq,
180 float fu[],
181 float fv[]
182);
183
184#ifdef __cplusplus
185}
186#endif
187
188#endif // #ifndef ORIENTATION_H
void fQuaternionFromRotationMatrix(float R[][3], Quaternion *pq)
compute the orientation quaternion from a 3x3 rotation matrix
void qAeqBxC(Quaternion *pqA, const Quaternion *pqB, const Quaternion *pqC)
function compute the quaternion product qB * qC
void fWin8AnglesDegFromRotationMatrix(float R[][3], float *pfPhiDeg, float *pfTheDeg, float *pfPsiDeg, float *pfRhoDeg, float *pfChiDeg)
extract the Windows 8 angles in degrees from the Windows 8 rotation matrix
void qAeqAxB(Quaternion *pqA, const Quaternion *pqB)
function compute the quaternion product qA = qA * qB
void f3DOFTiltWin8(float fR[][3], float fGc[])
Windows 8 accelerometer 3DOF tilt function computing, rotation matrix fR.
void f3DOFMagnetometerMatrixNED(float fR[][3], float fBc[])
Aerospace NED magnetometer 3DOF flat eCompass function, computing rotation matrix fR.
void fqAeqNormqA(Quaternion *pqA)
function normalizes a rotation quaternion and ensures q0 is non-negative
void feCompassAndroid(float fR[][3], float *pfDelta, float *pfsinDelta, float *pfcosDelta, float fBc[], float fGc[], float *pfmodBc, float *pfmodGc)
Android: basic 6DOF e-Compass function, computing rotation matrix fR and magnetic inclination angle f...
void f3DOFTiltAndroid(float fR[][3], float fGc[])
Android accelerometer 3DOF tilt function computing, rotation matrix fR.
void fveqconjgquq(Quaternion *pfq, float fu[], float fv[])
void fqAeq1(Quaternion *pqA)
set a quaternion to the unit quaternion
void f3DOFMagnetometerMatrixAndroid(float fR[][3], float fBc[])
Android magnetometer 3DOF flat eCompass function, computing rotation matrix fR.
void fAndroidAnglesDegFromRotationMatrix(float R[][3], float *pfPhiDeg, float *pfTheDeg, float *pfPsiDeg, float *pfRhoDeg, float *pfChiDeg)
extract the Android angles in degrees from the Android rotation matrix
void f3DOFMagnetometerMatrixWin8(float fR[][3], float fBc[])
Windows 8 magnetometer 3DOF flat eCompass function, computing rotation matrix fR.
void fQuaternionFromRotationVectorDeg(Quaternion *pq, const float rvecdeg[], float fscaling)
computes normalized rotation quaternion from a rotation vector (deg)
void fRotationVectorDegFromQuaternion(Quaternion *pq, float rvecdeg[])
computes rotation vector (deg) from rotation quaternion
void fNEDAnglesDegFromRotationMatrix(float R[][3], float *pfPhiDeg, float *pfTheDeg, float *pfPsiDeg, float *pfRhoDeg, float *pfChiDeg)
extract the NED angles in degrees from the NED rotation matrix
void feCompassWin8(float fR[][3], float *pfDelta, float *pfsinDelta, float *pfcosDelta, float fBc[], float fGc[], float *pfmodBc, float *pfmodGc)
Win8: basic 6DOF e-Compass function, computing rotation matrix fR and magnetic inclination angle fDel...
void fRotationMatrixFromQuaternion(float R[][3], const Quaternion *pq)
compute the rotation matrix from an orientation quaternion
void fLPFOrientationQuaternion(Quaternion *pq, Quaternion *pLPq, float flpf, float fdeltat, float fOmega[])
function low pass filters an orientation quaternion and computes virtual gyro rotation rate
Quaternion qconjgAxB(const Quaternion *pqA, const Quaternion *pqB)
function compute the quaternion product conjg(qA) * qB
void f3DOFTiltNED(float fR[][3], float fGc[])
Aerospace NED accelerometer 3DOF tilt function, computing rotation matrix fR.
void feCompassNED(float fR[][3], float *pfDelta, float *pfsinDelta, float *pfcosDelta, float fBc[], float fGc[], float *pfmodBc, float *pfmodGc)
NED: basic 6DOF e-Compass function, computing rotation matrix fR and magnetic inclination angle fDelt...
quaternion structure definition
Definition orientation.h:25
float q3
z vector component
Definition orientation.h:29
float q0
scalar component
Definition orientation.h:26
float q1
x vector component
Definition orientation.h:27
float q2
y vector component
Definition orientation.h:28