v4.8.1

A versão v4.8.1 é baseada no Qt Creator 14.0.2 e tem como foco um novo protocolo de câmera OpenMV V2 de alta confiabilidade, um Code Profiler integrado e um fluxo de salvamento que mantém a câmera montada em vez de ejetá-la. O firmware incluído e o conjunto completo de exemplos foram atualizados para a 4.8.1. Não há quebras na API de scripting, mas o comportamento de salvar sem ejetar e a remoção de algumas flags seriais de inicialização são mudanças de fluxo de trabalho visíveis ao usuário.

Destaques

  • OpenMV Protocol V2 é uma nova pilha de câmera de alta confiabilidade (OMVCamera/OMVTransport/OMVDebug) com CRC32, sequenciamento, ACK/NAK, retransmissão, eventos e fragmentação. É negociado automaticamente no momento da conexão e controla reset, boot, streaming, execução de script e estatísticas.

  • Code Profiler é uma nova janela (Window > Show Code Profiler) que consulta registros de profiling por função da câmera e exibe chamadas, microssegundos (μs) mín./máx./total/médio, ciclos médios, porcentagem e contadores de eventos em uma tabela ordenável.

  • Save in place não ejeta mais a unidade da câmera; a IDE agora grava o main.py e descarrega o volume para o disco, de modo que o dispositivo permanece montado.

  • Detecção multi-sensor reporta todas as câmeras de uma placa, exibidas na barra de status como Sensors: X, Y, com o sensor principal listado primeiro.

  • Dynamic Frame Reading recalcula a melhor resolução de streaming bruto por formato de pixel e reconfigura o stream automaticamente.

  • Firmware e exemplos incluídos foram atualizados para a 4.8.1 em todas as placas, adicionando novos exemplos de câmera de eventos GenX320, ML TensorFlow, OLED Alif e shield LCD/Touch-LCD.

Novos recursos

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

  • Adicionada a janela Code Profiler (Window > Show Code Profiler), que consulta registros de profiling por função e exibe chamadas, microssegundos (μs) mín./máx./total/médio, ciclos médios, porcentagem e contadores de eventos, resolvendo endereços para símbolos por meio de um parser de ELF ELFIO incluído (019d3cd2c, 57cd9e1cc).

  • Adicionado um diálogo Debug Protocol Settings mostrando System Info, Host Stats e Device Stats ao vivo, atualizados a cada segundo, expondo as taxas de polling por canal além de controles de polling combinado vs. dividido (5220a6125, 0da2f79d0).

  • Adicionada a detecção multi-sensor: uma placa com mais de uma câmera reporta todas elas na barra de status como Sensors: X, Y, com o sensor principal primeiro (cebc79ce7).

  • Adicionado o Dynamic Frame Reading (ativado por padrão), que recalcula a melhor resolução de streaming bruto por formato de pixel (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) e reconfigura o stream (75c073bdb, 0da2f79d0).

  • Adicionada a decodificação de framebuffer para os formatos de pixel bruto BINARY (mono de 1 bpp) e ARGB8 (alpha de 32 bits), de modo que esses tipos de imagem agora são renderizados no visualizador (dabb82062).

  • No Windows, o Connect agora verifica dispositivos USB sinalizados com problema pelo sistema operacional e avisa com uma lista dos dispositivos defeituosos que podem bloquear a conexão (1a5beb081, 1b59cd78e).

  • Adicionado um indicador de registro na barra de status: um botão verde Registered ou coral Unregistered para a câmera conectada, clicável para registrar a placa (a8c98a4b9).

  • O visualizador de framebuffer agora pode exibir uma mensagem de texto centralizada enviada pelo script em execução por meio de um novo código de escape FB_MESSAGE em vez de uma imagem (530048201).

  • Adicionadas novas entradas no model-zoo: modelos de estimativa de profundidade ST FastDepth (224/256/320), um modelo de pose de pontos de referência da cabeça da ST, modelos de mão para detecção de palma e pontos de referência da mão, e um modelo de detecção de rosto frontal BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

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

