Ir al artículo

Configurar la compensación de gravedad

Comprobado 2026-11-01

Resultado: utiliza un modelo que coincida con tu brazo y comprende qué sucede cuando termina el control. Necesita una calibración verificada y un archivo de controlador.

Comprueba la coincidencia del modelo

El host calcula el esfuerzo a partir de posiciones medidas y lo envía a los servos. El firmware no contiene geometría de brazo. El esfuerzo positivo sigue al aumento del número de codificadores; el modelo debe tener en cuenta la dirección física de la articulación.

Dos modelos describen brazos verticales con pinzas vacías:

Archivo en host/arm-control/models/ brazo
arm-upright-empty.json SO-102
so101-upright-empty.json SO-101

Ambos definen términos acoplados para M2-M4 y esfuerzo cero explícito para M1, M5 y M6. La configuración del brazo de seis motores suministrada utiliza los ID del 1 al 6 con un perfil para cada motor. Su calibración vincula compensaciones de codificador específicas, resolución de unidades y banderas de inversión; La verificación previa compara esos valores con los motores antes de iniciar el control.

Un nombre de brazo o una lectura de referencia de 2048 es insuficiente. No copie las compensaciones de otro brazo en sus motores ni cambie solo encoderCalibration para pasar la verificación. Una calibración, un montaje, una geometría o una carga útil diferentes requieren un modelo adaptado o ajustado y una validación del hardware.

Conecte un modelo validado

Para tools/poses/controller.local.json, agregue este campo al objeto JSON existente; la línea no es una configuración completa:

"gravityModel": "../../host/arm-control/models/arm-upright-empty.json"

Ese camino selecciona el modelo SO-102. El archivo SO-101 es so101-upright-empty.json; su estado requiere explícitamente la validación del brazo y la trayectoria de movimiento previstos. Utilice una ruta relativa para su propio modelo y conserve las comas entre los campos JSON.

El gravitySlewEffortPerS de cada perfil limita la rapidez con la que cambia el esfuerzo de gravedad; effortLimit limita la potencia total del motor. Sin gravityModel, las herramientas se ejecutan sin un modelo y borran la gravedad retenida al reutilizar una sesión. Un ajuste de giro distinto de cero por sí solo no permite la compensación.

Verifique antes de mudarse

Ejecute una vista previa normal con su grabación:

macOS / Linux
npm run replay -- tools/poses/controller.local.json POSES.json
Windows PowerShell
npm.cmd run replay -- tools/poses/controller.local.json POSES.json

Es necesario investigar una discrepancia en la calibración, una entrada faltante o un esfuerzo computacional excesivo. Los resultados que superen los límites del modelo o del motor se rechazan en lugar de recortarse silenciosamente. No aumente un límite simplemente para suprimir el error sin revisar la carga.

Con --run, el controlador calcula, envía y confirma la gravedad antes del primer objetivo de movimiento. Sobre un mecanismo apoyado, verificar la dirección y el comportamiento en varias posturas y cargas. Una pose exitosa no valida todo el espacio de trabajo.

Durante el control y después de la salida

La retroalimentación y la gravedad comparten un lector, con actualizaciones aproximadamente cada 50 ms. Las comprobaciones de actualización y fecha límite del host no convierten al host en un sistema en tiempo real.

La finalización normal deja la compensación final en el servo. Ya no se adapta a los cambios de pose o carga útil. Los mensajes faltantes tampoco eliminan la gravedad: el firmware se acerca a la última solicitud a la velocidad de respuesta configurada y la mantiene. La desactivación del par lo borra. Consulte finalizar el primer movimiento.

Creando un modelo

Todo motor controlado necesita un modelo explícito que incluya entradas de compensación cero. Cada entrada utilizada por términos acoplados debe ser controlada y medida. Los términos utilizan coefficient × sin(angle) o coefficient × cos(angle), donde angle = offsetRad + sum(counts[id] × weights[id]). Los ángulos son radianes y los coeficientes son unidades de esfuerzo PWM. Los términos constantes no tienen pesos.

El ajuste basado en registros y la validación independiente pertenecen al el proceso de ajuste. Los coeficientes ajustados no miden el par físico y no constituyen automáticamente un modelo validado.


Inicio de la documentación · Revisión de la fuente: a995f77. Extensión 9.0.