Introduction
Abstract
This library is primarily derived from the contributions of Geir Istad and has been released as a pip-installable package. The main objective of this library is to streamline operations involving vectors and quaternions, particularly in the context of working with Inertial Measurement Units (IMUs).
Library Structure and Functions
-
Quaternion:
-
get_product: Computes and returns the product of the current quaternion with another quaternion.
-
get_conjugate: Calculates and returns the conjugate of the quaternion.
-
get_magnitude: Determines and provides the magnitude of the quaternion.
-
normalize: Normalizes the quaternion to ensure unit length.
-
get_normalized: Retrieves the normalized form of the quaternion.
-
-
XYZVector:
-
get_magnitude: Computes and returns the magnitude of the vector.
-
normalize: Normalizes the vector to maintain unit length.
-
get_normalized: Retrieves the normalized version of the vector.
-
rotate: Rotates the vector based on a given quaternion.
-
get_rotated: Returns the vector after rotation, as per the specified quaternion.
-
About Rotation
In many scenarios, particularly in the context of Inertial Measurement Unit (IMU) applications, the rotation of a vector using a quaternion is a common requirement. For instance, the acceleration data acquired from an IMU is typically represented in a "body-frame," aligning with the IMU's axes.
However, in the realm of Inertial Navigation Systems (INS), having access to a world-frame acceleration vector is essential for accurate navigation. The illustration below illustrates the orientation of the world-frame and body-frame axes:
The rotation of a vector using a quaternion is achieved through the following formula:
$$A_p=q\times A\times q^*$$
where $q^*$ represents the conjugate of the quaternion q, and $A_p$ denotes the rotated original vector $A$.
Example
Let's consider the scenario where the accelerometer outputs $(0, g, 0)$, with $g$ representing the gravitational acceleration. Assuming the quaternion corresponding to this vector (obtained from the IMU) is $(0.7071, 0.7071, 0, 0)$.
Upon rotating the acceleration vector using the provided quaternion, the resulting vector would be $(0, 0, g)$, now aligned towards the Earth (assuming the z-axis points towards the Earth).
Metadata
Release files for quat 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quat-1.0.0.tar.gz | 4.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quat-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.9 kB
Release files / quat-1.0.0.tar.gz
| Download URL | quat-1.0.0.tar.gz |
|---|---|
| Size | 4.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7de1a9c25b40648b837ada6ba2efea67e031722971fe1e5266bc0716721c8abb
|
|
BLAKE2b-256 checksum How to use checksums |
df3a1be655cf1961678f1b66f77cbd64a9d8263f343effc4d0aeed8fa95ddefa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.18
|
Release files / quat-1.0.0-py3-none-any.whl
| Download URL | quat-1.0.0-py3-none-any.whl |
|---|---|
| Size | 3.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c0c80943f89f2da22d1888cb732e9e7d6c19b1eeefdbeb6d26d1e2d51a63098c
|
|
BLAKE2b-256 checksum How to use checksums |
0aaa32d00b90603c2146a6385076e249320cddf3ca17a50773a72b5654f42600
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.18
|