logo资料库

互补滤波精髓.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
互补滤波器 定义:是集成加速度计和陀螺测量平衡的一个简单的解决办法的平 台。 传感器: 两轴加速度计: 1. 测量加速度实际上是推动每个单元的块。 2. 可以用来测量重力加速度,上图中 x 轴加速度为 0g,y 轴加速度为 1g。 3. 可以用来测量斜角。 上图中 x 轴方向上有重力的作用 ,左边的图中 x 有正向的加速度,右边的图中 x 有负向的 加速度。这就使 y 轴方向的加速度减少。 由 y 轴得到的信息是否有用?可能不是: a..x 轴方向上改变一个很小的角度它的灵敏度远远高于 y 轴。 b.它不依赖于方向倾斜 陀螺仪: 陀螺仪: 1. 测量角速度(旋转的角度)。 2. 当静止时读“0”。
3. 读取旋转时的方向值。 左图为陀螺仪正转,右图为陀螺仪反转。 读传感器的值 第一步是要看每个传感器的模拟输入(通过类比数模转换器,ADC),并让他们成为有用的 单位。这需要调整偏移和数值范围。 偏移是很容易找到的: 传感器水平和/或静止的时候读传感器的整型值。如果它的值颤动, 则选择一个平均值。偏移量应该是一个整形变量(或常量)。 取值范围取决于传感器。它是由多因素预期的单位得来。这可以从传感器“数据手册”或 实验得到。它有时被称为传感器常数、增益、或灵敏度。取值应该是一个浮点型的变量(或 常量)。 即使没有 ADC 的结果也可以抵消负面的偏移,它们将会被去掉,所以不会使变量发生改变 了。 单位可以是度或弧度(每秒陀螺仪),它们必须是一致的。 更多的关于加速度计 如果必须要有一个 360º角旋转的估量,有 y 轴方向上的测量会很有用,但不是一定必须要。 有了它,我们可以用三角法找到两个轴的反正切的数值和计算两个轴的角度。没有它,我们还 可以用正弦或余弦和 x 轴单独算出角度,因为我们知道重力的大小。但是三角法消耗处理器 时间而且是非线性,所以,它可以避免就应该尽量避免。 为平衡平台,最重要的是确保角度靠近垂直。如果平台倾斜从两个方向超过 30º,那可能就
没有更多的控制器可以做全速行驶去纠正它,在这种情形下,我们可以用小角度近似和 x 轴 节约处理器时间和简化编码复杂度。 平台有一个倾斜的角度θ,但是是静止的(没有水平加速度) X 轴方向上:(1g) × sin(θ) 小角度近似:sin(θ) ≈ θ,按幅度来算的话θ=±π/6 = ±30º。 因此编码的二进制码如下: x_acc = (float)(x_acc_ADC – x_acc_offset) * x_acc_scale 如果 x_acc_scale 角度将取值输出到 1[g],x 轴是径直指向下,x_acc 将按弧度来算。 为了获得角度,x_acc_scale 应该在 180/π之间取值。 所需要的测量 为了控制平台,最好是知道基础平台角度和角速度。这可能是一个角度 PD(比例/微分)控 制算法的基础,该算法已经证实了该系统类型可以很好地工作。像这样的: 电机输出 = Kp × 角度 + Kd × 角速度 电机真正的输出又是另一回事。但常规的想法是,这种控制建立可调谐 Kd 和 Kp 使它达到稳 定和平稳的性能。这是不太可能超越的水平点除了 proportional-only 控制器之外。(如果角 度是正向的,但是角速度是负向的,即它反馈回来的是水平的,电机就会提前减慢。) 阻尼器。 事实上,这种 PD 控制方案就像对智能车添加一个可调弹簧和 映射传感器
这是最好的方法吗?? 赞成的观点:1.直观。 2.容易编码 3. 陀螺给快速、准确的角速度测量 反对的观点: 1.噪声。 2. x 轴要读水平方向任何角度改变的加速度。(想象一下平台是水平,但平 台电机使它向前加速,加速度计也无法和引力鉴别开。)
0.75 和 0.25 是参考数值。这些可以调谐滤波到满意的变化时间常数。 赞成的观点: 1. 依然很直观。 2. 依然很容易编码。 3. 过滤掉短周期水平加速度,唯一可以通过的是长周期的加速度(重力)。 反对的观点: 1. 测角由于取平均值而滞后,过滤器越多就越能滞后,滞后一般会影响稳定性。 赞成的观点: 1. 只有一个传感器来读. 2. 快速,滞后不是问题 3. 不受制于水平加速度。 4. 容易编码。 反对的观点: 1. 可怕的陀螺漂移,如果陀螺没有准确的读出平衡时的零点(而且它不会),小速度将持续增 加角度,直到它远离实际的角度。 赞成的观点: 1. 想象一下理论上完美的滤波器可以滤去杂波、准确的估计。 2. 考虑到系统的已知的物理性质(质量、惯性等)。
反对的观点: 1. 我不知道它是如何工作的,它的算法很复杂的,需要了解一些线性代数的知识。不同情况 有不同形式。 2. 可能很难编码。 3. 会消耗处理器的时间。 赞成的观点: 1. 可以帮助解决噪声、漂移、水平加速度的依赖性。 2. 快速估计角度,比只有低通滤波器时的滞后明显减弱。 3. 处理器不是很密集。 反对的观点: 1. 和低通滤波相比需要了解更多的理论知识,但没有像卡尔曼滤波器那样。 更多关于数字滤波器 数字滤波器有很多的原理,其中大部分我不懂,但是没有理论符号的基本概念很容易 掌握 (z-domain 转移函数,如果你想研究它),这里有一些定义: 整合:这很简单,想像一个汽车以一个已知的速度移动,你的程序是一只钟每隔几毫秒 滴答响一次,为了在每一个滴答声响得到新的位置,你应把旧的位置加上改变的位置。这个 位置的改变只是自从上次滴答响,这辆小汽车的速度乘以时间,你由单片机定时器或其他已 知的定时器得到数值。在代码: 新位置=旧的位置+速度*变化的时间。 对于平衡的平台来说:角度=原来的角度+陀螺仪的值*变化的时间。 低通滤波器:低通滤波的目的是只让长期信号的变化量通过,过滤掉短期的波动。一种 方法是力的变化建立在随后的时间一点一点地通过程序循环。在代码中: 例如,开始是零的角度,加速计突然跳跃到 10º,角度估计的改变像随后的迭代: angle = (0.98)*angle + (0.02)*x_acc 如果传感器保持在 10º,角度估计将会上升直至在它的水平这个值。所花费的时间,达到充 分数值既取决于过滤常数(例如 0.98 和 0.02)也取决于采样率的回路(dt)。
高通滤波器:理论和低通滤波器相比这有点难以解释,但作用上它恰恰和低通滤波器相反: 它允许短周期信号通过,过滤信号而达到稳定,这能用来抵消漂移(过滤掉直流成分)。 采样周期:每个程序之间经过循环所需时间的长短。如果采样率是 100 赫兹,采样周期为 0. 01 秒。 时间常数:滤波器的时间常数表现为一个相对持续的信号,对于一个低通滤波器,分析了 信号的时间常数远比通过信号改变而短于过滤的时间常数。对于高通滤波器那就是相反的, 这个时间常数,τ,是一个低通滤波器。 y = (a)*(y) + (1-a)*(x); 所以如果你知道所需的时间常数和采样率,你可以选择滤波器系数。 补充:这表示滤波器的两个部分总是合成一部分,输出是一种精度高的值、单位的线性估计这 样做是有意义的。读得差不了,我感觉这滤波器不是准确的互补, 但是当时间常数远比采样 率大的时候是一个很好的近似(对任何数字控制来说是一个必要条件)。 仔细看看角互补滤波器 如果这个过滤器运行一个循环中执行 100 次/秒,时间常数对低通、高通滤波器是: 在这个定义中是徘徊在信任陀螺仪和加速度计的边界,如果这个时间短于半秒钟,陀螺仪 整合和滤除水平加速度噪声优先。如果时间期长于半秒钟,平均加速计的质量比陀螺仪更重, 可能这一点有漂流。 大多数情况下,设计滤波器通常用其他的方式,首先,选择一个时间常数,然后用它来计算滤 波器系数。挑选时间常数在这个地方你可以调整响应。如果你的陀螺仪漂移平均每秒 2º(可 能是一个最坏的估计),你可能想要一个小于一秒的时间常数,让你可以保证在任一个方向上 从未漂移超过两度。但时间常数越低,加速度越水平噪声将允许通过。像许多其他控制的情 况下,有一个权衡,唯一的办法就是去试验。 记住, 选择正确的采样率系数是非常重要的,如果你改变你的程序,增加更多的浮点运算 和 是导致你的采样率下降的两个因素。你的时间常数会变大有两个因素除非你重新计算你的过 滤条件。 举个例子,考虑使用 26.2 毫秒的收音机更新你的控制回路(通常是一个缓慢的思想,但它 是工作的)。如果你想要一个 0.75 秒的时间常数、过滤器术语应该是这样的:
滤波器上陀螺仪的偏压它也是值得去思考。这个过滤器陀螺肯定不会造成漂移的问题, 但它仍然可以影响角的计算方法。举例来说,我们误选错了偏移和我们的速率陀螺静止时报 告 5º/秒的旋转,它算术上可以证明(这里我不会) 角度估计等于偏移速度乘以时间常数。因 此,如果我们有一个 0.75 秒时间常数,这将给一个常数 3.75º角的偏移量。 另外,这可能是一个坏的情形(陀螺仪不应该那么远偏移),长角度偏移和一个漂泊角度偏 移量相比较是很容易处理的。举例说来,你可以在相反的方向旋转加速度计 3.75º来调节它。 对某些实验结果的足够理论 控制平台:自定义 PIC-based 无线控制器,十位精度的 ad。 数据采集:一个串行 USB 收音机,做在 Visual Basic 上。 陀螺:ADXRS401、模拟装置 iMEMS /秒 75º角速率传感器。 加速度:ADXL203,模拟设备两轴 iMEMS 加速度计。
分享到:
收藏