Guia de Configuração VLAI L1
Configuração passo a passo completa para o VLAI L1 — desde a abertura da caixa até a calibração dos braços duplos, navegação da base móvel e coleta de dados.
Montagem e Inspeção
Lista de verificação de desembalagem
- Inspecione ambos os braços 7-DOF em busca de danos de transporte — verifique se todas as articulações se movem livremente à mão
- Verifique se ambos os grippers de 8Nm auto-desenvolvidos estão montados de forma segura
- Inspecione as rodas da base móvel — ambas as rodas de tração devem girar livremente sem travar
- Verifique se a coluna de elevação desliza suavemente por toda a faixa (106–162 cm)
- Confirme se o cabo Ethernet e o adaptador de energia estão na caixa
- Leia o guia de segurança VLAI L1 incluído no pacote de documentação
Requisitos de espaço de trabalho
- Área mínima do piso: Superfície clara e nivelada de 2 m × 2 m
- Pegada do robô: 46 cm L × 60 cm C — permita espaço livre em todos os lados
- Alcance do braço: 63 cm por braço — certifique-se de que não há obstáculos ao alcance quando os braços estão estendidos
- Energia: Tomada padrão 110V/220V a até 2 m
Instalação do SDK e Configuração de Rede
Requisitos
- Python 3.10+ (3.11 recomendado)
- Nível de desenvolvedor ou superior (o nível juvenil não inclui acesso ao SDK)
- L1 ligado e conectado à mesma rede local (Ethernet ou Wi-Fi de 5GHz)
Instale o SDK
pip install roboticscenter
Conecte e abra o painel de teleop do navegador
rc connect --device l1 # Terminal prints: Session ready → https://platform.roboticscenter.ai/session/RC-XXXX-XXXX # Open the URL in any browser to access the full teleop panel
Transmita dados das articulações via Python
from roboticscenter import L1Robot
robot = L1Robot.connect()
print(robot.session_url)
for frame in robot.stream():
joints = frame.data['joints']
print(f"Left: {joints['left_arm']}")
print(f"Right: {joints['right_arm']}")
print(f"Base: {frame.data['base']}")
rc connect --device l1 --mock para iniciar uma sessão L1 totalmente simulada. Todos os métodos do SDK, o painel de teleop do navegador e a gravação de dados funcionam de forma idêntica no modo simulado — útil para pipelines de CI e prototipagem de fluxo de trabalho antes do envio da sua unidade.
Calibração de Braços Duplos
Os braços L1 usam o protocolo de motor MIT com feedback de codificador duplo e controle FOC. A calibração define as posições de origem e verifica a especificação de precisão total de ±0,02 mm.
Verifique os estados das juntas do ROS2
ros2 topic list
ros2 topic echo /joint_states # verify all 16 DOF are publishing
Inicie o MoveIt2 para planejamento de movimento
ros2 launch l1_moveit l1_moveit.launch.py
# Opens RViz with full dual-arm URDF, collision checking, and Cartesian planning
Calibração da posição de origem
- No painel RViz do MoveIt2, navegue até o Planejamento aba
- Selecione o origem alvo nomeado para ambos os braços
- Clique Planejar e Executar — os braços devem se mover para a posição neutra estendida
- Verifique se os estados das juntas correspondem à configuração de origem esperada no terminal
Calibração do gripper
# Open grippers fully ros2 topic pub /left_gripper/cmd std_msgs/Float32 "{data: 0.0}" ros2 topic pub /right_gripper/cmd std_msgs/Float32 "{data: 0.0}" # Close to 50% — verify 8Nm grippers engage smoothly ros2 topic pub /left_gripper/cmd std_msgs/Float32 "{data: 0.5}" ros2 topic pub /right_gripper/cmd std_msgs/Float32 "{data: 0.5}"
Navegação da Base Móvel
Teste de direção com teclado WASD
Abra o painel de teleop do navegador e use as teclas WASD para dirigir a base diferencial. A escala de velocidade é ajustável através do controle deslizante do painel (10%, 50%, 100%).
# Or command directly via ROS2 Twist ros2 topic pub /base/cmd_vel geometry_msgs/Twist \ "{linear: {x: 0.3, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" # Stop ros2 topic pub /base/cmd_vel geometry_msgs/Twist \ "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
Teste de faixa de elevação
Use o controle deslizante vertical no painel de teleop do navegador para testar toda a faixa de elevação (106–162 cm) a 30 mm/s. Verifique o movimento suave em toda a faixa, sem travamentos ou rangidos.
# Monitor lift height ros2 topic echo /lift/state # current height in meters
Primeira Tarefa de Manipulação
Controles do painel de teleoperação do navegador
- Visão de braço duplo: Visualização 3D em tempo real de ambos os braços de 7 DOF — ângulos de junta, pose do efetor final (6D) e status do gripper com taxa de atualização de <10ms
- Seletor de modo do efetor final: Alternar por braço de forma independente: Gripper (padrão 8Nm), mão dextra ou ventosa
- Fluxos de câmera: Câmera do peito (Developer+), câmeras de pulso esquerda/direita (Developer Max)
Captura e colocação simples via MoveIt2
from roboticscenter import L1Robot robot = L1Robot.connect() # Move left arm to approach pose robot.left_arm.move_to(x=0.45, y=0.15, z=0.30, roll=0, pitch=90, yaw=0) # Open left gripper robot.left_arm.gripper.open() # Move down to grasp robot.left_arm.move_to(x=0.45, y=0.15, z=0.05, roll=0, pitch=90, yaw=0) # Close gripper to grasp robot.left_arm.gripper.close(force=0.6) # Lift robot.left_arm.move_to(x=0.45, y=0.15, z=0.35, roll=0, pitch=90, yaw=0)
Teleoperação em VR (Developer Pro e Max)
Conecte um headset compatível com OpenXR e execute rc vr --session RC-XXXX-XXXX para mapear a pose do controlador de mão diretamente para o efetor final de cada braço no espaço cartesiano, com feedback háptico proporcional à força de contato estimada.
Coleta de Dados & Pipeline de Um Clique
Cada rc connect sessão é uma unidade de coleta de dados nomeada. As sessões são enviadas automaticamente para o seu espaço de trabalho na Fearless Platform ao serem fechadas — nenhum passo de exportação manual é necessário.
O que é capturado por quadro
- Dados das juntas — Posição, velocidade e esforço para todos os 16 DOF a ~500Hz com timestamps em microssegundos
- Fluxos de câmera — RGB do peito (Developer+), RGB do pulso (Developer Max) — com timestamp e sincronizados aos dados das juntas dentro de ±1ms
- Força / contato — Estimativa da força da mandíbula do gripper a partir da corrente do motor
- Estado base — Odometria de roda, velocidade linear/angular, altura de elevação
- Ações do operador — Fluxo de comando teleoperado bruto para aprendizado por imitação
Rotulagem de episódios durante a coleta
- Pressão Espaço no painel do navegador para marcar os limites do episódio
- Pressão L para anotar o quadro atual com uma string de rótulo personalizada
Agente ROS2 para ponte de nuvem
# Run on the L1's onboard computer to bridge topics to the platform
python l1_robot_agent.py \
--backend wss://platform.roboticscenter.ai \
--session RC-XXXX-XXXX \
--ros2
Formatos de exportação de conjunto de dados
Sessões limpas e anotadas exportadas no formato LeRobot (HDF5 + manifesto JSON), RLDS ou JSONL bruto + MP4. Use o Dados guia na plataforma para configurar a exportação e download.