pkokocl 2016-11-08 15:35 采纳率: 0%
浏览 2959

一阶互补滤波参数初始值是什么

关于陀螺仪互补滤波的如下代码片段中,一阶互补算法中下面语句中参数Com_angle的初始值应该怎么设置?在这句之前并未对Com_angle的赋值。没看明白,请高手赐教

Com_angle = A * (Com_angle + omega * dt) + (1-A) * angleA;

#include
#define Acc 0x1D
#define Gyr 0x69
#define Mag 0x1E
#define Gry_offset -13 // 陀螺仪偏移量
#define Gyr_Gain 0.07 // 满量程2000dps时灵敏度(dps/digital)
#define pi 3.14159

float Com_angle;
float y1, Com2_angle;
float Klm_angle;

#define Q_angle 0.01 // 角度数据置信度
#define Q_omega 0.0003 // 角速度数据置信度
#define R_angle 0.01 // 方差噪声
float bias = 0;
float P_00 = 0, P_01 = 0, P_10 = 0, P_11 = 0;
float angleG;
long timer = 0; // 采样时间
void setup() {
sensor_init(); // 配置传感器
Serial.begin(19200); // 开启串口以便监视数据
delay(1000);
}

void loop() {
long o_timer = timer; // 上一次采样时间(ms)
float Y_Accelerometer = gDat(Acc, 1); // 获取向前的加速度
float Z_Accelerometer = gDat(Acc, 2); // 获取向下的加速度
float angleA = atan(Y_Accelerometer / Z_Accelerometer) * 180 / pi;
// 根据加速度分量得到的角度(degree)
timer = millis(); // 当前时间(ms)
float omega = Gyr_Gain * (gDat(Gyr, 0) + Gry_offset);
float dt = (timer - o_timer) / 1000.0; // 微分时间(s)
angleG = angleG + omega * dt; // 对角速度积分得到的角度(degree)
// 一阶互补算法
float K;
K = 0.075; // 对加速度计取值的权重
float A = K / (K + dt);
Com_angle = A * (Com_angle + omega * dt) + (1-A) * angleA;
....
}

  • 写回答

2条回答 默认 最新

  • zqbnqsdsmd 2016-11-08 16:15
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