Pular para o conteúdo principal

Guia de Início Rápido do Limelight 3A

Especificações de Hardware

  • Dimensões: 2.839in x 1.894in (72.11mm x 48.11mm)
  • Espessura: 0.661in (16.80mm)
  • Massa: 0.20 lb
  • Montagem: 4x furos passantes #10, 4x M3, 6x furos roscados M4
  • Entrada de Energia: 4.1V-5.75V via USB
  • Consumo Máximo de Energia: 4W
  • Sensor: OV5647 Color Rolling Shutter (640x480 @ 90FPS)
  • Sem iluminação LED integrada
  • Campo de Visão: H:54.5° V:42°
  • Conectividade apenas USB-C (sem porta RJ45)
  • Luz de Status: Verde (detecção de alvo)
  • Otimizado para compatibilidade com FTC

Capacidades de Software (Limelight OS)

  • Visão de alto desempenho Plug-and-Play. Nenhuma experiência necessária.
  • Interface web auto-hospedada baseada em navegador para configuração de pipelines de visão
  • Suporte para FTC (integração direta com Java) e FRC (interface NetworkTables)
  • Exposição, ganho do sensor, resolução e taxa de quadros configuráveis
  • Configure 10 Pipelines de Visão intercambiáveis:
    • Pipelines Python Personalizados com OpenCV 4.10, numpy, etc.
    • Rastreamento de AprilTag 2D, 3D e Localização do Robô
      • Localização 3D Completa (GPS do Robô) com MegaTag1
      • Localização 3D Completa de Alta Precisão (GPS do Robô) com Fusão de IMU Externo com MegaTag2
      • 20fps @ 1280x960 (redução 2x), 50fps @ 640x480 (redução 2x)
      • Visualizador 3D completo na interface web
    • Pipelines de Color Blob a 90FPS
    • Pipelines de Detecção Neural de Objetos (apenas inferência em CPU)
    • Pipelines de Classificação Neural de Imagens (apenas inferência em CPU)
    • Pipelines de Rastreamento de Código de Barras
  • Interface integrada de Calibração de Intrínsecos Charuco
  • Streaming MJPEG de baixa latência integrado

1. Montando o Limelight 3A

Montagem Roscada (Recomendada)

  • Use pelo menos 2 parafusos M3 ou M4 para montar seu LL3A em canais Rev ou GoBilda usando os furos de montagem roscados
  • Você também pode usar fita VHB ou abraçadeiras para fixar seu Limelight

Montagem com Furos Passantes

  • Use parafusos #10-32 ou #10-24 de 1 1/4" com porcas autotravantes
  • Alternativamente, use parafusos M4 de 28mm com porcas autotravantes
Desenho do Limelight 3A

2. Conectando o Limelight 3A

Quando estiver pronto para usar seu Limelight no robô:

Para FTC

  • Conecte um cabo USB-C para USB-A do seu Limelight 3A à porta USB 3.0 do seu Control Hub
  • Conecte ao seu Control Hub plugando na porta USB 3.0 (porta azul)

Para FRC

  • Conecte seu Limelight 3A à porta USB do seu roboRIO
  • Use um cabo USB-C para USB-A

O Limelight 3A não suporta Google Coral. Você ainda pode usar pipelines de detecção e classificação neural configurando o motor de execução da rede neural para "CPU".

3. Acessando a Interface Web

Após conectar seu Limelight 3A ao computador via USB:

  1. Aguarde a luz de status verde ficar ativa (cerca de 15-20 segundos)
  2. Use um destes métodos para acessar a interface web:
    • Método 1: Abra o aplicativo Limelight Hardware Manager, procure por Limelights e clique duas vezes no seu Limelight 3A quando aparecer
    • Método 2: Abra um navegador web e navegue para http://limelight.local:5801

Uma vez conectado, você terá acesso a:

  • Aba Settings - Configure número da equipe, hostname e outras configurações do sistema
  • Abas Vision Pipeline - Configure e ajuste seus pipelines de processamento de visão
  • Aba Camera & Crosshair - Ajuste configurações da câmera e parâmetros da mira
  • Aba 3D Visualization - Visualize detecção de AprilTag e localização em tempo real

Toda configuração é feita através desta interface web. As alterações são salvas automaticamente no seu Limelight.

4. Atualizando o LimelightOS