Outras mudanças e melhorias

  • Save in place: salvar um script não ejeta mais a unidade da câmera; a IDE grava o main.py e descarrega o volume para o disco (FlushFileBuffers no Windows, syncfs no Linux, sync_volume_np/F_FULLFSYNC no macOS), de modo que o dispositivo permanece montado (1614c572f, 6928b51ea, 35ed53967).

  • Ações da barra de ferramentas clicadas enquanto a câmera está ocupada (desabilitar framebuffer, compressão JPEG, salvar script, configurar settings) agora são enfileiradas e executadas automaticamente quando o dispositivo fica livre, em vez de exibir um diálogo de erro de ocupado (f4315f0a4).

  • O visualizador de framebuffer agora usa por padrão o ajuste à janela, de modo que a imagem é redimensionada automaticamente ao tamanho da janela na inicialização, e o painel de saída do terminal serial agora é exibido por padrão na inicialização (f3ce4dc75).

  • Arquivos de modelo compilados com a extensão .lite agora são reconhecidos em todos os lugares: filtragem e exibição do navegador do model-zoo, alinhamento do ROMFS do firmware, e os compiladores Vela/STEdge AI agora emitem saída .lite (f3ce4dc75).

  • O diálogo de compilação de modelo do STEdge AI (N6) agora analisa e reporta as porcentagens de uso de NPU RAM e hyperRAM e copia a saída de rede realocada para um arquivo correspondente à extensão do modelo (f3ce4dc75).

  • O navegador do model-zoo agora exibe a coluna de Tamanho do arquivo e estica a coluna de nome para se ajustar, em vez de ocultar o tamanho (f3ce4dc75).

  • O template de novo script foi atualizado para a nova API do módulo csi e usa por padrão o framesize VGA, e o exemplo Hello World incluído foi mudado de framesize QVGA para VGA (f3ce4dc75).

  • O diálogo Convert Video foi reescrito para usar o diálogo de carregamento compartilhado com saída colorida, mensagens de sucesso/falha, um botão de OK-para-fechar e um erro claro quando o FFMPEG não está disponível na plataforma (f56efc7be).

  • O visualizador de framebuffer agora exibe um aviso piscante quando uma imagem JPEG/PNG é grande demais para colocar em buffer e enviar, por meio de um novo código de escape FB_BUFFER_ERROR (fda826126).

  • A entrada no bootloader DFU agora força o bootloader a permanecer residente em firmware com protocolo V2, com detecção de versão que recorre a um reset simples em bootloaders mais antigos (<1.0.2) que poderiam travar quando forçados (975857221).

  • Renomeadas e reorganizadas as pastas de modelos de detecção de objetos da ST (st_yolo_lc_v1 para yolo_lc, tiny_yolo_v2 para yolo_v2, modelos de pessoa yolov8n para arquivos nomeados simplesmente pelo tamanho) e removidas as grandes variantes int8 de tiny_yolo_v2 (34240cc3c).

  • O timing serial agora é ajustado por meio das chaves de override de protocol no settings.json do firmware (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait e as chaves V2 overrideCRC/overrideSEQ/overrideACK) em vez de flags de linha de comando de inicialização (019d8bf1d).

  • Definido o limite de comprimento de linha do language-server do Python em 120 colunas para o flake8 e o pycodestyle, de modo que linhas longas não são mais sinalizadas no padrão de 79 (dabb82062).

  • Reduzido o conjunto de modelos de machine learning incluídos movendo a coleção de modelos da Qualcomm e o google/mobilenet_v1 para models_unused a fim de reduzir o instalador (c44ddba20).

Correções de bugs

  • Os diálogos de progresso de download de firmware e de atualização de recursos foram tornados à prova de falhas usando guardas QPointer, de modo que não usam mais um diálogo já excluído caso ele seja fechado no meio do download (f3ce4dc75).

  • A varredura de unidades agora continua revarrendo até que a unidade USB da câmera seja encontrada e limpa entradas de unidade obsoletas na desconexão, removendo o antigo truque de timer de disparo único (a31d41b4e).

  • Várias correções de conexão e serial: sensores ocultos (por exemplo, SoftCSI) não poluem mais o tipo de sensor exibido, um timer de keep-alive serial do Windows evita travamentos de USB, o Start não reinicia mais um script que já está em execução, e o canal da câmera é desconectado de forma limpa ao fechar a porta (a8e467be6).

  • A visualização do profiler restaurou sua seleção de contadores de eventos PMU por coluna (menus de eventos marcáveis) e o estado salvo de contadores/cabeçalho que haviam sido temporariamente desativados (40c679e90).

Suporte de plataforma e ferramentas

  • Base do 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 de protocolo no macOS para as placas RT1062 e AE3 dividindo a transferência USB multicomando em pedaços do tamanho de USBDBG_LEN que essas placas conseguem lidar (6b9d5f842).

  • Refeito o pacote de drivers do Windows incluído: adicionados arquivos de driver .cat/.inf assinados por placa (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) e movidos os drivers seriais CDC para uma nova pasta openmvcdc com um autoinstalador baseado em dpinst (439557829, ba3b01bfb).

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

Mudanças incompatíveis

Esta versão não tem quebras na API de scripting, mas há algumas mudanças de fluxo de trabalho visíveis ao usuário:

  • Salvar um script não ejeta nem desmonta mais a unidade USB da câmera. A IDE agora descarrega os buffers do volume no lugar, de modo que o dispositivo permanece montado após um salvamento.

  • As flags seriais de inicialização -override_read_timeout (padrão 5000 ms), -override_read_stall_timeout (padrão 1000 ms) e -override_per_command_wait (padrão 1 ms, 2 ms no macOS) foram removidas; o timing serial agora é configurado por meio das chaves de override de protocol no settings.json do firmware (019d8bf1d).

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