Pular para o conteúdo principal

Registro de Alterações do Software 2021 - 2023

2023.6 (18/04/23)

Calibração ChArUco Fácil & Visualizadores de Calibração

  • A calibração ChArUco é considerada melhor que a calibração com tabuleiro de xadrez porque lida com oclusões, detecções ruins de cantos e não requer que o tabuleiro inteiro esteja visível. Isso torna muito mais fácil capturar cantos do tabuleiro de calibração próximos às bordas e cantos das suas imagens. Isso é crucial para a estimativa dos coeficientes de distorção.
  • O processo de calibração do Limelight fornece feedback em cada etapa e garantirá que você faça tudo o que é necessário para bons resultados de calibração. Um grande esforço foi dedicado para tornar este processo o mais à prova de falhas possível.
  • Mais importante, você pode visualizar seus resultados de calibração ao lado da calibração padrão. Com um olhar rápido, você pode entender se seu resultado de calibração é razoável ou não.
  • Você também pode usar o painel de calibração como uma ferramenta de aprendizado. Você pode modificar arquivos de resultados de calibração baixados e reenviá-los para aprender como a matriz de intrínsecos e os coeficientes de distorção afetam os resultados de rastreamento, FOV, etc.
  • Assista a este vídeo:

2023.5.1 & 2023.5.2 (22/03/23)

  • Corrigida regressão introduzida na 2023.5.0 - Enquanto a 2023.5 corrigiu o megatag para todos os layouts não planares, ela reduziu o desempenho das estimativas de pose de tag única. Isso foi corrigido. As estimativas de pose de tag única usam exatamente o mesmo solver usado na 2023.4.

  • Interface de snapshots mais responsiva. A grade de snapshots agora carrega miniaturas de baixa resolução em 128p.

  • O Yaw do Limelight agora é apresentado corretamente nos visualizadores 3D. É positivo no sentido anti-horário no visualizador e internamente

  • Indica quais alvos estão sendo rastreados atualmente no visualizador de espaço de campo


2023.5.0 (21/03/23)

Mudanças Incompatíveis

  • Corrigida regressão - O "Yaw" do Espaço-Robô do Limelight estava invertido em versões anteriores. O yaw do Limelight na interface web agora é positivo no sentido anti-horário internamente.

Atualização de Seleção de Região

  • A seleção de região agora funciona como esperado em pipelines de detector neural.
  • Adicionadas 5 novas opções de região para selecionar o centro, topo, esquerda, direita, topo ou fundo do retângulo do alvo não rotacionado.

API REST "hwreport"

  • :5807/hwreport retornará uma resposta JSON detalhando informações de intrínsecos da câmera e distorção

Correção do MegaTag

  • Certos layouts de apriltag não coplanares estavam quebrados no MegaTag. Isso foi corrigido, e a estimativa de pose agora é estável com todas as tags de campo. Isso permite estimativa de pose estável em distâncias ainda maiores do que antes.

Maior precisão de tx e ty

  • TX e TY estão mais precisos do que nunca. Os alvos são totalmente corrigidos de distorção, e o FOV é determinado inteiramente pelos intrínsecos da câmera.

2023.4.0 (18/02/23)

Filtro de Classe do Detector Neural

Especifique as classes que você deseja rastrear para filtragem fácil de detecções indesejadas.

Suporte expandido do Detector Neural

Suporte a qualquer resolução de entrada, suporte a formas de saída adicionais para suportar outras arquiteturas de detecção de objetos. Modelos baseados em EfficientDet0 agora são suportados.


2023.3.1 (14/02/23)

Melhorias de Precisão do AprilTag

Matriz de intrínsecos melhorada e, mais importante, coeficientes de distorção melhorados para todos os modelos. Melhorias notáveis na localização de AprilTag único.

Upload de Detector

Upload de detector corrigido.


2023.3 (13/02/23)

Latência de Captura (Chave NT: "cl", Resultados JSON: "cl")