info

Os Limelights são enviados com uma imagem pré-instalada. Você provavelmente pode pular esta etapa por enquanto.

Instruções de Atualização (Windows)
atenção

Salve seus pipelines antes de atualizar o LimelightOS. Eles serão deletados durante a atualização.

  • Baixe os drivers USB mais recentes, a imagem do Limelight OS e a ferramenta Balena Flash da Página de Downloads
  • Reinicie sua máquina após instalar os drivers
  • Segure o botão azul de configuração no seu Limelight
  • Enquanto segura, conecte um cabo USB->USB-C do seu laptop ao seu Limelight (seu Limelight ligará automaticamente)
  • Após plugar seu LL no laptop, você pode soltar o botão azul de configuração
  • Seu Limelight agora está em modo flash, e seus LEDs não piscarão
  • Execute o "Balena Etcher" como administrador
  • Pode levar até 20 segundos para sua máquina reconhecer a câmera
  • Selecione a imagem .zip mais recente na sua pasta de downloads
  • Selecione um dispositivo "Compute Module" no menu "Drives"
  • Clique em "Flash"
  • Quando o flash estiver completo, remova o cabo USB do seu Limelight
Instruções de Atualização (Avançado) (macOS & Linux)
atenção

Salve seus pipelines antes de atualizar o LimelightOS. Eles serão deletados durante a atualização.

nota

Estamos trabalhando para simplificar dramaticamente o processo de atualização no macOS e Linux

  • Baixe a imagem do Limelight OS e a ferramenta Balena Flash da Página de Downloads
  • Compile o driver USB Boot você mesmo:
brew install libusb
brew install pkg-config
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot
make
cd mass-storage-gadget64
sudo ../rpiboot -d .
# Enquanto o rpiboot estiver rodando, sua câmera será enumerada corretamente no macOS e Linux
# Você precisa executar o rpiboot toda vez que quiser fazer flash.
  • Segure o botão azul de configuração no seu Limelight
  • Enquanto segura, conecte um cabo USB->USB-C do seu laptop ao seu Limelight (seu Limelight ligará automaticamente)
  • Após plugar seu LL no laptop, você pode soltar o botão azul de configuração
  • Seu Limelight agora está em modo flash, e seus LEDs não piscarão
  • Execute o "Balena Etcher"
  • Pode levar até 20 segundos para sua máquina reconhecer a câmera
  • Selecione a imagem .zip mais recente na sua pasta de downloads
  • Selecione um dispositivo "Compute Module" no menu "Drives"
  • Clique em "Flash"
  • Quando o flash estiver completo, remova o cabo USB do seu Limelight

5. Processo de Configuração

Para FTC

  1. Conecte seu Limelight ao laptop com um cabo USB
  2. Acesse a interface web conforme descrito na seção 3
  3. Vá para a aba Settings e defina o número da sua equipe, depois clique em "Restart Vision Client"
  4. Configure seus pipelines conforme desejado (AprilTag, Redes Neurais, Python Personalizado, etc.)
  5. Quando estiver pronto para competição, plugue seu Limelight 3A na porta USB 3.0 do seu Control Hub
  6. No App FTC DriverStation, clique em "Configure Robot"
  7. Se você não tiver uma configuração ativa, pode ser necessário criar uma nova
  8. Clique no botão "scan"
  9. Você deve ver um "Ethernet Device" aparecer
  10. Você pode editar o nome deste dispositivo para "limelight" para maior clareza
  11. Agora você pode inicializar um objeto Limelight3A no seu código usando o hardware map

Para FRC

  1. Conecte seu Limelight 3A ao laptop, aguarde a atividade da luz de status
  2. Acesse a interface web conforme descrito na seção 3
  3. Na aba Settings, defina o número da sua equipe e clique em "Restart Vision Client"
  1. Configure seus pipelines conforme desejado
  2. Quando estiver pronto, plugue seu Limelight 3A na porta USB do seu roboRIO
  3. Abra seu dashboard preferido para verificar se seu 3A está enviando dados para o NetworkTables do seu roboRIO
  4. Adicione Port Forwarding para habilitar edição de pipeline ao vivo enquanto conectado à rede do seu robô:
