-Si tu código hace un loop en mas tiempo que el sampletime establecido como afecta esto al código? pues puede que varíen los valores del Output a mitad de ejecución o como?
-En el caso que sea independiete uno de otro y no tenga que ver lo que tarda en un loop con el sample time, como puedo saber cual es el mas optimo? cuanto mas muestreos mejor?
Hola.
En mi opinión lo importante es que el tiempo ente muestreos sea regular. Una vez satisfecho ese parámetro, supongo que cuanto más muestreo más reactivo será el sistema, siempre que no perdamos en fidelidad ni regularidad en la toma de datos de entrada.
Echando un rápido vistazo a la librería, al parecer el sampletime sólo es tomado en cuenta para sencillamente omitir el compute si cuando se llama al mismo aún no ha transcurrido dicho tiempo.
Por lo tanto, en mi opinión, está bien cuando el sampletime es ostensiblemente mayor que la frecuencia con la que se llama al compute. Por ejemplo si el loop (y la llamada a compute) se ejecuta unas cuatro o cinco veces la frecuencia de muestreo, y esa frecuencia no es muy regular porque se pueden dar distintas situaciones en el programa, el sample time "regularía" un poco el momento de tomar la muestra: una vez lo haría tras cuatro loops, otra tras cinco... pero 20% próxima a la velocidad buscada. Por ejemplo para PID lentos, el sistema es ideal. El de caudal de agua que comentaba surbyte, por ejemplo, que tal vez sólo se computa cada bastantes segundos, se pueden aprovechar los miles de loops para promediar y obtener un buen dato de entrada.
Sin embargo, para velocidades de muestreo más altas puede que no sea buena idea fiarse de ese sistema, pues la diferencia entre repetir cada uno o dos loops es un error próximo al 100%. En ese caso tal vez sea mejor poner un sampletime menor que nuestro tiempo de loop, con lo que vamos a muestrear en cada loop (esperemos que la duración de un loop sea más o menos similar), o modificar un poco la librería para buscar algún otro método de temporizado.
En el caso que nos ocupa, entiendo que lo ideal será la mayor velocidad de sampleo posible, siempre que la frecuencia sea regular y el dato de retroalimentación fiable. Si ocurre como ocurre en ocasiones con las lecturas analógicas de arduino, que sale de vez en cuando algún dato aberrante, será preferible ampliar el tiempo de muestreo en favor de una lectura más eficaz.
Así que lo primero, sería mover el brazo a mano y monitorizar la fiabilidad de los valores de ángulo que obtenemos, y cuánto tiempo insume cada ciclo de loop.