A nova entrada de latência de captura representa o tempo entre o fim da exposição da linha central do sensor de imagem do Limelight e o início do pipeline de processamento.

Novo Limiar de Qualidade para AprilTags

AprilTags espúrios agora são mais facilmente filtrados com o novo controle deslizante de Limiar de Qualidade. O valor padrão definido na 2023.3 deve remover a maioria das detecções espúrias.

Substituição da Pose da Câmera no Espaço do Robô (Chaves NT: "camerapose_robotspace_set", "camerapose_robotspace")

A posição do seu Limelight no espaço do robô agora pode ser ajustada em tempo real. Se a chave for definida como um array de zeros, a pose definida na interface web é usada.

Aqui está um exemplo de um Limelight em um elevador: Limelight em Elevador

Exposição Máxima Aumentada

O tempo máximo de exposição agora é 33ms (aumentado de 12.5 ms). Modos de captura de alto fps ainda são limitados a (1/fps) segundos. Pipelines de 90hz, por exemplo, não terão imagens mais brilhantes além de 11ms de tempo de exposição.

Atualizações do Botpose

Todos os três arrays de botpose no networktables têm uma sétima entrada representando a latência total (latência de captura + latência de rastreamento).

Correções de Bugs

  • Corrigidos streams MJPEG do LL3 no shuffleboard
  • Corrigido camMode - o modo driver agora produz imagens brilhantes e utilizáveis.
  • O rótulo de exposição foi corrigido - cada "tick" representa 0.01ms e não 0.1 ms
  • Corrigido upload do detector de rede neural

2023.2 (28/01/23)

Tornando o 3D mais fácil do que nunca.

Botposes Compatíveis com WPILib

O Botpose agora é ainda mais fácil de usar direto da caixa.

Estes correspondem aos sistemas de coordenadas do WPILib. exemplo de botpose megatag:

Todos os botposes são impressos diretamente no visualizador de espaço de campo na interface web, tornando fácil confirmar rapidamente que tudo está funcionando corretamente.

Acesso Mais Fácil aos Dados 3D (Mudanças Incompatíveis)

RobotPose no TargetSpace é indiscutivelmente o dado mais útil vindo do Limelight em relação aos AprilTags. Usando apenas isso, você pode alinhar perfeitamente um drivetrain com um AprilTag no campo.

  • A chave NetworkTables "campose" agora é "camerapose_targetspace"
  • A chave NetworkTables "targetpose" agora é "targetpose_cameraspace"
  • Nova chave NetworkTables - "targetpose_robotspace"
  • Nova chave NetworkTables - "botpose_targetspace"

Upload de Rede Neural

Faça upload de modelos teachable machine para o Pipeline Classificador do Limelight. Certifique-se de que são modelos compatíveis com Tensorflow Lite EdgeTPU. Faça upload dos arquivos .tflite e .txt de rótulos separadamente.


2023.1 (19/01/23)

MegaTag e Melhorias de Desempenho

Corrigindo Um Erro

O parâmetro de tamanho de marcador padrão na UI foi corrigido para 152.4mm (reduzido de 203.2mm). Esta era a raiz da maioria dos problemas de precisão.

Estabilidade de Rastreamento Aumentada

Existem várias maneiras de ajustar a detecção e decodificação de AprilTag. Melhoramos a estabilidade em geral, especialmente em ambientes de baixa luz / baixa exposição.

Conversão para Escala de Cinza Ultra Rápida

A conversão para escala de cinza é 3x-6x mais rápida do que antes. As equipes sempre verão um stream de vídeo em cinza enquanto rastreiam AprilTags.

Recorte para Desempenho

Os pipelines de AprilTag agora têm controles deslizantes de recorte. Recortar sua imagem resultará em framerates melhorados em qualquer resolução.

Filtragem Mais Fácil

Agora há um único campo "filtro de ID" nos pipelines de AprilTag que filtra a saída JSON, tags habilitadas para botpose e tags habilitadas para tx/ty. A configuração de filtro duplo era problemática e confusa.