// (robotIP):5801 agora apontará para o stream da interface web do Limelight3A (id 0):
// (robotIP):5800 agora apontará para o stream de vídeo do Limelight3A (id 0):
PortForwarder.getInstance().add(5801, "172.29.0.1", 5801);
PortForwarder.getInstance().add(5802, "172.29.0.1", 5802);
PortForwarder.getInstance().add(5803, "172.29.0.1", 5803);
PortForwarder.getInstance().add(5804, "172.29.0.1", 5804);
PortForwarder.getInstance().add(5805, "172.29.0.1", 5805);
PortForwarder.getInstance().add(5806, "172.29.0.1", 5806);
PortForwarder.getInstance().add(5807, "172.29.0.1", 5807);
PortForwarder.getInstance().add(5808, "172.29.0.1", 5808);
PortForwarder.getInstance().add(5809, "172.29.0.1", 5809);

// (robotIP):5811 agora apontará para o stream da interface web do Limelight3A (id 1):
// (robotIP):5810 agora apontará para o stream de vídeo do Limelight3A (id 1):
PortForwarder.getInstance().add(5811, "172.29.1.1", 5801);
PortForwarder.getInstance().add(5812, "172.29.1.1", 5802);
PortForwarder.getInstance().add(5813, "172.29.1.1", 5803);
PortForwarder.getInstance().add(5814, "172.29.1.1", 5804);
PortForwarder.getInstance().add(5815, "172.29.1.1", 5805);
PortForwarder.getInstance().add(5816, "172.29.1.1", 5806);
PortForwarder.getInstance().add(5817, "172.29.1.1", 5807);
PortForwarder.getInstance().add(5818, "172.29.1.1", 5808);
PortForwarder.getInstance().add(5819, "172.29.1.1", 5809);

6. Tipos de Pipeline Disponíveis

O Limelight 3A oferece os mesmos recursos de processamento de visão que outros modelos Limelight:

  • Rastreamento de AprilTag e localização do robô
  • Rastreamento de color blob
  • Detecção neural de objetos (apenas CPU)
  • Classificação neural
  • Rastreamento de código de barras
  • Pipelines Python personalizados

Cada 3A vem com um mapa de campo Into The Deep integrado para FTC.

7. Programação FTC

Exemplo Básico FTC: Exemplo FTC

A maioria das aplicações requer menos de 10 linhas de código:

public class Teleop extends LinearOpMode {

private Limelight3A limelight;

@Override
public void runOpMode() throws InterruptedException
{
limelight = hardwareMap.get(Limelight3A.class, "limelight");

telemetry.setMsTransmissionInterval(11);

limelight.pipelineSwitch(0);

/*
* Inicia a coleta de dados.
*/
limelight.start();

while (opModeIsActive()) {
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose();
telemetry.addData("tx", result.getTx());
telemetry.addData("ty", result.getTy());
telemetry.addData("Botpose", botpose.toString());
}
}
}
}
}

Para máxima precisão de localização 3D, chame updateRobotOrientation() e use getBotPose_MT2():

while (opModeIsActive()) {
YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles();
limelight.updateRobotOrientation(orientation.getYaw(AngleUnit.DEGREES));
LLResult result = limelight.getLatestResult();
if (result != null) {
if (result.isValid()) {
Pose3D botpose = result.getBotpose_MT2();
// Use os dados do botpose
}
}
}

Para mais informações, veja a página de Programação FTC

8. Solução de Problemas

Indicadores da Luz de Status

  • Luz Verde: Pisca lentamente (sem alvos), pisca rapidamente (alvos detectados)

Perguntas Frequentes

  • Por que meu Limelight parece tão quente? Para o Limelight funcionar o mais frio possível, ele necessariamente precisa parecer o mais quente possível/seguro ao toque. Seu gabinete é um dissipador de calor altamente condutivo que ajuda a manter a CPU em uma temperatura razoavelmente fria.

  • Por que a imagem parece tão granulada? Para minimizar a latência, vários filtros normalmente presentes em câmeras comerciais são ignorados. O stream também é comprimido para minimizar a taxa de bits. Na versão 2024.10.1, alteramos os valores padrão de balanço de cores para fazer as imagens parecerem mais naturais e vibrantes ao olho humano.

  • O que o Limelight oferece em relação ao OpenCV no Control Hub? Um algoritmo de localização multi-tag pronto para uso, sem código, com fusão de sensor IMU do robô, redes neurais e muito mais.