Limelight 3A Configuração para FIRST Tech Challenge Nesse Capítulo vamos aprender a configurar a Limelight 3A para a utilização na FIRST Tech Challenge. Configuração Este documento foi desenvolvido em parceria com a equipe JUSTICE FTC TEAM #21036 A Limelight 3A para FTC foi projetada para tornar o processamento de imagem mais fácil do que nunca. Aqui está uma rápida visão geral deste processo: Conecte a Limelight ao laptop com um cabo USB Configure até 10 pipelines de visão com a interface da Web integrada da Limelight. Cada pipeline tem um “tipo”. Por exemplo, você pode configurar a pipeline 0 para ser uma pipeline “AprilTag” Você pode escrever suas próprias pipelines definindo o tipo de pipeline como “Python Snapscript” Os tipos de pipeline incorporadas podem rastrear peças de jogo coloridas, executar redes neurais e localizar o robô em 3D com base em um mapa de campo carregado. Cada 3A vem com um mapa de campo INTO THE DEEP integrado Depois de testar as pipelines no laptop, você pode conectar a Limelight à Porta USB 3.0 do Hub de Controle. Confira os exemplos de programação da FTC para obter dados de resultados da sua LL no código do robô. Aqui está um guia de introdução mais detalhado: Montagem e CAD Use pelo menos 2 parafusos M3 ou M4 para montar a LL3A nas Extrusões da REV ou GoBilda usando os orifícios de montagem rosqueados. Você também pode usar fita VHB ou abraçadeiras para prender o Limelight CAD: Vá para a página de downloads. Atualizando o LimelightOS Informações: As Limelights são fornecidas com uma imagem pré-instalada. Você provavelmente pode pular esta etapa por enquanto. Instruções de atualização (Windows) AVISO! Salve seus pipelines antes de atualizar o LimelightOS. Eles serão excluídos durante a atualização. Faça o download dos drivers USB mais recentes, da imagem do Limelight OS e da ferramenta Balena Flash na página de downloads. Mantenha pressionado o botão azul de configuração no seu Limelight. -Enquanto o mantém pressionado, passe um cabo USB->USB-C do laptop para o seu Limelight. Seu Limelight será ligado automaticamente. Depois de ter ligado o seu LL ao seu laptop, pode soltar o botão azul de configuração Seu Limelight está agora em modo flash, e seus LEDs não piscarão. Execute o “Balena Etcher” como administrador. Pode levar até 20 segundos para que o computador reconheça a câmera. Selecione a imagem .zip mais recente em sua pasta de downloads Selecione um dispositivo “Compute Module” no menu “Drives”. Clique em “Flash”. Quando a atualização estiver concluída, remova o cabo USB do limelight. Instruções de atualização (Avançadas) (macOS e Linux) AVISO! Salve seus pipelines antes de atualizar o LimelightOS. Eles serão excluídos durante a atualização. Faça o download da imagem do Limelight OS e da ferramenta Balena Flash na página de downloads. Crie você mesmo o driver de inicialização USB 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 em execução, sua câmera será enumerada corretamente no macOS e no Linux Você precisa executar o rpiboot sempre que quiser fazer o flash. Mantenha pressionado o botão de configuração na Limelight e, enquanto o mantém pressionado, passe um cabo USB -> USB-C do laptop para a Limelight. Sua limelight será ligada automaticamente. Execute o “Balena Etcher”. Pode levar até 20 segundos para que o computador reconheça a câmera. Selecione a imagem .zip mais recente em sua pasta de downloads Selecione um dispositivo “Compute Module” no menu “Drives”. Clique em “Flash”. Após a conclusão do flash, remova o cabo USB da limelight. Fiação do robô Quando estiver pronto para usar a LL no robô, passe um cabo USBC para USBA da LL3A para a porta USB 3.0 do Hub de Controle. A Limelight 3A não é compatível com o Google Coral. Ainda é possível usar pipelines de deteção e classificação neurais definindo o mecanismo de tempo de execução da rede neural como “cpu” Configuração do hub de controle Atualize o SO do Control Hub, o aplicativo DriverStation, o aplicativo RobotController e o SDK para as versões mais recentes. Conecte a Limelight ao ControlHub e aguarde até que a luz verde de status da Limelight comece a piscar Conecte o ControlHub à rede WiFi do robô No aplicativo FTC DriverStation, clique em “Configure Robot” (Configurar robô) Se você não tiver uma configuração ativa, talvez seja necessário criar uma nova. Clique no botão “scan”. Você deverá ver um “Dispositivo Ethernet” aparecer. Você pode editar o nome desse dispositivo para “limelight” para maior clareza. Agora você pode inicializar um objeto Limelight3A em seu código usando o mapa de hardware. Configuração do Pipeline da FIRST Tech Challenge Este documento foi desenvolvido em parceria com a equipe JUSTICE FTC TEAM #21036 O LimelightOS armazena até 10 pipelines de visão únicos. Um pipeline é como um pequeno programa que pega uma imagem, processa a imagem e fornece um objeto de resultados para ser usado no código do robô. Os pipelines funcionam entre 10 fps (Redes Neurais da CPU) e 90 fps (Rastreamento de Objetos Baseado em Cores). Para começar a ajustar os pipelines, ligue a Limelight ao seu computador e acesse http://limelight.local:5801 no seu navegador Web. Também pode acessar diretamente em http://172.28.0.1:5801 no Windows e http://172.29.0.1:5801 no Mac/ChromeOS/Linux. Se você for um utilizador avançado e tiver alterado o índice USB ou o nome do anfitrião da sua LL, pode acessar à interface web em http://172.28.(usb_index).1:5801, http://172.29.(usb_index).1:5801, ou http://(hostname).local:5801 Se tiver baixado o Limelight Hardware Manager, você pode utilizar o botão “scan” para encontrar o endereço IP da sua Limelight. Informações: Para editar vários pipelines, é necessário primeiro marcar a caixa de seleção “Ignore NetworkTables Index” na interface da Web. Isto diz à câmera para ignorar qualquer código que lhe diga para alterar as pipelines Aba de Entrada A Aba de Entrada aloja controles para alterar a imagem bruta da câmara antes de ser passada pelo pipeline de processamento. Tipo de pipeline Controla o tipo de pipeline desejado (AprilTags, Neural Networks, Python, etc.) Imagem de origem Controla a origem da imagem que é passada através do pipeline. Mude para “Snapshot” para testar os pipelines de visão em Snapshots armazenados. Resolução + Zoom Controla a resolução da câmera e do pipeline de visão. Recomendamos a utilização do pipeline de 320x240, a menos que esteja a utilizar a funcionalidade 3D. Os pipelines de 320x240 são executados a 90 fps, enquanto os pipelines de 960x720 são executados a 22 fps. Em 2020, as opções de zoom de hardware 2x e 3x foram adicionadas a este campo. As opções de zoom não são digitais e utilizam 100% dos pixels reais do sensor. Orientação Controla a orientação do fluxo após todo o processamento. Isto não afeta de forma alguma os dados dos resultados. Exposição Controla a definição de exposição da câmara em intervalos de 0,01 milissegundos. O aumento da exposição aumentará o brilho efetivo da imagem. Também aumentará a desfocagem do movimento. Regulagem de nível de preto A regulagem de nível de preto é um controle avançado que pode afetar o brilho sem afetar a desfocagem do movimento. Mantenha-o o mais baixo possível. Ganho do sensor Aumentar o ganho do sensor aumentará efetivamente o brilho da imagem, mas normalmente também adiciona ruído à imagem. Pode utilizar o Ganho do sensor e a regulagem do nível de preto para iluminar a imagem sem aumentar o tempo de exposição. Isso minimizará o desfoque de movimento para aplicações de rastreamento de alta velocidade. Equilíbrio de vermelho, Equilíbrio de azul Controla a intensidade dos componentes de cor vermelha e azul na sua imagem. Estes controlam coletivamente o equilíbrio de brancos do Limelight. Recomendamos deixá-los intocados Configuração detalhada do pipeline Verifique os tipos específicos de pipeline clicando aqui. Início rápido da programação da FIRST Tech Challenge Este documento foi desenvolvido em parceria com a equipe JUSTICE FTC TEAM #21036 Exemplo básico para FTC: Exemplo FTC Na FTC, pode-se utilizar o Android Studio, OnBot Java e Blockly para interagir com o seu Limelight. A maioria das aplicações requer menos de 10 linhas de código. Aqui está uma rápida visão geral do processo. Uso básico Inicialize sua Limelight3A usando o mesmo nome que você usou durante a etapa de configuração do Control Hub. Chame pipelineSwitch() para selecionar um dos 10 pipelines que você configurou usando a interface da Web Chame start() para iniciar a sondagem de resultados em segundo plano a 100 sondagens por segundo. 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); /* * Starts polling for data. */ limelight.start(); . . Chame getLatestResult() nos seus loops autónomos e de teleoperação para obter o último objeto LLResult Utilize as funções getTx(), getTy() e getBotpose() do LLResult para guiar o seu robô. 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()); . . Utilização avançada Em casos de uso avançados podem exigir o uso das funções do LLResult’s getColorResults(), getFiducialResults(), etc. // print some data for each detected target if (result.isValid()) { // Access fiducial results List fiducialResults = result.getFiducialResults(); for (LLResultTypes.FiducialResult fr : fiducialResults) { telemetry.addData("Fiducial", "ID: %d, Family: %s, X: %.2f, Y: %.2f", fr.getFiducialId(), fr.getFamily(),fr.getTargetXDegrees(), fr.getTargetYDegrees()); } // Access color results List colorResults = result.getColorResults(); for (LLResultTypes.ColorResult cr : colorResults) { telemetry.addData("Color", "X: %.2f, Y: %.2f", cr.getTargetXDegrees(), cr.getTargetYDegrees()); } } Para obter a máxima precisão de localização 3D, chame updateRobotOrientation() e utilize getBotPose_MT2(). O MegaTag2 é um localizador de robôs fundido com IMU que utiliza a imu para resolver o problema de ambiguidade que é fundamental para todos os alvos planares, como os AprilTags. while (opModeIsActive()) { YawPitchRollAngles orientation = imu.getRobotYawPitchRollAngles(); telemetry.addData("Yaw (Z)", "%.2f Deg. (Heading)", orientation.getYaw(AngleUnit.DEGREES)); limelight.updateRobotOrientation(orientation.getYaw(AngleUnit.DEGREES)); LLResult result = limelight.getLatestResult(); if (result != null) { if (result.isValid()) { Pose3D botpose = result.getBotpose_MT2(); . . Para mais informações, consultar a página de programação FTC Melhores práticas da FIRST Tech Challenge Este documento foi desenvolvido em parceria com a equipe JUSTICE FTC TEAM #21036 Lista de verificação da preparação do evento FTC Baixe e faça backup de todos os pipelines para o seu laptop de programação. Baixe uma cópia da imagem mais recente da Limelight para seu laptop de programação. Registre uma lista de seus pipelines e seus índices. Alvo duplo baixo Alvo duplo alto Carga Adicione alívios de tensão ao cabo USB da Limelight. Considere a possibilidade de colar todas as conexões com cola quente. Lista de verificação antes da partida Verifique o cabo USB da sua Limelight. Verifique se há parafusos soltos no robô. Você pode usar um marcador permanente para ver se há mudanças na rotação dos parafusos.