Mudança Incompatível

A chave NT "camtran" agora é "campose"

Atualização JSON

"botpose" agora faz parte do dump de resultados json

Atualização do Visualizador de Espaço de Campo

O visualizador de espaço de campo agora mostra o campo FRC 2023. Agora deve ser mais fácil avaliar a precisão do botpose rapidamente.

Limelight MegaTag (novo botpose)

Minha prioridade #1 foi reescrever o botpose para maior precisão, ruído reduzido e resiliência a ambiguidades. A nova implementação de botpose do Limelight é chamada MegaTag. Em vez de calcular o botpose com uma média simples de múltiplas poses individuais no espaço de campo, o MegaTag essencialmente combina todas as tags em uma tag 3D gigante com vários pontos-chave. Isso tem benefícios enormes.

O GIF a seguir mostra uma situação projetada para induzir inversão de tag: Cilindro Verde: Pose do bot individual por tag Cilindro Azul: BotPose 2023.0.1 Cilindro Branco: Novo Botpose MegaTag

Note como o novo botpose (cilindro branco) é extremamente estável comparado ao antigo botpose (cilindro azul). Você pode observar os valores de tx e ty também.

Aqui está a tela completa, mostrando a ambiguidade da tag:

Aqui estão as vantagens:

O Botpose agora é resiliente a ambiguidades (inversão de tag) se mais de uma tag estiver visível (a menos que estejam próximas e coplanares. Idealmente os pontos-chave não são coplanares). O Botpose agora é mais resiliente ao ruído nos cantos das tags se mais de uma tag estiver visível. Quanto mais distantes as tags estiverem umas das outras, melhor. Isso não é restrito a tags planares. Escala para qualquer número de tags em 3D completo e em qualquer orientação. Tags no chão e tags no teto funcionariam perfeitamente.

Aqui está um diagrama demonstrando um aspecto de como isso funciona com um caso planar simples. Os resultados são na verdade melhores do que o representado, já que o MegaTag representado tem um erro significativo aplicado a três pontos em vez de um ponto. À medida que o MegaTag 3D combinado aumenta em tamanho e em contagem de pontos-chave, sua estabilidade aumenta.

O upload de rede neural está sendo adiado para 2023.2!


2023.0.0 e 2023.0.1 (11/01/23)

Apresentando AprilTags, localização de robô, Redes Neurais Profundas, uma interface de captura de tela reescrita e mais.

Recursos, Mudanças e Correções de Bugs

  • Novo pipeline de captura de sensor e controle de Ganho
    • Nosso novo pipeline de captura permite tempos de exposição 100x mais curtos do que eram em 2022. O novo pipeline também habilita o Controle de Ganho. Isso é extremamente importante para rastreamento de AprilTags e servirá para tornar o rastreamento retrorefletivo mais confiável do que nunca. Antes do Limelight OS 2023, o ganho do sensor do Limelight era não determinístico (implementamos alguns truques para fazê-lo funcionar mesmo assim).
    • Com o novo controle deslizante "Ganho do Sensor", as equipes agora podem tornar as imagens mais escuras ou mais brilhantes do que nunca sem tocar no controle deslizante de exposição. Aumentar o ganho aumentará o ruído na imagem.
    • Combinando ganho mais baixo com os novos tempos de exposição mais baixos, agora é possível produzir imagens quase completamente pretas com LEDs em brilho máximo e alvos retrorefletivos. Isso ajudará a mitigar reflexos de LED e luz solar enquanto rastreia alvos retrorefletivos.
    • Ao aumentar o Ganho do Sensor e reduzir a exposição, as equipes poderão minimizar os efeitos do desfoque de movimento devido a altos tempos de exposição enquanto rastreiam AprilTags.
    • Conseguimos desenvolver este novo pipeline mantendo todos os recursos - 90fps, zoom por hardware, etc.
  • Mais Opções de Resolução
    • Há duas novas resoluções de captura para LL1, LL2 e LL2+: 640x480x90fps e 1280x960x22fps
  • Interface Web Otimizada
    • A interface web agora carregará e inicializará até 3x mais rápido em redes de robô.
  • Interface de Snapshots Reescrita
    • O recurso de snapshots foi completamente reescrito para permitir uploads de imagens, downloads de imagens e exclusão de imagens. Também há novas APIs para capturar snapshots detalhadas na documentação.
  • Melhorias no SolvePnP
    • Nosso recurso de localização de câmera baseado em solvePnP tinha um bug desagradável que estava limitando seriamente sua precisão a cada quatro frames. Isso foi resolvido, e um novo canvas 3D completo foi construído para visualizações de SolvePNP Retrorefletivo/Cor.
  • Correção da Interface Web
    • Havia um problema extremamente raro em 2022 que causava a quebra permanente da interface web durante a primeira inicialização após o flash, o que forçava o usuário a refazer o flash. A causa raiz foi encontrada e corrigida definitivamente.
  • Novas APIs
    • O Limelight agora inclui APIs REST e Websocket. As APIs REST, Websocket e NetworkTables todas suportam o novo recurso de dump JSON, que lista todos os dados de todos os alvos em um formato legível por humanos e simples de analisar para FRC e todas as outras aplicações.

