Ir al artículo

Archivos del controlador y perfiles de motores

Comprobado 2026-11-01

Resultado: prepare una configuración completa para su brazo. El archivo del controlador selecciona puertos, motores y flujo de trabajo; un perfil establece los parámetros de control de un motor. Estos archivos no reemplazan la calibración del codificador ni los límites de recorrido guardados.

Crear archivos locales

Para la repetición de pose con nombre, comience con el ejemplo:

macOS / Linux
cp tools/poses/replay.example.json tools/poses/controller.local.json
cp host/arm-control/profile.example.json tools/poses/motor-1.local.json
Windows PowerShell
Copy-Item tools/poses/replay.example.json tools/poses/controller.local.json
Copy-Item host/arm-control/profile.example.json tools/poses/motor-1.local.json

Edite las copias locales. El ejemplo controller.local.json contiene solo el motor 1. Agregue todas las identificaciones registradas para un brazo. Cree motor-2.local.json, motor-3.local.json y otros perfiles separados, cada uno revisado para su conjunto.

La estructura de seis motores a continuación ilustra el formato, no configuraciones universalmente seguras. Reemplace /dev/ttyUSB0 con el puerto real, como COM3 en Windows. La variable SERVO_PORT de un terminal no se sustituye automáticamente en JSON.

{
  "followerPort": "/dev/ttyUSB0",
  "baudRate": 1000000,
  "maxAgeMs": 100,
  "acceleration": 1000,
  "rampTimeMs": 50,
  "profiles": {
    "1": "motor-1.local.json",
    "2": "motor-2.local.json",
    "3": "motor-3.local.json",
    "4": "motor-4.local.json",
    "5": "motor-5.local.json",
    "6": "motor-6.local.json"
  },
  "replay": {
    "speed": 500,
    "holdMs": 1000,
    "repeat": 1,
    "moveTimeoutMs": 30000,
    "toleranceCounts": 10
  }
}

Guarde este JSON como tools/poses/controller.local.json, con motor-1.local.json hasta motor-6.local.json al lado. Para diferentes ID, actualice las claves de perfil, pose las grabaciones y los dispositivos conectados de manera consistente.

Configuración de perfil

El ejemplo fuente completo es:

{
  "kpQ8": 256,
  "kdQ8": 32,
  "kiQ8": 0,
  "integralLimit": 0,
  "effortLimit": 100,
  "velocityLimit": 500,
  "velocityFilterQ8": 64,
  "gravitySlewEffortPerS": 1000,
  "velocityFeedforward": {
    "positiveGainQ8": 0,
    "negativeGainQ8": 0,
    "effortLimit": 0
  }
}
Configuración Interpretación
kpQ8, kdQ8, kiQ8 Ganancia multiplicada por 256: 256 significa 1,0 y 32 significa 0,125
integralLimit Límite del aporte integral únicamente
effortLimit Límite de producción total, 1 a 1000 unidades de esfuerzo PWM; ni par ni amperios
velocityLimit La velocidad máxima de este motor en cuentas/s
velocityFilterQ8 1–255; un valor mayor responde más rápido pero filtra menos ruido
gravitySlewEffortPerS Límite de tasa para cambios en el esfuerzo de gravedad; no habilita un modelo por sí solo
velocityFeedforward Dos ganancias de control direccional no negativas y un límite de salida; cero los tres para desactivar

La acceleration y rampTimeMs compartidas pertenecen al archivo del controlador. Un perfil de motor puede anularlos con accelerationLimit y rampTimeMs. Consulte el registro de configuración para conocer rangos y relaciones.

Rutas e identificaciones

  • Las rutas de perfil y gravityModel son relativas al archivo del controlador, no al directorio de trabajo.
  • La ruta config de un plan de ajuste es relativa al archivo del plan.
  • Las poses con nombre proporcionan identificaciones motoras; esa repetición no requiere joints.
  • La aplicación de ajuste y perfil requiere joints: [{"followerId": 1}, …] que cubren cada motor controlado.
  • La teleoperación en vivo y la reproducción de sesiones requieren leaderId, followerId y mapping.

Verifique las rutas al mover un ejemplo entre directorios. Una matriz joints omitida es intencional en el ejemplo de reproducción de pose con nombre.

Aplicar configuración

Los perfiles se escriben en la RAM de extensión y se deben volver a aplicar después del reinicio. La calibración de EEPROM y los límites de recorrido están separados. Replay aplica su configuración automáticamente. Un perfil modificado desactiva brevemente ese motor; Un nuevo arranque puede liberar todos los motores configurados.

Los ajustes host/arm-control/profiles/so101/ y so102/ suministrados provienen de brazos verticales particulares con pinzas vacías. El perfil SO-101 conserva la oscilación M1 no resuelta y excursiones M2 más lentas; El rápido perfil SO-102 aún necesita validación de hardware. No son incumplimientos universales de primera ejecución.

Compruebe: JSON válido, archivos relativos existentes, un perfil por motor y configuraciones revisadas para el mecanismo. Luego realice la vista previa de la reproducción. Un archivo válido no establece un comportamiento seguro del hardware.


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