thebalancefilter-外文文献(编辑修改稿)内容摘要:
s:angle = ()*(angle) + ()*(x_acc)。 and are example values. These could be tuned to change the time constant of the filter as SensorsYXAngleAngular VelocitySingleSensor MethodPros:• Only one sensor to read.• Fast, lag is not a problem.• Not subject to horizontal accelerations.• Still easy to code.Cons:• The dreaded gyroscopic drift. If the gyro does not read perfectly zero when stationary (and it won’t), the small rate will keep adding to the angle until it is far away from the actual angle.*Simple physics, dist. = vel. time. Acplished in code like this:angle = angle + gyro * dt。 Requires that you know the time interval between updates, dt.Numeric Integration*Mapping SensorsYXAngleAngular VelocityKalman FilterPros:• Supposedly the theoreticallyideal filter for bining noisy sensors to get clean, accurate estimates.• Takes into account known physical properties of the system (mass, inertia, etc.).Cons:• I have no idea how it works. It’s mathematically plex, requiring some knowledge of linear algebra. There are different forms for different situations, too. • Probably difficult to code.• Would kill processor time.Magic? Physical ModelMapping SensorsYXAngleAngular VelocityComplementary FilterPros:• Can help fix noise, drift, and horizontal acceleration dependency.• Fast estimates of angle, much less lag than lowpass filter alone.• Not very processorintensive.Cons:• A bit more theory to understand than the simple filters, but nothing like the Kalman filter.Numeric IntegrationLowPassFilterHighPassFilterΣ*Luckily, it’s more easilysaid in code:angle = ()*(angle + gyro * dt) + ()*(x_acc)。 More explanation to e…More on Digital FiltersThere is a lot of theory behind digital filters, most of which I don’t understand, but the basic concepts are fairly easy to grasp without the theoretical notation (zdomain transfer functions, if you care to go into it). Here are some definitions:Integration: This is easy. Think of a car traveling with a known speed and your program is a clock that ticks once every few milliseconds. To get the new position at each tick, you take the old position and add the change in position. The change in position is just the speed of the car multiplied by the time since the last tick, which you can get from the timers on the microcontroller or some other known timer. In code:position += speed*dt。 , or for a balancing platform, angle += gyro*dt。 .LowPass Filter: The goal of the lowpass filter is to only let through longterm changes, filtering out shortterm f。thebalancefilter-外文文献(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。