Visão Baseada em Aprendizado Sem Código & Suporte ao Google Coral

  • O Google Coral agora é suportado por todos os modelos Limelight. O Google Coral é um acelerador de hardware USB de 4TOPs (Trilhões de Operações / segundo) que é construído especificamente para inferência em redes neurais de 8 bits.
  • Assim como o rastreamento retrorefletivo há alguns anos, a barreira de entrada para visão baseada em aprendizado em robôs FRC tem sido muito alta para a equipe média sequer fazer uma tentativa. Desenvolvemos toda a infraestrutura necessária para tornar a visão baseada em aprendizado tão fácil quanto alvos retrorefletivos com o Limelight.
  • Temos um cluster de GPU na nuvem, scripts de treinamento, uma ferramenta de agregação de datasets e uma equipe de rotulagem humana prontos para uso. Estamos animados em trazer redes neurais profundas para a comunidade FRC pela primeira vez.
  • Atualmente suportamos dois tipos de modelos: modelos de Detecção de Objetos e modelos de Classificação de Imagens.
    • Modelos de detecção de objetos fornecerão "IDs de classe" e caixas delimitadoras (assim como nossos alvos retrorefletivos) para todos os objetos detectados. Isso é perfeito para rastreamento de peças de jogo em tempo real.
      • Por favor, contribua para o primeiro modelo de detecção de objetos FRC enviando imagens aqui: https://datasets.limelightvision.io/frc2023
      • Use as chaves networktables tx, ty, ta e tclass ou o dump JSON para usar redes de detecção
    • Modelos de classificação de imagens ingerirão uma imagem e produzirão um único rótulo de classe.
      • Para aprender mais e começar a treinar seus próprios modelos para o Limelight, confira o Teachable Machine do Google.
      • https://www.youtube.com/watch?v=T2qQGqZxkD0
      • Modelos do Teachable Machine são diretamente compatíveis com o Limelight.
      • Classificadores de imagem podem ser usados para classificar o estado interno do robô, o estado de características do campo e muito mais.
      • Use a chave networktables tclass para usar esses modelos.
  • O Limelight OS 2023.0 não fornece a capacidade de fazer upload de modelos personalizados. Isso será habilitado em breve na 2023.1

