Cómo funciona el control de movimiento
Un comando de destino no establece directamente una salida de motor fija. En el modo Extensión, el host proporciona objetivos y límites; cada servo planifica una trayectoria, mide el movimiento y calcula la salida. Esta página explica esas relaciones. Utilice la guía de ajuste para la secuencia práctica.
Cómo funciona el modo de extensión
El host es la computadora o controlador conectado a los servos. Envía un objetivo: un destino y un límite de velocidad. Los ajustes de aceleración y compensación se configuran antes de habilitar la potencia del motor. Cada servo entonces:
- Planifica un movimiento suave hacia el destino.
- Mide su posición y estima su velocidad.
- Ajusta la salida del motor para seguir el movimiento planificado.
- Mantiene el destino cuando finaliza el movimiento.
La posición planificada y la velocidad en cada momento se denominan referencia. El controlador los compara con el movimiento medido, por lo que una posición de referencia y una posición real pueden diferir.
Algunos términos utilizados a lo largo de este documento:
| Término | Significado |
|---|---|
| Cuenta del encoder | Una unidad de medida de posición; nominalmente 4096 cuentas por revolución |
| Señal de salida del motor | El comando de salida del motor con signo: su signo establece la dirección y su tamaño establece la fuerza de salida |
| Ganancia de control | Una configuración que determina la fuerza con la que responde el controlador. |
| Prealimentación | Salida adicional del motor calculada a partir de la demanda esperada, en lugar de esperar un error de posición o velocidad |
| Realimentación | Medidas y estado devueltos por el servo. |
| Registro | Un entorno o lectura identificado por un número. |
| Sesión | Un período de control de extensión, identificado por un número proporcionado por el anfitrión |
El esfuerzo se expresa en unidades PWM, las unidades utilizadas para controlar la salida eléctrica al motor. La extensión permite un límite de salida de hasta 1000 en cualquier dirección. Estos valores no son mediciones directas de par o corriente.
movimiento de curva S
Hace que la aceleración y el frenado sean más graduales. La curva ilustra la aceleración en el tiempo. Ilustración conceptual, datos de hardware no medidos.
Una curva en S hace que la aceleración aumente y disminuya gradualmente. En lugar de aplicar repentinamente una aceleración o frenado total, el servo entra y sale de cada parte del movimiento. Esto puede reducir las sacudidas mecánicas y las vibraciones.
Un movimiento completo de reposo a reposo tiene estas etapas:
| Etapa | que pasa |
|---|---|
| 1 | La aceleración aumenta gradualmente |
| 2 | El servo acelera a un ritmo constante. |
| 3 | La aceleración disminuye gradualmente hasta cero. |
| 4 | El servo se mueve a una velocidad constante. |
| 5 | El frenado aumenta gradualmente |
| 6 | El servo frena a un ritmo constante. |
| 7 | El frenado disminuye gradualmente a medida que el servo se detiene. |
Los movimientos cortos se saltan etapas cuando no hay suficiente distancia para alcanzar la velocidad o aceleración solicitada. Se aplica el mismo límite de aceleración al acelerar y al frenar.
La configuración ramp_time_ms controla cuánto tiempo tarda la aceleración en aumentar desde cero hasta su límite. Una rampa más larga ofrece un cambio más suave, pero generalmente necesita más tiempo y distancia para acelerar o detenerse.
Jerk significa la velocidad a la que cambia la aceleración. Este planificador limita las sacudidas, por lo que la aceleración cambia suavemente. El tirón en sí todavía puede cambiar abruptamente entre etapas. Su magnitud aproximada es:
jerk = 1000 × acceleration / ramp_time_ms [counts/s³]
Cambiar un destino durante el movimiento
Un nuevo objetivo continúa desde el movimiento planeado actual, preservando su posición, velocidad y aceleración. Enviar nuevamente el mismo destino no reinicia el movimiento. Mantener el mismo límite de velocidad solicitado mientras se desplaza; puede cambiar para el siguiente movimiento una vez que el movimiento planificado se haya detenido. El tiempo de aceleración y rampa pertenecen a la configuración y requieren el apagado del motor y una sesión desarmada para cambiar.
Un destino fuera de los límites de posición heredados guardados se ajusta al límite más cercano. La velocidad solicitada también está limitada a su límite configurado. El servo utiliza la aceleración configurada para cada movimiento. La velocidad cero o la aceleración configurada no son válidas.
Todo el movimiento planificado debe permanecer dentro de los límites de posición. Por lo tanto, se puede rechazar un nuevo objetivo si el servo ya se está acercando a un límite demasiado rápido para detenerse dentro de él, incluso cuando el destino en sí está permitido.
Al llegar, el servo mantiene automáticamente el destino con el motor encendido. Es posible que la posición medida aún tenga algún error debido a la fricción, la carga, los límites de salida o la sintonización. La retención continúa para corregir el error de posición; no congela la salida del motor en un valor fijo.
Cada servo planifica su propio movimiento. Enviar varios objetivos juntos no garantiza que todos los servos lleguen al mismo tiempo.
Límites de posición compartida
El control heredado y de extensión utiliza los mismos registros de límite de posición: 9–10 contienen el mínimo y 11–12 el máximo. Cada uno es un valor de 16 bits sin signo en recuentos de codificador corregidos, incluida la dirección configurada del servo y la corrección de posición. No hay configuraciones de límite de posición de extensión separadas.
La calibración asigna recuentos del codificador a posiciones físicas. La herramienta de calibración hace que la pose de referencia capturada sea 2048 y luego mide los límites de viaje. Ese recuento no es automáticamente un ángulo de articulación de cero grados y el punto medio del recorrido medido no reemplaza la referencia capturada. Los modelos y visualizaciones de gravedad necesitan un mapeo de conteo y ángulo que coincida.
El firmware lee estos registros al iniciar el control. Con los límites habilitados, el mínimo debe estar por debajo del máximo, el máximo debe ser como máximo 32767 y la posición medida debe estar dentro del rango. De lo contrario, el arranque falla sin mover el motor. El planificador mantiene el movimiento completo, incluido el frenado, dentro del rango leído.
Valores mínimos y máximos iguales desactivan los límites de viaje, lo que coincide con el comportamiento heredado. Los comandos de extensión aún permanecen dentro de su rango de posición admitida de −32767 a 32767 recuentos.
Una escritura aceptada en cualquiera de los límites finaliza una sesión de extensión activa y apaga el motor, incluidas las escrituras que solo se aplican en la RAM. Armar una nueva sesión para usar los valores modificados. La persistencia de la configuración heredada normal aún se aplica.
controlador PID
Ajusta cómo el servo corrige el error de posición. La curva gris ilustra la oscilación; la curva blanca ilustra una respuesta más amortiguada. La línea discontinua es el objetivo. Ilustración conceptual, datos de hardware no medidos.
El controlador PID ajusta la salida del motor para seguir el movimiento planificado. Sus tres configuraciones tienen diferentes trabajos:
| Configuración | que hace | Principal compensación |
|---|---|---|
| P — corrección de posición | Tira del motor hacia la posición planificada; Los errores más grandes producen más corrección. | Una P más alta puede reducir el error pero también puede causar oscilación. |
| I — corrección acumulada | Acumula correcciones adicionales cuando persiste un error | Puede reducir un error duradero, pero puede aumentar el exceso o el tiempo de estabilización. |
| D — corrección de velocidad | Responde a la diferencia entre velocidad planificada y medida; resiste el movimiento mientras sostiene | Puede mejorar la amortiguación, pero una respuesta excesiva a lecturas de velocidad ruidosas puede hacer que la salida sea desigual |
El cálculo es:
position error = planned position − measured position
speed error = planned speed − filtered measured speed
motor output = Kp × position error
+ Kd × speed error
+ accumulated I correction
+ gravity compensation
+ velocity feedforward
El resultado se limita a la potencia máxima configurada. La protección del motor puede reducirlo aún más. La retroalimentación informa tanto la salida solicitada como la aplicada para que el host pueda ver cuándo se está limitando el motor.
La velocidad medida se suaviza utilizando lecturas de posición recientes y un filtro ajustable. Una configuración de velocity_filter_q8 más grande responde más rápido a los cambios pero elimina menos ruido de medición.
Prevenir la corrección acumulada excesiva
La contribución I tiene su propio límite. El controlador también evita que continúe aumentando en una dirección en la que la salida del motor ya está limitada; esto comúnmente se llama anti-windup. Aún puede disminuir para ayudar al motor a recuperarse de ese límite. Establecer Ki en cero deshabilita y borra la corrección I.
Cuando el servo ha estado casi estacionario durante al menos 50 ms y el error de posición está dentro de un conteo del codificador, I deja de acumular. P, D y ambas formas de feedforward permanecen activas. Al desactivar la salida del motor se borra la corrección I.
avance de velocidad
Agrega salida del motor según la velocidad planificada, calculada dentro del servo. Ambas curvas progresan de izquierda a derecha a lo largo del tiempo. Ilustración conceptual, datos de hardware no medidos.
La velocidad de avance proporciona parte de la salida que se espera que sea necesaria para el movimiento antes de que se desarrolle un error de seguimiento. Se calcula dentro del servo a partir de la velocidad planificada:
velocity feedforward = velocity gain × planned speed
Hay una ganancia para cada dirección y un límite en la salida resultante. Ambas ganancias de control no son negativas; La dirección del movimiento determina el signo de salida. Su límite de salida no debe ser mayor que el límite de salida del motor principal.
Debido a que el servo conoce su propia velocidad planificada, la compensación sigue la aceleración y el frenado automáticamente y se vuelve cero cuando se detiene el movimiento planificado. El anfitrión sólo proporciona su configuración; no necesita enviar valores continuos de velocidad-feedforward.
Configure esta característica junto con las otras configuraciones en 0xA0, mientras la alimentación del motor está apagada y la sesión está desarmada. Establezca ambas ganancias de control y su límite de salida en cero para desactivarlo.
Compensación de gravedad
El anfitrión calcula la contribución y el servo la aplica. La flecha hacia abajo representa el peso; la flecha hacia arriba representa el soporte. Ilustración conceptual, datos de hardware no medidos.
La compensación de gravedad proporciona la potencia necesaria para soportar el peso de un brazo y su carga. Es útil incluso cuando el motor está quieto, donde la velocidad de avance es cero.
El host calcula la compensación de gravedad y envía un valor de salida firmado a cada servo. El cálculo puede utilizar ángulos de articulación, dimensiones del brazo, pesos de los eslabones y carga útil. El anfitrión debe convertir la carga estimada en las unidades de salida del servo. El firmware no contiene un modelo del brazo.
La dirección importa: la salida de extensión positiva sigue a recuentos crecientes de codificadores. La convención del ángulo de la articulación de un brazo puede ir en la dirección opuesta, por lo que la conversión del anfitrión debe tener en cuenta eso.
Cada actualización de gravedad contiene el valor de salida deseado. La tasa de respuesta (la rapidez con la que puede cambiar la compensación, en unidades de salida por segundo) es parte de la configuración principal y permanece fija durante toda la sesión.
El servo cambia gradualmente su compensación hacia el valor solicitado y lo suma a la salida del controlador. Todas las contribuciones juntas quedan sujetas al límite de potencia configurado y a la protección del motor.
Si las actualizaciones de gravedad dejan de llegar, el servo continúa hacia la última compensación solicitada a su velocidad de respuesta configurada y luego mantiene ese valor. No hay ningún temporizador de caducidad. El anfitrión debe actualizar la compensación cuando cambia la postura del brazo o la carga. Establecer el registro de activación de par 40 en cero borra la compensación y desactiva la salida del motor.
Aplicar la explicación a la sintonización.
Si un movimiento corto nunca alcanza la velocidad solicitada, es posible que aumentar el límite de velocidad no lo haga más rápido. Una saturación de salida prolongada requiere verificar la carga, la trayectoria y el esfuerzo permitido, no solo mayores ganancias de control. Si el codificador sigue su referencia pero la herramienta pierde un punto físico, verifique la calibración, la geometría y la mecánica.
Distinga movimiento planificado y medido y precisión y repetibilidad del posicionamiento. Los cuatro diagramas de control y animaciones anteriores son diagramas de servo conceptuales en lugar de medidos.
Inicio de la documentación · Revisión de la fuente: a995f77. Extensión 9.0.




