Ir ao artigo

Arquivos do controlador e perfis dos motores

Verificado 2026-11-01

Resultado : prepare uma configuração completa para seu braço. O arquivo do controlador seleciona portas, motores e fluxo de trabalho; um perfil define os parâmetros de controle de um motor. Esses arquivos não substituem a calibração do encoder ou os limites de deslocamento salvos.

Crie arquivos locais

Para reprodução de pose nomeada, comece com o exemplo:

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 as cópias locais. O exemplo controller.local.json contém apenas o motor 1 . Adicione todos os IDs registrados para um braço. Crie motor-2.local.json , motor-3.local.json e outros perfis separados, cada um revisado para sua junta.

A estrutura de seis motores abaixo ilustra o formato, e não as configurações universalmente seguras. Substitua /dev/ttyUSB0 pela porta real, como COM3 no Windows. A variável SERVO_PORT de um terminal não é substituída automaticamente em 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
  }
}

Salve este JSON como tools/poses/controller.local.json , com motor-1.local.json até motor-6.local.json ao lado dele. Para IDs diferentes, atualize chaves de perfil, pose gravações e dispositivos conectados de forma consistente.

Configurações de perfil

O exemplo completo da fonte é:

{
  "kpQ8": 256,
  "kdQ8": 32,
  "kiQ8": 0,
  "integralLimit": 0,
  "effortLimit": 100,
  "velocityLimit": 500,
  "velocityFilterQ8": 64,
  "gravitySlewEffortPerS": 1000,
  "velocityFeedforward": {
    "positiveGainQ8": 0,
    "negativeGainQ8": 0,
    "effortLimit": 0
  }
}
Configuração Interpretação
kpQ8, kdQ8, kiQ8 Ganho multiplicado por 256: 256 significa 1.0 e 32 significa 0.125
integralLimit Limite apenas da contribuição integral
effortLimit Limite total de produção, unidades de esforço 1 – 1000 PWM; nem torque nem amperes
velocityLimit A velocidade máxima deste motor em contagens/s
velocityFilterQ8 1 – 255; um valor maior responde mais rápido, mas filtra menos ruído
gravitySlewEffortPerS Limite de taxa para alterações do esforço gravitacional; não permite um modelo por si só
velocityFeedforward Dois ganhos direcionais não negativos e um limite de saída; zero todos os três para desativar

acceleration e rampTimeMs compartilhados pertencem ao arquivo do controlador. Um perfil de motor pode substituí-los por accelerationLimit e rampTimeMs . Consulte o registro de configuração para intervalos e relacionamentos.

Caminhos e IDs

  • Os caminhos do perfil e gravityModel são relativos ao arquivo do controlador , não ao diretório de trabalho.
  • O caminho config de um plano de ajuste é relativo ao arquivo de plano .
  • Poses nomeadas fornecem IDs de motor; essa reprodução não requer joints .
  • A aplicação de ajuste e perfil requer joints: [{"followerId": 1}, …] cobrindo todos os motores controlados.
  • A teleoperação ao vivo e a reprodução da sessão requerem leaderId, followerId e mapping.

Verifique os caminhos ao mover um exemplo entre diretórios. Uma matriz joints omitida é intencional no exemplo de reprodução de pose nomeada.

Aplicando configurações

Os perfis são gravados na RAM Extension e devem ser reaplicados após a redefinição. A calibração da EEPROM e os limites de deslocamento são separados. O Replay aplica sua configuração automaticamente. Um perfil alterado desativa brevemente esse motor; uma nova inicialização pode liberar todos os motores configurados.

As configurações host/arm-control/profiles/so101/ e so102/ fornecidas vêm de braços verticais específicos com garras vazias. O perfil SO-101 retém oscilações M1 não resolvidas e excursões M2 mais lentas; o perfil rápido SO-102 ainda precisa de validação de hardware. Eles não são padrões universais de primeira execução.

Verificação: JSON válido, arquivos relativos existentes, um perfil por motor e configurações revisadas para o mecanismo. Em seguida, execute a visualização de repetição . Um arquivo válido não estabelece um comportamento seguro do hardware.


Início da documentação · Revisão de origem: a995f77 . Extension 9.0 .