Suporte a AprilTag Sem Código

  • AprilTags são tão fáceis quanto alvos retrorefletivos com o Limelight. Como eles têm um filtro rígido natural na forma de um ID, há ainda menos razão para seu roboRIO fazer qualquer filtragem relacionada à visão.
  • Para começar, use tx, ty e ta normalmente. Nenhuma mudança de código é necessária. Ordene por qualquer característica do alvo, utilize grupos de alvos, etc.
  • Como os AprilTags são sempre quadrados e sempre identificáveis de forma única, eles fornecem a plataforma perfeita para cálculos de pose 3D completos.
  • O feedback que recebemos para este recurso em nossos canais de suporte tem sido extremamente positivo. Tornamos os AprilTags o mais fácil possível, desde rastreamento 2D até localização completa de robô 3D no campo
  • Confira a Especificação do Mapa de Campo e o Documento do Sistema de Coordenadas para informações mais detalhadas.
  • Existem quatro maneiras de usar AprilTags com o Limelight:
  • AprilTags em 2D
    • Use tx, ty e ta. Configure seus pipelines para procurar um ID de tag específico.
    • <gif>
  • AprilTags 3D de Ponto de Interesse
    • Use as chaves networktables tx e ty, ta e tid. O offset do ponto de interesse é tudo que a maioria das equipes precisará para rastrear alvos que não têm AprilTags diretamente anexados a eles.
    • <gif>
  • 3D Completo
    • Rastreie seu LL, seu robô ou tags em 3D completo. Use campose ou json para puxar dados relevantes para seu roboRio.
    • <gif>
  • Localização de Robô no Espaço de Campo
    • Diga ao seu Limelight como ele está montado, faça upload de um mapa de campo, e seu LL fornecerá a pose de campo do seu robô para uso com o Estimador de Pose do WPILib.
    • Nosso sistema de coordenadas de campo coloca (0,0) no centro do campo em vez de um canto.
    • Use a chave networktables botpose para este recurso.
    • <gif>

2022.3.0 (13/04/22)

Correções de bugs e heartbeat.

Correções de Bugs

  • Corrigidos problemas de desempenho, estabilidade de stream e lag de stream relacionados a streams de Câmera USB e múltiplas instâncias de stream.

Recursos e Mudanças

  • Chave NetworkTable "hb" Heartbeat
    • O valor "hb" incrementa uma vez por frame de processamento e reseta para zero em 2000000000.

2022.2.3 (16/03/22)

Correções de bugs e filtragem de recorte por código do robô.

Correções de Bugs

  • Corrigida chave networktables "stream" e Modos Picture-In-Picture
  • Corrigida chave networktables "snapshot". Os usuários devem definir a chave "snapshot" para "0" antes de defini-la para "1" para tirar uma captura de tela.
  • Removidos alertas supérfluos relacionados a python da interface web

Recursos e Mudanças

  • Filtragem de Recorte Manual
    • Usando o array networktables "crop", as equipes agora podem controlar retângulos de recorte a partir do código do robô.
    • Para a chave "crop" funcionar, o pipeline atual deve utilizar o retângulo de recorte padrão, totalmente aberto (-1 para minX e minY, +1 para maxX e +1 maxY).
    • Além disso, o array networktable "crop" deve ter exatamente 4 valores, e pelo menos um desses valores deve ser diferente de zero.

2022.2.2 (23/02/22)

Atualização obrigatória para todas as equipes baseada em testes de confiabilidade da Semana 0 e FMS.

Correções de Bugs

  • Corrigido travamento / perda de conexão / perda de rastreamento relacionado a interfaces web abertas, FMS, configurações semelhantes ao FMS, múltiplos dispositivos visualizadores, etc.

