70 lines
2.6 KiB
C
70 lines
2.6 KiB
C
#ifndef AHRS_H
|
||
#define AHRS_H
|
||
|
||
#include "AHRS_MiddleWare.h"
|
||
|
||
/**
|
||
* @brief 根据加速度的数据,磁力计的数据进行四元数初始化
|
||
* @author luopin
|
||
* @param[in] 需要初始化的四元数数组
|
||
* @param[in] 用于初始化的加速度计,(x,y,z)不为空 单位 m/s2
|
||
* @param[in] 用于初始化的磁力计计,(x,y,z)不为空 单位 uT
|
||
* @retval 返回空
|
||
*/
|
||
extern void AHRS_init(fp32 quat[4], const fp32 accel[3], const fp32 mag[3]);
|
||
|
||
/**
|
||
* @brief 根据陀螺仪的数据,加速度的数据,磁力计的数据进行四元数更新
|
||
* @author luopin
|
||
* @param[in] 需要更新的四元数数组
|
||
* @param[in] 更新定时时间,固定定时调用,例如1000Hz,传入的数据为0.001f,
|
||
* @param[in] 用于更新的陀螺仪数据,数组顺序(x,y,z) 单位 rad
|
||
* @param[in] 用于初始化的加速度数据,数组顺序(x,y,z) 单位 m/s2
|
||
* @param[in] 用于初始化的磁力计数据,数组顺序(x,y,z) 单位 uT
|
||
* @retval 返回空
|
||
*/
|
||
extern bool_t AHRS_update(fp32 quat[4], const fp32 timing_time, const fp32 gyro[3], const fp32 accel[3], const fp32 mag[3]);
|
||
|
||
/**
|
||
* @brief 根据四元数大小计算对应的欧拉角偏航yaw
|
||
* @author luopin
|
||
* @param[in] 四元数数组,不为NULL
|
||
* @retval 返回的偏航角yaw 单位 rad
|
||
*/
|
||
extern fp32 get_yaw(const fp32 quat[4]);
|
||
|
||
/**
|
||
* @brief 根据四元数大小计算对应的欧拉角俯仰角 pitch
|
||
* @author luopin
|
||
* @param[in] 四元数数组,不为NULL
|
||
* @retval 返回的俯仰角 pitch 单位 rad
|
||
*/
|
||
extern fp32 get_pitch(const fp32 quat[4]);
|
||
/**
|
||
* @brief 根据四元数大小计算对应的欧拉角横滚角 roll
|
||
* @author luopin
|
||
* @param[in] 四元数数组,不为NULL
|
||
* @retval 返回的横滚角 roll 单位 rad
|
||
*/
|
||
extern fp32 get_roll(const fp32 quat[4]);
|
||
|
||
/**
|
||
* @brief 根据四元数大小计算对应的欧拉角yaw,pitch,roll
|
||
* @author luopin
|
||
* @param[in] 四元数数组,不为NULL
|
||
* @param[in] 返回的偏航角yaw 单位 rad
|
||
* @param[in] 返回的俯仰角pitch 单位 rad
|
||
* @param[in] 返回的横滚角roll 单位 rad
|
||
*/
|
||
extern void get_angle(const fp32 quat[4], fp32 *yaw, fp32 *pitch, fp32 *roll);
|
||
/**
|
||
* @brief 返回当前的重力加速度
|
||
* @author luopin
|
||
* @param[in] 空
|
||
* @retval 返回重力加速度 单位 m/s2
|
||
*/
|
||
|
||
extern fp32 get_carrier_gravity(void);
|
||
|
||
#endif
|