Arquivos do controlador e perfis dos motores
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
gravityModelsão relativos ao arquivo do controlador , não ao diretório de trabalho. - O caminho
configde 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,followerIdemapping.
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 .