La estabilización de la cámara es mucho más difícil de lo que parece. Un bucle PID es solo un ingrediente necesario. Dependiendo del rendimiento que requiera, es posible que también necesite feed-forward y mucho ancho de banda.
El primer problema es que un bucle PID puro es controlado por error. Si no hay ningún error, no hay un comando para corregir ningún movimiento. Por lo tanto, no obtendrá ninguna corrección hasta que haya suficiente error para efectuar una corrección, y esa cantidad de movimiento probablemente será visible.
Hay dos maneras de lidiar con esto. Una es tener un bucle PID lo suficientemente ajustado como para que una pequeña cantidad de movimiento efectúe una corrección, con el sensor ubicado con la cámara (dentro de la envolvente, donde detecta cómo se ve afectada la cámara). Seguirá habiendo errores, pero la esperanza es que el bucle responda lo suficiente como para que el movimiento resultante sea apenas visible. Eso requiere ancho de banda, y estoy bastante seguro de que un Arduino no está a la altura de la tarea. Uso un DSP de 200 MHz para obtener un bucle lo suficientemente ajustado.
La segunda forma de lidiar con el error es tratar de evitar que ocurra en primer lugar. Para eso, utilizarías feed-forward. Con la función de avance, necesitaría un sensor FUERA de la envolvente, donde detecta el movimiento que afectaría a esa parte de la plataforma de la cámara que no se está estabilizando. Este movimiento luego se envía hacia adelante para ordenar el bucle, con una ganancia que es lo suficientemente precisa para aplicar la cantidad de corrección necesaria para evitar cualquier error. Nuevamente, requerirá suficiente ancho de banda para reaccionar antes de que se vea cualquier movimiento, y establecer la cantidad precisa de ganancia de avance es crítico.
Con cualquier enfoque, se requieren sensores de alto ancho de banda. Ambas técnicas son a menudo necesarias para la estabilización de alta calidad.