v4.5.9

v4.5.9 traz transmissão de pré-visualização em bruto para placas sem codificador JPEG por hardware, recorte de sensor por hardware para libertar mais RAM, descompressão de Bayer mais rápida com aceleração Helium, e um conjunto de correções de câmara/depuração USB. Também altera a API de resultados AprilTag e o conjunto de famílias AprilTag por omissão, por isso leia as alterações incompatíveis abaixo.

Destaques

  • Transmissão de pré-visualização em bruto — as placas sem codificador JPEG por hardware podem agora enviar fotogramas brutos reduzidos para o IDE/host em vez de falhar a pré-visualização.

  • Recorte de sensor por hardware — definir um tamanho de fotograma menor reduz agora a memória por buffer e liberta RAM para fb_alloc().

  • Descompressão de Bayer mais rápida — a conversão Bayer→RGB/escala de cinzentos é agora acelerada por SIMD Helium nas placas Cortex-M55.

  • Incompatível: o objeto de resultado AprilTag mudou para acesso por atributo e o conjunto de famílias AprilTag por omissão foi reduzido (consulte as alterações AprilTag e a alteração da família AprilTag).

Novas funcionalidades

  • Transmissão de pré-visualização em bruto — as placas sem codificador JPEG por hardware podem contornar o JPEG e transmitir fotogramas brutos reduzidos (limitados a ~60 KB) para o IDE/host, permitindo a pré-visualização ao vivo nessas placas.

Outras alterações e melhorias

  • Recorte por hardware está agora ativado em todas as placas STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Quando é definido um tamanho ou janela de fotograma, a memória por buffer é reduzida para o tamanho recortado, libertando mais RAM para fb_alloc().

  • Descompressão de Bayer mais rápida — a conversão Bayer→RGB565/escala de cinzentos é agora acelerada por ARM Helium/MVE SIMD nas placas Cortex-M55 (p. ex. RT1060), com um caminho JPEG partilhado por SIMD.

  • Depuração IDE mais rápida — o depurador transfere agora dados diretamente da pilha USB quando possível, evitando uma cópia extra.

  • Submódulo MicroPython atualizado — as placas podem redimensionar o buffer CDC do TinyUSB, além de correções no GC e nas regras de compilação.

Correções de erros

Câmara e sensores:

  • Corrigido o padrão Bayer/CFA do OV7725 (GBRG → BGGR), corrigindo a saída de cor descomprimida nas câmaras OV7725; o OV7725 reporta agora o formato de pixel Bayer, e os sensores apenas Bayer reportam agora uma profundidade de fonte de 1 byte por pixel.

  • Corrigido o cálculo do tamanho do framebuffer bruto/Bayer.

Aprendizagem automática:

  • O TensorFlow Lite Micro usa agora a memória livre do heap GC ao dimensionar a arena de tensores temporária, evitando falhas de alocação ao carregar modelos em placas com memória de buffer de fotograma limitada.

Host / IDE:

  • Corrigido o tratamento do buffer CDC de depuração USB em placas TinyUSB para um débito série/depuração mais fiável.

  • tools/pyopenmv: corrigida a ordem de bytes RGB565, adicionado um argumento scale e a ferramenta de buffer de fotograma reporta agora o tamanho/formato da imagem.

Hardware e suporte a placas

  • OV7725 reporta agora o formato de pixel Bayer (tratamento correto de raw/CFA).

  • Recorte por hardware ativado em toda a gama de placas STM32/NXP.

Alterações incompatíveis da API

Alterações da API visíveis para o utilizador entre v4.5.8 e v4.5.9. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração está etiquetada com o seu impacto:

  • minor — API restrita; só afeta scripts que a usavam.

  • behavior — mesma API, resultados diferentes; reverifique scripts ajustados.

As alterações estão agrupadas por impacto nessa ordem. Se quiser apenas portar o seu código, salte para a lista de verificação de migração no final. Cada hash de commit liga ao seu diff no GitHub.

Objetos de resultado AprilTag e set_buffers (minor)

Os resultados AprilTag de find_apriltags() expõem agora os seus dados como atributos em vez de métodos — use tag.cx, tag.cy, tag.rotation, tag.family, tag.corners em vez de tag.cx(), tag.family(), etc. Foram adicionados novos acessores name (string do nome da família) e cxf / cyf com precisão de vírgula flutuante.

Separadamente, a configuração automática do buffer de vídeo foi alterada: set_buffers substitui auto_adjust — passe -1 para usar até três buffers do tamanho do fotograma (ou o máximo que couber) e 1 para usar todo o buffer de fotograma. O dimensionamento do buffer é agora consciente dos bits por pixel, pelo que podem ser alocados mais buffers para formatos de 1 bpp.

Commits: c0d4759f8, 7b36e4ef6

ble_advertising e RPC sobre rede removidos (minor)

A biblioteca auxiliar ble_advertising e o exemplo ble_temperature.py foram removidos — use aioble em vez disso (é fornecido um exemplo de temperatura com aioble). As classes master/slave de RPC sobre rede foram removidas de rpc.py.

Commits: 6513276c1, 44a7e579d

Famílias AprilTag desativadas por omissão (behavior)

As famílias AprilTag são agora individualmente selecionáveis em tempo de compilação, e as não utilizadas estão desativadas por omissão. Nas placas padrão, find_apriltags() deteta agora apenas a família TAG36H11, a menos que o firmware seja recompilado com outras famílias ativadas. Os scripts que dependem de outras famílias (TAG16H5, TAG25H9, …) numa compilação padrão deixarão silenciosamente de as detetar.

Commit: effe12f2c

Lista de verificação de migração

Para uma migração limpa para v4.5.9, o trabalho típico é:

  1. Altere o acesso aos resultados AprilTag de chamadas de método para atributos (tag.cx()tag.cx), e troque auto_adjust por set_buffers (as alterações AprilTag / buffer).

  2. Substitua ble_advertising por aioble e elimine qualquer uso de master/slave de RPC sobre rede (as remoções).

  3. Se usar famílias AprilTag diferentes de TAG36H11 numa compilação padrão, note que estas já não são detetadas por omissão (a alteração da família AprilTag).