v4.8.1

A versão v4.8.1 é compilada sobre o Qt Creator 14.0.2 e centra-se num novo protocolo de câmara OpenMV V2 de alta fiabilidade, num Analisador de Código integrado e num fluxo de gravação que mantém a câmara montada em vez de a ejetar. O firmware incluído e o conjunto completo de exemplos foram atualizados para a versão 4.8.1. Não existem quebras na API de scripting, mas o comportamento de guardar sem ejetar e a remoção de alguns sinalizadores de série no arranque são alterações visíveis ao fluxo de trabalho.

Destaques

  • O OpenMV Protocol V2 é uma nova pilha de câmara de alta fiabilidade (OMVCamera/OMVTransport/OMVDebug) com CRC32, sequenciamento, ACK/NAK, retransmissão, eventos e fragmentação. É negociado automaticamente no momento da ligação e controla o reset, o arranque, a transmissão em fluxo, a execução de scripts e as estatísticas.

  • O Analisador de Código é uma nova janela (Window > Show Code Profiler) que obtém por sondagem os registos de análise por função a partir da câmara e apresenta chamadas, microssegundos mínimos/máximos/totais/médios (μs), ciclos médios, percentagem e contadores de eventos numa tabela ordenável.

  • A funcionalidade Guardar no lugar já não ejeta o disco da câmara; o IDE escreve agora main.py e liberta o volume para o disco, de modo a que o dispositivo permaneça montado.

  • A deteção de múltiplos sensores reporta todas as câmaras numa placa, apresentadas na barra de estado como Sensors: X, Y com o sensor principal listado primeiro.

  • A Leitura Dinâmica de Fotogramas recalcula a melhor resolução de transmissão em bruto por formato de pixel e reconfigura o fluxo automaticamente.

  • O firmware e os exemplos incluídos foram atualizados para a versão 4.8.1 em todas as placas, adicionando novos exemplos para câmara de eventos GenX320, TensorFlow ML, Alif OLED e shields LCD/Touch-LCD.

