maix.ahrs
maix.ahrs module
You can use
maix.ahrs
to access this module with MaixPy
This module is generated from MaixPy and MaixCDK
Module
No module
Enum
Variable
PI
Math PI
item | description |
---|---|
value | 3.14159265358979323846f |
readonly | True |
C++ defination code:
const float PI = 3.14159265358979323846f
RAD2DEG
angle unit radian to degree.
item | description |
---|---|
value | 180.0f / PI |
readonly | True |
C++ defination code:
const float RAD2DEG = 180.0f / PI
DEG2RAD
angle unit degree to radian.
item | description |
---|---|
value | PI / 180.0f |
readonly | True |
C++ defination code:
const float DEG2RAD = PI / 180.0f
Function
Class
MahonyAHRS
class MahonyAHRS for Attitude Estimation from IMU data, a Complementary Filter,\nsupport accelerometer, gyroscope and magnetometer fusion.
C++ defination code:
class MahonyAHRS
kp
P of PI controller, a larger P (proportional gain) leads to faster response,\nbut it increases the risk of overshoot and oscillation.
item | description |
---|---|
type | var |
static | False |
readonly | False |
C++ defination code:
float kp
ki
I of PI controller, a larger I (integral gain) helps to eliminate steady-state errors more quickly,\nbut it can accumulate error over time, potentially causing instability or slow drift.
item | description |
---|---|
type | var |
static | False |
readonly | False |
C++ defination code:
float ki
__init__
def __init__(self, kp: float, ki: float) -> None
class MahonyAHRS constructor.
item | description |
---|---|
type | func |
param | kp: P of PI controller, a larger P (proportional gain) leads to faster response, but it increases the risk of overshoot and oscillation. ki: I of PI controller, a larger I (integral gain) helps to eliminate steady-state errors more quickly, but it can accumulate error over time, potentially causing instability or slow drift. |
static | False |
C++ defination code:
MahonyAHRS(float kp,float ki)
init
def init(self, ax: float, ay: float, az: float, mx: float = 0, my: float = 0, mz: float = 0) -> None
Initialize by accelerometer and magnetometer(optional).\nIf you not call this method mannually, get_angle and update method will automatically call it.
item | description |
---|---|
type | func |
param | ax: z axis of accelerometer, unit is g or raw data. ay: y axis of accelerometer, unit is g or raw data. mx: x axis of magnetometer, unit is uT or raw data, mx, my, mz all 0 means not use magnetometer. my: y axis of magnetometer, unit is uT or raw data, mx, my, mz all 0 means not use magnetometer. mz: z axis of magnetometer, unit is uT or raw data, mx, my, mz all 0 means not use magnetometer. |
static | False |
C++ defination code:
void init(float ax, float ay, float az, float mx = 0, float my = 0, float mz = 0)
update
def update(self, ax: float, ay: float, az: float, gx: float, gy: float, gz: float, mx: float, my: float, mz: float, dt: float) -> None
Update angles by accelerometer, gyroscope and magnetometer(optional).\nget_angle method will automatically call it.
item | description |
---|---|
type | func |
param | ax: z axis of gyroscope, unit is rad/s. ay: y axis of gyroscope, unit is rad/s. mx: x axis of magnetometer, unit is uT or raw data, mx, my, mz all 0 means not use magnetometer. my: y axis of magnetometer, unit is uT or raw data, mx, my, mz all 0 means not use magnetometer. mz: z axis of magnetometer, unit is uT or raw data, mx, my, mz all 0 means not use magnetometer. dt: Delta time between two times call update method. |
static | False |
C++ defination code:
void update(float ax, float ay, float az, float gx, float gy, float gz, float mx, float my, float mz, float dt)
get_angle
def get_angle(self, acc: maix.Vector3f, gyro: maix.Vector3f, mag: maix.Vector3f, dt: float, radian: bool = False) -> maix.Vector3f
Get angle by mahony complementary filter, will automatically call update method,\nand automatically call init in first time.
item | description |
---|---|
type | func |
param | acc: accelerometer data, unit is g or raw data. maix.Vector3f type. gyro: gyroscope data, unit can be rad/s or degree/s, if rad/s, arg radian should be true. maix.Vector3f type. mag: magnetometer data, optional, if no magnetometer, set all value to 0. maix.Vector3f type. dt: delta T of two time call get_anle, unit is second, float type. radian: if gyro's unit is rad/s, set this arg to true, degree/s set to false. |
return | rotation angle data, maix.Vector3f type. |
static | False |
C++ defination code:
Vector3f get_angle(Vector3f acc, Vector3f gyro,Vector3f mag, float dt, bool radian = false)
reset
def reset(self) -> None
reset to not initialized status.
item | description |
---|---|
type | func |
static | False |
C++ defination code:
void reset()