v5.1.0#

A v5.1.0 é uma versão de funcionalidades. O painel sob o buffer de fotograma cresce de um histograma para um conjunto de vistas em direto – Info da Placa, Memória, Estatísticas e a nova vista Canais, que transforma os valores que um script publica em widgets, gráficos, espetros e mapas de profundidade e grava-os em ficheiros – o buffer de fotograma ganha um seletor de origem para câmaras com vários sensores, o 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 a todas as alterações 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#

  • Vistas do painel – a barra de título do painel do histograma ganha um seletor que alterna o painel entre as vistas Histograma, Info da Placa (o hardware, versões e capacidades da câmara ligada), Memória (gráficos em direto do heap do MicroPython e de cada pool UMA, com registo de picos), Estatísticas (os contadores de pacotes, erros e eventos por canal do protocolo de depuração) e Canais.

  • Vista Canais – um script pode publicar canais nomeados de dados e controlos através do protocolo de depuração, e o IDE apresenta-os em direto: etiquetas, interruptores, deslizadores, caixas de incremento, botões de opção, campos de texto, seletores, botões e blocos de texto que escrevem de volta para a câmara; gráficos de forma de onda com deslocamento, zoom, marcadores, disparos, histórico e um analisador de espetro; e mapas de profundidade com as paletas da própria câmara, três filtros de escala e mapeamento de tons. Qualquer gráfico ou mapa pode ser gravado em ficheiros CSV, WAV, NumPy ou Edge Impulse JSON e CBOR – incluindo um Record All para um canal inteiro – para recolha de dados de treino. Os últimos valores permanecem no ecrã quando um script para.

  • Seletor de origem do buffer de fotograma – as câmaras com mais de um sensor de imagem mostram um seletor na barra de título do buffer de fotograma para escolher qual o sensor que transmite para o IDE (ou para desligar a transmissão), o botão JPG passou a ser um seletor de modo de transmissão JPG / RAW, e o título do painel indica o formato em que cada fotograma chegou.

  • Repositórios de terceiros – um fornecedor pode publicar um repositório de placas, firmware (canais de lançamento e de desenvolvimento), exemplos, modelos de machine learning e stubs .pyi; o IDE instala-o a partir de um URL ou de uma pasta deixada por um instalador, funde-o com o seu próprio conteúdo, mantém-no atualizado e permite ordenar os fornecedores por prioridade. Gerido a partir de Preferências → OpenMV → Repositórios de Terceiros.

  • Novo hardware – a placa OpenMV N6 Classic (incluindo o controlador do seu bootloader, a regra udev e a entrada de recuperação ROM-DFU) e os sensores FLIR Lepton 3.1R e UW.

  • Gravações H.264 – o gravador do buffer de fotograma e o conversor de vídeo codificam agora em H.264 em vez de MPEG-4 Part 2, com um intervalo de fotogramas-chave fixo para que as gravações possam ser percorridas sem problemas, e com a taxa de fotogramas arredondada a um número inteiro.

  • Correções da auditoria – cada commit desde a v5.0.0 foi revisto duas vezes em busca de regressões, com particular atenção aos caminhos de firmware, bootloader e ROMFS; os defeitos encontrados estão corrigidos nesta versão (consulte correções de erros).