Novas funcionalidades

  • Adicionado o protocolo de comunicação OpenMV V2: uma camada de transporte e transação completa com CRC32, sequenciamento, ACK/NAK, retransmissão, eventos e fragmentação, além de uma classe OMVCamera negociada automaticamente na ligação e integrada no controlador de série (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • Adicionada a janela do Analisador de Código (Window > Show Code Profiler), que obtém por sondagem os registos de análise por função e apresenta chamadas, microssegundos mínimos/máximos/totais/médios (μs), ciclos médios, percentagem e contadores de eventos, resolvendo endereços para símbolos através de um analisador ELF ELFIO incluído (019d3cd2c, 57cd9e1cc).

  • Adicionada uma caixa de diálogo Definições do Protocolo de Depuração que apresenta System Info, Host Stats e Device Stats em direto, atualizados a cada segundo, expondo taxas de sondagem por canal e controlos de sondagem combinada vs separada (5220a6125, 0da2f79d0).

  • Adicionada deteção de múltiplos sensores: uma placa com mais de uma câmara reporta todas na barra de estado como Sensors: X, Y, com o sensor principal em primeiro lugar (cebc79ce7).

  • Adicionada a Leitura Dinâmica de Fotogramas (ativa por defeito), que recalcula a melhor resolução de transmissão em bruto por formato de pixel (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) e reconfigura o fluxo (75c073bdb, 0da2f79d0).

  • Adicionada descodificação do buffer de fotograma para os formatos de pixel em bruto BINARY (mono 1-bpp) e ARGB8 (alfa 32 bits), de modo a que esses tipos de imagem sejam agora apresentados no visualizador (dabb82062).

  • No Windows, o Connect examina agora os dispositivos USB sinalizados com um problema pelo sistema operativo e emite um aviso com a lista dos dispositivos problemáticos que podem bloquear a ligação (1a5beb081, 1b59cd78e).

  • Adicionado um indicador de registo na barra de estado: um botão verde Registered ou coral Unregistered para a câmara ligada, clicável para registar a placa (a8c98a4b9).

  • O visualizador do buffer de fotograma pode agora apresentar uma mensagem de texto centrada enviada pelo script em execução através de um novo código de escape FB_MESSAGE, em vez de uma imagem (530048201).

  • Adicionadas novas entradas ao model-zoo: modelos de estimativa de profundidade ST FastDepth (224/256/320), um modelo de pose para landmarks da cabeça da ST, modelos de deteção de palma e landmarks da mão, e um modelo de deteção de face frontal BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • Adicionado um script de autoteste exclusivo para builds de fábrica (câmara, IMU, ToF, WiFi, LAN) que é incluído e aberto automaticamente no arranque na variante IDE de fábrica (0db7fbbb0); a parte do teste LAN do RT1060 está atualmente desativada (48370d022).

Outras alterações e melhorias

  • Guardar no lugar: guardar um script já não ejeta o disco da câmara; o IDE escreve main.py e liberta os buffers do volume para o disco (FlushFileBuffers no Windows, syncfs no Linux, sync_volume_np/F_FULLFSYNC no macOS) de modo a que o dispositivo permaneça montado (1614c572f, 6928b51ea, 35ed53967).

  • As ações da barra de ferramentas acionadas enquanto a câmara está ocupada (desativar buffer de fotograma, comprimir JPEG, guardar script, configurar definições) são agora colocadas em fila e executadas automaticamente quando o dispositivo fica livre, em vez de apresentar uma caixa de diálogo de erro de Ocupado (f4315f0a4).

  • O visualizador do buffer de fotograma passa agora a ajustar por defeito a imagem à vista, de modo a que a imagem seja dimensionada automaticamente à janela no arranque, e o painel de saída do terminal de série é agora apresentado por defeito no arranque (f3ce4dc75).

  • Os ficheiros de modelo compilados com a extensão .lite são agora reconhecidos em todo o lado: filtragem e apresentação no browser do model-zoo, alinhamento ROMFS do firmware, e os compiladores Vela/STEdge AI emitem agora saída com extensão .lite (f3ce4dc75).

  • A caixa de diálogo de compilação de modelos STEdge AI (N6) analisa e reporta agora as percentagens de utilização de RAM NPU e hyperRAM, e copia a saída de rede relocalizada para um ficheiro com a extensão correspondente ao modelo (f3ce4dc75).

  • O browser do model-zoo apresenta agora a coluna Tamanho do ficheiro e estica a coluna de nome para ajustar, em vez de ocultar o tamanho (f3ce4dc75).

  • O modelo de novo script foi atualizado para a nova API do módulo csi e tem por defeito o tamanho de fotograma VGA, e o exemplo Hello World incluído foi alterado de QVGA para VGA (f3ce4dc75).

  • A caixa de diálogo Converter Vídeo foi reescrita para utilizar a caixa de diálogo de carregamento partilhada com saída colorida, mensagens de sucesso/falha, um botão OK-para-fechar e um erro claro quando o FFMPEG não está disponível na plataforma (f56efc7be).

  • O visualizador do buffer de fotograma apresenta agora um aviso intermitente quando uma imagem JPEG/PNG é demasiado grande para ser colocada no buffer e enviada, através de um novo código de escape FB_BUFFER_ERROR (fda826126).

  • A entrada no modo DFU bootloader força agora o bootloader a permanecer residente no firmware do protocolo V2, com deteção de versão que reverte para um reset simples em bootloaders mais antigos (<1.0.2) que podiam ficar bloqueados quando forçados (975857221).

  • Renomeadas e reorganizadas as pastas de modelos de deteção de objetos ST (st_yolo_lc_v1 para yolo_lc, tiny_yolo_v2 para yolo_v2, modelos yolov8n de pessoa para ficheiros simples com nome de tamanho) e removidas as variantes int8 de grande dimensão do tiny_yolo_v2 (34240cc3c).

  • A temporização de série é agora ajustada através das chaves de substituição protocol do ficheiro settings.json do firmware (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait, e as chaves V2 overrideCRC/overrideSEQ/overrideACK) em vez de sinalizadores de linha de comandos no arranque (019d8bf1d).

  • O limite de comprimento de linha do servidor de linguagem Python foi definido para 120 colunas para o flake8 e pycodestyle, de modo a que as linhas longas deixem de ser sinalizadas com o valor predefinido de 79 (dabb82062).

  • Reduzido o conjunto de modelos de aprendizagem automática incluído, movendo a coleção de modelos Qualcomm e google/mobilenet_v1 para models_unused de forma a diminuir o tamanho do instalador (c44ddba20).

Correções de erros

  • As caixas de diálogo de progresso de transferência de firmware e atualização de recursos foram tornadas seguras contra falhas através de proteções QPointer, deixando assim de utilizar uma caixa de diálogo eliminada caso esta feche durante a transferência (f3ce4dc75).

  • A análise de unidades continua agora a reanalisar até que o disco USB da câmara seja encontrado, e limpa as entradas de disco desatualizadas ao desligar, eliminando o hack anterior com temporizador de disparo único (a31d41b4e).

  • Várias correções de ligação e de série: os sensores ocultos (por exemplo, SoftCSI) deixam de poluir o tipo de sensor apresentado, um temporizador de manutenção de série no Windows evita bloqueios USB, Start já não reinicia um script já em execução, e o canal da câmara é desligado de forma limpa ao fechar a porta (a8e467be6).

  • A vista do analisador restaurou a seleção de contadores de eventos PMU por coluna (menus de eventos verificáveis) e o estado guardado de contadores/cabeçalho que tinha sido temporariamente desativado (40c679e90).

Suporte de plataforma e ferramentas

  • Base Qt Creator: 14.0.2.

  • Firmware incluído: atualizado de 4.7.0 para 4.8.1, recompilando o firmware para OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 e as placas Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • Corrigido o handshake de versão do protocolo no macOS para as placas RT1062 e AE3, dividindo a transferência USB com múltiplos comandos em partes de tamanho USBDBG_LEN que essas placas conseguem processar (6b9d5f842).

  • Remodelado o pacote de controladores Windows incluído: adicionados ficheiros de controlador .cat/.inf assinados por placa (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) e movidos os controladores de série CDC para uma nova pasta openmvcdc com um instalador automático baseado em dpinst (439557829, ba3b01bfb).

  • Adicionado suporte para revisões mais antigas do sensor de câmara MT9V032, registando os IDs de sensor 0x1311 e 0x1312 (juntamente com o existente 0x1313) como MT9V0X2 (eaaa624e3).

Alterações de rutura

Esta versão não apresenta quebras na API de scripting, mas existem algumas alterações visíveis ao fluxo de trabalho:

  • Guardar um script já não ejeta nem desmonta o disco USB da câmara. O IDE liberta agora os buffers do volume no lugar, de modo a que o dispositivo permaneça montado após guardar.

  • Os sinalizadores de série no arranque -override_read_timeout (predefinição 5000 ms), -override_read_stall_timeout (predefinição 1000 ms) e -override_per_command_wait (predefinição 1 ms, 2 ms no macOS) foram removidos; a temporização de série é agora configurada através das chaves de substituição protocol no ficheiro settings.json do firmware (019d8bf1d).

  • Os bootloaders incluídos são agora distribuídos apenas como .bin; os ficheiros de firmware e bootloader .dfu por placa foram removidos.