Recursos e Mudanças

  • Filtragem de Recorte

    • Ignore todos os pixels fora de um retângulo de recorte especificado
    • Se seu flywheel tem pontos ideais no campo, você pode usar o filtro de recorte para ignorar a grande maioria dos pixels em pipelines específicos. Este recurso deve ajudar as equipes a reduzir a probabilidade de rastrear não-alvos.
    • Se você está rastreando cargo, use este recurso para procurar cargo apenas dentro de uma parte específica da imagem. Considere ignorar os bumpers da sua equipe, alvos distantes, etc.
  • Recurso de cantos agora compatível com agrupamento inteligente de alvos

    • Este é para as equipes que querem fazer visão personalizada mais avançada no RIO
    • Limite de cantos "tcornxy" aumentado para 64 cantos
    • Recursos de simplificação de contorno e forçar convexo agora funcionam corretamente com agrupamento inteligente de alvos e envio de cantos
  • Máximo do Filtro IQR aumentado para 3.0

  • Taxa de atualização de alvo ao vivo da interface web reduzida de 30fps para 15fps para reduzir largura de banda e carga de CPU enquanto a interface web está aberta


2022.1 (25/01/22)

Correções de Bugs

  • Adquirimos informações de um de nossos fornecedores sobre um problema (e uma correção!) que afeta aproximadamente 1/75 das CPUs especificamente usadas no Limelight 2 (pode estar relacionado a um lote específico). Faz sentido, e era uma das únicas diferenças de inicialização restantes entre a imagem 2022 e a imagem 2020.
  • Corrigidos os botões de upload para entradas GRIP e Modelos SolvePNP

Funcionalidades

  • Arco-íris de Matiz

    • O novo arco-íris de matiz facilita a configuração do limite de matiz.
  • Inversão de Matiz

    • A nova funcionalidade de inversão de matiz é uma funcionalidade crítica se você deseja rastrear objetos vermelhos, já que o vermelho está tanto no início quanto no final do intervalo de matiz:
  • Novas Bibliotecas Python

    • Adicionados scipy, scikit-image, pywavelets, pillow e pyserial ao nosso sandbox python.

2022.0 e 2022.0.3 (15/01/22)

Esta é uma grande atualização. Aqui estão as quatro principais mudanças:

Funcionalidades

  • Agrupamento Inteligente de Alvos

    • Agrupa automaticamente alvos que passam em todos os filtros de alvos individuais.
    • Agrupa dinamicamente qualquer número de alvos entre -mínimo do slider de tamanho do grupo- e -máximo do slider de tamanho do grupo-
  • Rejeição de Outliers

    • Embora este objetivo seja mais desafiador do que outros objetivos, ele nos dá mais oportunidades para filtragem. Conceitualmente, este objetivo é mais do que uma "mancha verde." Como sabemos que o objetivo é composto por múltiplos alvos que estão próximos uns dos outros, podemos realmente rejeitar alvos outliers que estão isolados.
    • Você deve confiar quase inteiramente em uma boa filtragem de alvos para o objetivo deste ano, e usar a rejeição de outliers apenas se você ver ou esperar outliers espúrios no seu stream de câmera. Se você tiver uma filtragem de alvos padrão ruim, a detecção de outliers pode começar a trabalhar contra você!
  • Melhorias na Imagem Limelight 2022 Removemos centenas de partes móveis do nosso software. Estes são os resultados:

    • Tamanho da Imagem Comprimida: 1.3 GB em 2020 → 76MB para 2022 (Reduzido por um fator de 17!)
    • Tempo de download: dezenas de minutos em 2020 → segundos para 2022
    • Tempo de gravação: 5+ minutos em 2020 → segundos para 2022
    • Tempo de inicialização: 35+ segundos em 2020 → 14 segundos para 2022 (10 segundos até os LEDs acenderem)
  • Scripting Python Completo

    • O Limelight expôs com sucesso um grande número de estudantes a algumas das capacidades da visão computacional em robótica. Com scripting python, as equipes agora podem dar mais um passo adiante escrevendo seus próprios pipelines de processamento de imagem.
  • Esta atualização é compatível com todo o Hardware Limelight, incluindo o Limelight 1.

  • Problemas conhecidos: Usar zoom de hardware com python produzirá resultados inesperados.

  • 2022.0.3 restaura o stream GRIP 5802 e resolve problemas de inicialização em algumas unidades LL2 revertendo algumas das otimizações de tempo de inicialização. O tempo de inicialização é aumentado para 16 segundos.