I've seen a lot of buzz lately about the supposed advantages of using the RPM filtering option introduced in Betaflight 4.1. What is it and how does it improve inflight smoothness?
1 Answer
Multirotors are inherently a very noisy environment for sensors like the gyroscope which try to measure the actual motion of the drone. Mechanical vibrations and oscillations are present all over, primarily generated by the motors but also by parts in the frame. These vibrations manifest themselves as fluctuations in the gyroscope values.
(cit.)
Flight control firmware relies on a clean measure of how quickly the drone is moving in order to function properly, so they employ a number of techniques to "filter" the gyroscope signal and remove as much of the noise as possible. Unclean signals can result in more inflight oscillations and hot motors. Several different kinds of filters are used, often simultaneously, to accomplish this. (e.g. static & dynamic notch filters, low/high pass filters, Kalman filters) The below image depicting the suite of filters employed by Betaflight helps get across how serious an issue this is, although it isn't quite accurate today. (the image was accurate in some 3.x versions)
RPM filtering (new in Betaflight 4.1) seeks to remove motor noise, one of the most prolific sources of vibrations on a multirotor. The frequency of motor vibrations are directly correlated with their rotation rate, so the Betaflight RPM filter takes input from the ESCs about motor speeds (using bidirectional DSHOT) and uses it to target a series of dynamic notch filters which selectively remove noise from the gyroscope values occurring at a specific frequency. There's a whole page on the Betaflight wiki about this.
Articles like this from Oscar Liang and this on the Betaflight wiki provide instructions for how to set up and configure the RPM filter, as well as this video from Joshua Bardwell on the topic.