Novas funcionalidades#

  • Vistas Info 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).

  • Vista Canais – o vocabulário completo de controlos (label, toggle, slider, spin box, radio, line edit, select, push button, text), gráficos de forma de onda com um analisador de espetro (janelas Hann, Hamming, Blackman e retangular, média, retenção de pico, frequência logarítmica), disparos por flanco ascendente e descendente, marcadores, histórico e exportação do gráfico; mapas de profundidade com as paletas Depth, Rainbow, Ironbow e Event, escala por vizinho mais próximo / bilinear / bicúbica, mapeamento de tons Script Range / Auto Range / Equalize, um botão de pausa, leitura ao passar o rato, um cabeçalho com o intervalo declarado e o mínimo / máximo / média do fotograma, e Save Image; gravação em CSV, WAV, NumPy e Edge Impulse JSON / CBOR com uma etiqueta Edge Impulse opcional, divisão em partes para capturas longas, e Record All; um intervalo de Channel Polling nas preferências do protocolo (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).

  • Seletor de origem do buffer de fotograma e indicação de formato – escolha o sensor a transmitir em câmaras com vários sensores, ou Desligado; o formato do fotograma recebido é mostrado no título do painel; o botão JPG é agora um seletor JPG Mode / RAW Mode (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).

  • Repositórios de terceiros – repositórios de firmware baseados em ficheiros fundidos com a lista de placas integrada, atualizações pela rede com uma página de Preferências, um canal de firmware de desenvolvimento por fornecedor, prioridade de fornecedores controlada pelo utilizador, exemplos de fornecedores fundidos em Ficheiro → Exemplos, modelos de fornecedores fundidos no Model Zoo, stubs .pyi personalizados fornecidos à conclusão 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 este ser enviado para a câmara, poupando RAM da câmara em scripts com muitos comentários; as linhas são mantidas, pelo que os números de linha dos tracebacks continuam a corresponder ao editor (677546ee033).

  • Marca de erro em linha – quando um script termina com uma exceção, o editor marca a linha responsável a vermelho com o texto do erro ao lado; a marca desaparece quando edita o ficheiro, executa de novo ou desliga (677546ee033).

  • Arrastar e largar no editor de ROMFS – os ficheiros largados a partir do ambiente de trabalho passam pela mesma compilação de scripts e conversão de modelos que Add File, para a pasta onde foram largados (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âmara, com uma paleta de gráficos partilhada, preenchimentos com transparência e linhas de grelha mais discretas (238e099373e, f126e8f34c0, cebbf0c9e2c).

  • As vistas ocultas do painel não fazem trabalho – o histograma salta o seu cálculo e os redesenhos enquanto outra vista está visível ou o painel está recolhido, e atualiza-se quando volta a ser mostrado; os redesenhos 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 forma (1f88f617ec5, 87c8f7d41c7).

  • A conclusão de código mostra nomes privados – o servidor de linguagem incorporado já não filtra os membros com prefixo _, que os módulos da câmara usam (23ab5b38bb3).

  • macOS – as caixas de grupo dos controlos de protocolo nas preferências já não ficam apertadas, as vistas de itens estão protegidas contra falhas de acessibilidade do Cocoa, os utilizadores de Apple Silicon são avisados sobre a definição de segurança «Permitir a ligação de acessórios», e os utilizadores de RT1062 são avisados quando a Monitorização de Entrada não está concedida (as atualizações de firmware precisam dela); ambos os avisos são mostrados após a ligação (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).

  • Atalhos do modo visualizador – foram desativados atalhos perdidos que quebravam o modo visualizador (e o IDE normal), e o modo visualizador já não persiste os seus atalhos limpos nas definições do IDE completo (251b422f642, 0d153671c1d).

  • Os sensores desconhecidos são identificados pelo id de chip na barra de estado, para que possam ser identificados e adicionados à tabela de sensores (df561775b54).

Firmware, placas e ferramentas#

  • Suporte para OpenMV N6 Classic: entrada de placa, controlador DFU para Windows e códigos do instalador, regra udev para Linux (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).

  • Suporte para os sensores FLIR Lepton 3.1R e UW (12c03024f3c).

  • Transferência para o bootloader IMX – um capturador pré-armado reclama o bootloader do RT1062 no instante em que este é enumerado, substituindo o ciclo de lançamento por sondagem que podia perder a janela de um segundo num anfitrião sobrecarregado (3d8b63c6859).

  • Zips de firmware – Load Custom Firmware aceita pacotes só com romfs e pacotes sem ROMFS, e o firmware personalizado ou de desenvolvimento é preparado para placas IMX que já estejam em modo bootloader (b6f16f54c1a, 94d5fd5c30e).

  • Diretórios de preparação privados para firmware de desenvolvimento / personalizado, imagens do editor de ROMFS e ficheiros temporários das ferramentas de vídeo, para que ficheiros obsoletos de outros processos nunca possam ser gravados ou convertidos por engano (939154501af, a288fe712e7, 5c8c717adec).

  • Vídeo H.264 – as gravações e conversões codificam em H.264 com um intervalo de fotogramas-chave fixo; uma taxa de fotogramas gravada próxima de um número inteiro é arredondada a esse valor, para que os leitores indiquem 30 FPS em vez de 29,97 (6ad1968341d, d62c110e155, bab488a54fe).

  • Soma de verificação do zip de recursos – a atualização de recursos do IDE é verificada contra um SHA-256 publicado juntamente com a versão (677546ee033).

  • User-Agent honesto nos pedidos aos servidores da OpenMV (c4279c0213e).

Correções de erros#

Duas passagens de revisão sobre todas as alterações desde a v5.0.0 encontraram e corrigiram o seguinte (ccea3b17d01, 71826200611):

  • Caminhos de firmware e bootloader – um Load Custom Firmware com um zip numa placa já em modo bootloader gravava a build de lançamento em vez disso; o caminho de recuperação Alif recusa agora uma build personalizada em vez de gravar a de lançamento; uma N6 Classic bloqueada era reparada com o bootloader e firmware da N6 normal; uma raiz de recursos de terceiros obsoleta podia encaminhar uma placa integrada bloqueada para ficheiros do fornecedor; o capturador IMX podia prosseguir para a gravação depois de ter falhado, ignorava Cancelar enquanto aguardava o flashloader e deixava a porta série aberta após um cancelamento durante o armar; o bootloader da N6 Classic não tinha regra udev; os códigos de saída aceites pelo instalador de controladores do Windows tinham uma gralha.

  • Editor de ROMFS – Cancelar durante uma leitura do ROMFS reportava «Failed to unpack ROMFS!» e esperava dez segundos por uma câmara ainda no bootloader; Cancelar durante uma escrita terminava silenciosamente com um ROMFS possivelmente parcial; um erro do dfu-util durante uma escrita era reportado como sucesso; Cancelar no diálogo seguinte descartava todas as edições; a Reconexão Automática podia ligar por baixo do editor aberto; Edit ROMFS com a câmara ligada desligava e voltava a ligar desnecessariamente primeiro; os diretórios temporários do conversor não eram libertados. Após uma operação cancelada, é agora pedido ao bootloader que saia do DFU para que a câmara volte por si própria.

  • Repositórios de terceiros – as entradas dos zips são validadas antes da extração (sem travessia de caminhos nem ligações simbólicas), as instalações e reinstalações de partes mantêm a cópia antiga até a nova estar no lugar, uma placa de fornecedor rejeitada já não arrasta consigo a placa integrada com que se sobrepunha, uma máscara de PID em falta não correspondia a nada em tempo de execução, e as linhas do índice base de exemplos / modelos já não capturam ficheiros de fornecedores com o mesmo nome.

  • Buffer de fotograma e sensores – o sensor de eventos GENX320 (id de chip acima de 0x80000000) desativava o buffer de fotograma; uma seleção de sensor guardada não sobrevivia a um reinício; a antiga preferência «desativar buffer de fotograma» não era migrada; o comando de origem do stream depende agora da versão do protocolo; a métrica de focagem congelava enquanto a página do histograma estava oculta; o formato do fotograma permanecia no título após desligar.

  • Fluxo de ligação – os avisos do macOS podiam engolir o «Sim» do pedido de atualização de firmware; o Model Zoo abria sempre recolhido sem restaurar a seleção; o recurso de unidade única para a unidade da câmara era inalcançável quando a câmara tinha sido ligada há mais de dez segundos.

  • Vista Canais e gravador – tamanhos de fotograma hostis podiam exceder as verificações de tamanho; os gravadores Edge Impulse realocavam memória em cada bloco e estão agora limitados a 64 MB por parte; um esquema com separadores nos nomes podia indexar para além da lista de registos; registos duplicados deixavam órfão um gravador em execução; as escritas são descartadas enquanto a vista está congelada; a lista de canais é agora atualizada nos eventos de cancelamento de registo e de reinício suave.

  • Vídeo – uma largura ímpar introduzida pelo utilizador quebrava a codificação H.264 nas builds libx264; as conversões .bin canceladas ou falhadas deixavam fotogramas que a execução seguinte incorporava.

  • Protocolo – a descarga de leitura que corre antes da deteção do protocolo é limitada (issue #336) (77cd13af76f); a associação da unidade da câmara já não perde a corrida para outros volumes (9877480c304).

  • Um aviso -Wdeprecated-copy no wrapper de informação da porta série (abcfaa8af5e).

Localização#

Suporte de plataformas e ferramentas#

  • Base Qt Creator: 14.0.2.

  • Versão do OpenMV IDE atualizada para 5.1.0.

  • Firmware incluído: v5.0.1 (consulte o registo de alterações do firmware).

  • Novas placas e sensores: OpenMV N6 Classic; FLIR Lepton 3.1R e UW.

Alterações incompatíveis#

Nenhuma para projetos existentes. O botão JPG na barra de título do buffer de fotograma é agora um seletor JPG Mode / RAW Mode, e a sua antiga definição «desativar buffer de fotograma» é migrada para a entrada Desligado do novo seletor de origem. Os comentários são removidos dos scripts antes de serem executados; um script que dependa de ler o seu próprio texto fonte em tempo de execução não deve fazê-lo.