v5.1.0#
A v5.1.0 é uma versão de recursos. O painel sob o frame buffer cresce de um histograma para um conjunto de visualizações ao vivo – Informações da placa, Memória, Estatísticas e a nova visualização Canais, que transforma os valores que um script publica em widgets, gráficos, espectros e mapas de profundidade e os grava em arquivos – o frame buffer ganha um seletor de fonte para câmeras com vários sensores, a IDE aprende a carregar repositórios de terceiros de placas, firmware, exemplos, modelos e stubs, e as gravações de vídeo passam para H.264. Novas placas e sensores são suportados, as ferramentas de firmware foram reforçadas por uma auditoria completa de cada alteração desde a v5.0.0, e um punhado de comportamentos foi trazido do OpenMV Studio. É construída sobre o Qt Creator 14.0.2 e inclui o firmware v5.0.1.
Destaques#
Visualizações do painel – a barra de título do painel do histograma ganha um seletor que alterna o painel entre as visualizações Histograma, Informações da placa (hardware, versões e capacidades da câmera conectada), Memória (gráficos ao vivo do heap do MicroPython e de cada pool UMA, com registro de pico), Estatísticas (contadores de pacotes, erros e eventos por canal do protocolo de depuração) e Canais.
Visualização Canais – um script pode publicar canais nomeados de dados e controles pelo protocolo de depuração, e a IDE os renderiza ao vivo: rótulos, chaves, controles deslizantes, caixas de incremento, botões de opção, campos de texto, seletores, botões e blocos de texto que escrevem de volta na câmera; gráficos de forma de onda com panorâmica, zoom, marcadores, gatilhos, histórico e um analisador de espectro; e mapas de profundidade com as próprias paletas da câmera, três filtros de escala e mapeamento de tons. Qualquer gráfico ou mapa grava em arquivos CSV, WAV, NumPy ou JSON e CBOR do Edge Impulse – incluindo um Gravar tudo para um canal inteiro – para coleta de dados de treinamento. Os últimos valores permanecem na tela quando um script para.
Seletor de fonte do frame buffer – câmeras com mais de um sensor de imagem mostram um seletor na barra de título do frame buffer para escolher qual sensor transmite para a IDE (ou para desligar a transmissão), a opção JPG virou um seletor de modo de transmissão JPG / RAW, e o título do painel nomeia o formato em que cada quadro chegou.
Repositórios de terceiros – um fornecedor pode publicar um repositório de placas, firmware (canais de release e de desenvolvimento), exemplos, modelos de aprendizado de máquina e stubs
.pyi; a IDE o instala a partir de uma URL ou de uma pasta deixada por um instalador, o mescla com seu próprio conteúdo, o mantém atualizado e permite ordenar os fornecedores por prioridade. Gerenciado em Preferences → OpenMV → Third Party Repositories.Novo hardware – a placa OpenMV N6 Classic (incluindo seu driver de bootloader, regra udev e entrada de recuperação ROM-DFU) e os sensores FLIR Lepton 3.1R e UW.
Gravações em H.264 – o gravador do frame buffer e o conversor de vídeo agora codificam em H.264 em vez de MPEG-4 Part 2, com um intervalo de quadros-chave fixo para que as gravações busquem posições corretamente e com a taxa de quadros arredondada para um número inteiro.
Correções da auditoria – todos os commits desde a v5.0.0 foram revisados duas vezes em busca de regressões, com atenção especial aos caminhos de firmware, bootloader e ROMFS; os defeitos encontrados estão corrigidos nesta versão (consulte correções de bugs).
Novos recursos#
Visualizações Informações da placa, Memória e Estatísticas no painel do histograma, com estilo de largura total nos temas escuro e claro e texto selecionável (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).
Visualização Canais – o vocabulário completo de controles (label, toggle, slider, spin box, radio, line edit, select, push button, text), gráficos de forma de onda com um analisador de espectro (janelas Hann, Hamming, Blackman e retangular, média, retenção de pico, frequência logarítmica), gatilhos de borda de subida e de descida, marcadores, histórico e exportação do gráfico; mapas de profundidade com as paletas Profundidade, Arco-íris, Ironbow e Event, escala por vizinho mais próximo / bilinear / bicúbica, mapeamento de tons Faixa do script / Faixa automática / Equalizar, um botão de pausa, leitura ao passar o cursor, um cabeçalho com a faixa declarada e o mínimo / máximo / média do quadro, e Salvar imagem; gravação em CSV, WAV, NumPy e JSON / CBOR do Edge Impulse com um rótulo opcional do Edge Impulse, divisão em partes para capturas longas e Gravar tudo; um intervalo de Channel Polling nas preferências do protocolo (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).
Seletor de fonte do frame buffer e leitura de formato – escolha o sensor que transmite em câmeras com vários sensores, ou Desligado; o formato do quadro recebido é mostrado no título do painel; a opção JPG agora é um seletor Modo JPG / Modo RAW (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).
Repositórios de terceiros – repositórios de firmware baseados em arquivos mesclados com a lista de placas integrada, atualizações pela rede com uma página de Preferences, um canal de firmware de desenvolvimento por fornecedor, prioridade de fornecedores controlada pelo usuário, exemplos do fornecedor mesclados em File → Examples, modelos do fornecedor mesclados no Model Zoo, stubs
.pyipersonalizados alimentando o preenchimento de código, avisos de substituição quando um fornecedor sobrepõe conteúdo integrado, e uma verificação de licença para placas de fornecedores (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).Remoção de comentários antes de executar – os comentários são removidos do script antes de ele ser enviado à câmera, economizando RAM da câmera em scripts cheios de comentários; as linhas são mantidas, de modo que os números de linha do traceback continuam correspondendo ao editor (677546ee033).
Marca de erro inline – quando um script morre com uma exceção, o editor marca a linha culpada em vermelho com o texto do erro ao lado; a marca some quando você edita o arquivo, executa de novo ou desconecta (677546ee033).
Arrastar e soltar no editor de ROMFS – arquivos soltos a partir da área de trabalho passam pela mesma compilação de scripts e conversão de modelos que Add File, na pasta sobre a qual foram soltos (677546ee033).
Melhorias no editor, no terminal e na interface#
Os histogramas são calculados a partir de RGB completo de 8 bits em vez das tabelas RGB565 da câmera, com uma paleta de gráfico compartilhada, preenchimentos com mistura alfa e linhas de grade mais discretas (238e099373e, f126e8f34c0, cebbf0c9e2c).
Visualizações ocultas do painel não fazem trabalho – o histograma pula seu cálculo e seus replots enquanto outra visualização está sendo exibida ou o painel está recolhido, e se atualiza quando é mostrado de novo; replots de tamanho zero são silenciados (c8730df8399).
Os scripts de exemplo abrem com uma linha em branco após as importações, e os exemplos incluídos foram reformatados da mesma maneira (1f88f617ec5, 87c8f7d41c7).
O preenchimento de código mostra nomes privados – o servidor de linguagem embutido não filtra mais os membros com prefixo
_, que os módulos da câmera usam (23ab5b38bb3).macOS – as caixas de grupo de controles de protocolo nas preferências não ficam mais apertadas, as visualizações de itens estão protegidas contra travamentos de acessibilidade do Cocoa, usuários de Apple Silicon são avisados sobre a configuração de segurança “Allow accessories to connect”, e usuários de RT1062 são avisados quando Input Monitoring não está concedido (as atualizações de firmware precisam dele); ambos os avisos são mostrados após a conexão (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).
Atalhos do modo visualizador – atalhos perdidos que quebravam o modo visualizador (e a IDE normal) foram desativados, e o modo visualizador não persiste mais seus atalhos limpos nas configurações da IDE completa (251b422f642, 0d153671c1d).
Sensores desconhecidos são nomeados pelo id do chip na barra de status para que possam ser identificados e adicionados à tabela de sensores (df561775b54).
Firmware, placas e ferramentas#
Suporte ao OpenMV N6 Classic: entrada da placa, driver DFU do Windows e códigos do instalador, regra udev do Linux (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).
Suporte aos sensores FLIR Lepton 3.1R e UW (12c03024f3c).
Transferência para o bootloader IMX – um capturador pré-armado reivindica o bootloader do RT1062 no instante em que ele enumera, substituindo o laço de um processo por sondagem que podia perder a janela de um segundo em um host sobrecarregado (3d8b63c6859).
Zips de firmware – Load Custom Firmware aceita pacotes só com romfs e pacotes sem ROMFS, e firmware personalizado ou de desenvolvimento é preparado para placas IMX que já estão em modo bootloader (b6f16f54c1a, 94d5fd5c30e).
Diretórios de preparação privados para firmware de desenvolvimento / personalizado, imagens do editor de ROMFS e arquivos temporários das ferramentas de vídeo, de modo que arquivos obsoletos de outros processos nunca possam ser gravados ou convertidos por engano (939154501af, a288fe712e7, 5c8c717adec).
Vídeo H.264 – gravações e conversões codificam em H.264 com um intervalo de quadros-chave fixo; uma taxa de quadros gravada próxima de um número inteiro é arredondada para ele, de modo que os reprodutores relatam 30 FPS em vez de 29,97 (6ad1968341d, d62c110e155, bab488a54fe).
Checksum do zip de recursos – a atualização de recursos da IDE é verificada contra um SHA-256 publicado junto com a versão (677546ee033).
User-Agent honesto nas requisições aos servidores da OpenMV (c4279c0213e).
Correções de bugs#
Duas passagens de revisão sobre cada alteração desde a v5.0.0 encontraram e corrigiram o seguinte (ccea3b17d01, 71826200611):
Caminhos de firmware e bootloader – um Load Custom Firmware com zip em uma placa já em modo bootloader gravava a compilação de release em vez disso; o caminho de recuperação Alif agora recusa uma compilação personalizada em vez de gravar a de release; um N6 Classic inutilizado era reparado com o bootloader e o firmware do N6 comum; uma raiz de recursos de terceiros obsoleta podia direcionar uma placa integrada inutilizada para arquivos do fornecedor; o capturador IMX podia prosseguir para a gravação depois de travar, ignorava Cancelar enquanto aguardava o flashloader e deixava a porta serial aberta após um cancelamento durante o armamento; o bootloader do N6 Classic não tinha regra udev; os códigos de saída aceitos pelo instalador de driver do Windows tinham um erro de digitação.
Editor de ROMFS – Cancelar durante uma leitura do ROMFS relatava “Failed to unpack ROMFS!” e esperava dez segundos por uma câmera ainda no bootloader; Cancelar durante uma gravação terminava silenciosamente com um ROMFS possivelmente parcial; um erro do dfu-util durante uma gravação era relatado como sucesso; Cancelar na caixa de diálogo seguinte descartava todas as edições; Auto Reconnect podia conectar por baixo do editor aberto; Edit ROMFS enquanto conectado desconectava e reconectava primeiro sem necessidade; diretórios temporários do conversor vazavam. Após uma operação cancelada, agora o bootloader é instruído a sair do DFU para que a câmera volte sozinha.
Repositórios de terceiros – as entradas do zip são validadas antes da extração (sem travessia de caminho nem links simbólicos), instalações e reinstalações de partes mantêm a cópia antiga até a nova estar no lugar, uma placa de fornecedor rejeitada não derruba mais junto a placa integrada com a qual se sobrepunha, uma máscara de PID ausente não correspondia a nada em tempo de execução, e as linhas de índice de exemplos / modelos base não capturam mais arquivos de fornecedor com o mesmo nome.
Frame buffer e sensores – o sensor de eventos GENX320 (id de chip acima de
0x80000000) desabilitava o frame buffer; uma seleção de sensor salva não sobrevivia a uma reinicialização; a antiga preferência “disable frame buffer” não era migrada; o comando de fonte do stream é condicionado à versão do protocolo; a métrica de foco congelava enquanto a página do histograma estava oculta; o formato do quadro permanecia no título após desconectar.Fluxo de conexão – os avisos do macOS podiam engolir o “Yes” do prompt de atualização de firmware; o Model Zoo sempre abria recolhido, sem restaurar a seleção; o fallback de unidade única para a unidade da câmera era inalcançável quando a câmera estava conectada havia mais de dez segundos.
Visualização Canais e gravador – tamanhos de quadro hostis podiam estourar as verificações de tamanho; os gravadores Edge Impulse realocavam a cada bloco e agora têm um limite de 64 MB por parte; um esquema com separadores nos nomes podia indexar além da lista de registros; registros duplicados deixavam órfão um gravador em execução; as escritas são descartadas enquanto a visualização está congelada; a lista de canais agora é atualizada em eventos de cancelamento de registro e de soft-reboot.
Vídeo – uma largura ímpar digitada pelo usuário quebrava a codificação H.264 nas compilações com libx264; conversões
.bincanceladas ou com falha deixavam quadros que a execução seguinte incorporava.Protocolo – a descarga de leitura que roda antes da detecção do protocolo é limitada (issue #336) (77cd13af76f); a associação câmera-unidade não perde mais a corrida para outros volumes (9877480c304).
Um aviso
-Wdeprecated-copyno wrapper de informações da porta serial (abcfaa8af5e).
Localização#
Todos os 37 catálogos foram atualizados para as visualizações do painel, a visualização Canais e seu mapa de profundidade, e cada nova string desta versão (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).
Suporte de plataforma e ferramentas#
Base do Qt Creator: 14.0.2.
Versão do OpenMV IDE elevada para 5.1.0.
Firmware incluído: v5.0.1 (consulte o changelog do firmware).
Novas placas e sensores: OpenMV N6 Classic; FLIR Lepton 3.1R e UW.
Alterações incompatíveis#
Nenhuma para projetos existentes. A opção JPG na barra de título do frame buffer agora é um seletor Modo JPG / Modo RAW, e sua antiga configuração “disable frame buffer” é migrada para a entrada Desligado do novo seletor de fonte. Os comentários são removidos dos scripts antes de eles rodarem; um script que dependa de ler seu próprio texto-fonte em tempo de execução não deveria fazê-lo.