LeRobot documentation
Koch v1.1
Koch v1.1
Nas etapas abaixo, explicamos como montar o robô Koch v1.1.
Ordene e monte as partes
Siga as instruções de obtenção e montagem fornecidas neste README. Elas o guiarão na configuração dos braços seguidor e líder, conforme mostrado na imagem abaixo.
Para uma demonstração visual do processo de montagem, você pode consultar este tutorial em vídeo.
Desde a produção deste vídeo, simplificamos a fase de configuração. Por isso, duas coisas diferem das instruções daquele vídeo:
- Não conecte todos os cabos dos motores de imediato e aguarde a instrução para fazê-lo em Configure os motores.
- Não fixe a placa do controlador (PCB) na base imediatamente e aguarde as instruções para fazê-lo em Configure the motors.
Instale o LeRobot 🤗
Para instalar o LeRobot, siga nosso Guia de Instalação
Além dessas instruções, você precisa instalar o Dynamixel SDK (se você instalou o LeRobot a partir do PyPI, execute pip install 'lerobot[dynamixel]' em vez disso):
pip install -e ".[dynamixel]"Configure os motores
1. Encontre as portas USB associadas a cada braço
Para encontrar a porta de cada adaptador de servo de barramento, execute este script:
lerobot-find-port
Exemplo de saída:
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.Onde a porta encontrada é: /dev/tty.usbmodem575E0032081, correspondente ao seu braço líder ou seguidor.
No Linux, você pode precisar conceder acesso às portas USB executando:
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1Exemplo de saída:
Finding all available ports for the MotorBus.
['/dev/ttyACM0', '/dev/ttyACM1']
Remove the usb cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/ttyACM1
Reconnect the USB cable.Onde a porta encontrada é: /dev/ttyACM1, correspondente ao seu braço líder ou seguidor.
2. Defina os ids e as taxas de baud dos motores
Cada motor é identificado por um id único no barramento. Quando novos, os motores geralmente vêm com um id padrão de 1. Para que a comunicação funcione corretamente entre os motores e o controlador, primeiro precisamos definir um id único e diferente para cada motor. Além disso, a velocidade na qual os dados são transmitidos no barramento é determinada pelo baudrate. Para que se comuniquem, o controlador e todos os motores precisam ser configurados com o mesmo baudrate.
Para isso, primeiro precisamos nos conectar a cada motor individualmente com o controlador para definir esses parâmetros. Como escreveremos esses parâmetros na seção não volátil da memória interna dos motores (EEPROM), precisaremos fazer isso apenas uma vez.
Se você estiver reaproveitando motores de outro robô, provavelmente também precisará executar esta etapa, pois os ids e o baudrate provavelmente não corresponderão.
Seguidor
Conecte o cabo USB do seu computador e a fonte de alimentação de 12V à placa controladora do braço seguidor (o braço líder usa a fonte de alimentação de 5V). Em seguida, execute o comando a seguir ou execute o exemplo da API com a porta obtida na etapa anterior. Você também precisará dar um nome ao seu braço seguidor com o parâmetro id.
Para uma referência visual sobre como definir os ids dos motores, consulte este vídeo, no qual seguimos o processo para o braço SO101.
lerobot-setup-motors \
--robot.type=koch_follower \
--robot.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous stepfrom lerobot.robots.koch_follower import KochFollower, KochFollowerConfig
config = KochFollowerConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_follower_arm",
)
follower = KochFollower(config)
follower.setup_motors()Você deve ver a seguinte instrução.
Connect the controller board to the 'gripper' motor only and press enter.Conforme instruído, conecte o motor do garfo. Certifique-se de que ele seja o único motor conectado à placa e de que o próprio motor ainda não esteja em cascata com nenhum outro motor. Ao pressionar [Enter], o script definirá automaticamente o id e a taxa de baud para esse motor.
Troubleshooting
Se você receber um erro nesse ponto, verifique seus cabos e certifique-se de que estão conectados corretamente:
- Fonte de alimentação
- Cabo USB entre seu computador e a placa controladora
- O cabo de 3 pinos da placa controladora ao motor
Se você estiver usando uma placa controladora Waveshare, verifique se os dois jumpers estão configurados no canal B (USB).
Em seguida, você deve ver a seguinte mensagem:
'gripper' motor id set to 6Seguido pela próxima instrução:
Connect the controller board to the 'wrist_roll' motor only and press enter.Você pode desconectar o cabo de 3 pinos da placa controladora, mas pode deixá-lo conectado ao motor do garfo na outra extremidade, pois ele já estará no lugar certo. Agora, conecte outro cabo de 3 pinos ao motor de rotação do pulso e conecte-o à placa controladora. Assim como no motor anterior, verifique se é o único motor conectado à placa e que o próprio motor não está conectado a nenhum outro.
Repita a operação para cada motor conforme instruído.
Verifique a fiação em cada etapa antes de pressionar Enter. Por exemplo, o cabo de alimentação pode se desconectar ao manipular a placa.
Quando você terminar, o script simplesmente será finalizado, momento em que os motores estarão prontos para uso. Agora, você pode conectar o cabo de 3 pinos de cada motor ao próximo e o cabo do primeiro motor (o ‘shoulder pan’ com id=1) à placa controladora, que agora pode ser fixada na base do braço.
Líder
Faça os mesmos passos para o braço líder, mas modifique o comando ou o script de acordo.
lerobot-setup-motors \
--teleop.type=koch_leader \
--teleop.port=/dev/tty.usbmodem575E0031751from lerobot.teleoperators.koch_leader import KochLeader, KochLeaderConfig
config = KochLeaderConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_leader_arm",
)
leader = KochLeader(config)
leader.setup_motors()Calibrar
Em seguida, você precisará calibrar seu robô para garantir que os braços líder e seguidor tenham os mesmos valores de posição quando estiverem na mesma posição física. O processo de calibração é muito importante, pois permite que uma rede neural treinada em um robô funcione em outro.
Seguidor
Execute o seguinte comando ou exemplo de API para calibrar o braço seguidor:
# Use the port of your follower arm, and give the arm a unique name with --robot.id
lerobot-calibrate \
--robot.type=koch_follower \
--robot.port=/dev/tty.usbmodem58760431551 \
--robot.id=my_awesome_follower_armfrom lerobot.robots.koch_follower import KochFollowerConfig, KochFollower
config = KochFollowerConfig(
port="/dev/tty.usbmodem585A0076891",
id="my_awesome_follower_arm",
)
follower = KochFollower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()Unificamos o método de calibração para a maioria dos robôs. Assim, as etapas de calibração para este braço Koch são as mesmas das etapas para o SO100 e o SO101. Primeiro, precisamos mover o robô para a posição em que cada junta está no meio de sua faixa de movimento, em seguida, pressionamos Enter. Em segundo lugar, movemos todas as juntas por toda a sua faixa de movimento. Um vídeo desse mesmo processo para o SO101 como referência pode ser encontrado aqui.
Líder
Faça os mesmos passos para calibrar o braço líder, execute o seguinte comando ou exemplo de API:
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
--teleop.type=koch_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \
--teleop.id=my_awesome_leader_armfrom lerobot.teleoperators.koch_leader import KochLeaderConfig, KochLeader
config = KochLeaderConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_leader_arm",
)
leader = KochLeader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()Parabéns 🎉, seu robô está pronto para aprender uma tarefa por conta própria. Comece o treinamento seguindo este tutorial: Primeiros passos com robôs do mundo real
Update on GitHubSe você tiver alguma dúvida ou precisar de ajuda, entre em contato no Discord.