v4.5.9¶
v4.5.9는 하드웨어 JPEG 인코더가 없는 보드를 위한 원시 프리뷰 스트리밍, 더 많은 RAM을 확보하기 위한 하드웨어 센서 크로핑, 더 빠른 Helium 가속 디베이어링, 그리고 일련의 카메라/USB 디버그 수정을 제공합니다. 또한 AprilTag 결과 API와 기본 AprilTag 패밀리 세트를 변경하므로 아래의 호환성을 깨는 변경 사항을 읽어 보세요.
주요 내용¶
원시 프리뷰 스트리밍 — 하드웨어 JPEG 인코더가 없는 보드가 이제 프리뷰에 실패하는 대신 다운스케일된 원시 프레임을 IDE/호스트로 보낼 수 있습니다.
하드웨어 센서 크로핑 — 더 작은 프레임 크기를 설정하면 이제 버퍼당 메모리가 줄어들고
fb_alloc()을 위한 RAM이 확보됩니다.더 빠른 디베이어링 — Bayer→RGB/grayscale 변환이 이제 Cortex-M55 보드에서 Helium-SIMD로 가속됩니다.
호환성 변경: AprilTag 결과 객체가 속성 접근 방식으로 변경되었고 기본 AprilTag 패밀리 세트가 축소되었습니다 (AprilTag 변경 및 AprilTag 패밀리 변경 참조).
새로운 기능¶
원시 프리뷰 스트리밍 — 하드웨어 JPEG 인코더가 없는 보드가 JPEG를 우회하고 다운스케일된 원시 프레임(약 60 KB로 제한)을 IDE/호스트로 스트리밍할 수 있어, 해당 보드에서 실시간 프리뷰가 동작합니다.
기타 변경 및 개선 사항¶
하드웨어 크로핑 이 이제 모든 STM32/NXP 보드(Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060)에서 활성화됩니다. 프레임 크기나 윈도우가 설정되면 버퍼당 메모리가 크롭된 크기로 줄어들어
fb_alloc()을 위한 더 많은 RAM이 확보됩니다.더 빠른 디베이어링 — Bayer→RGB565/grayscale 변환이 이제 Cortex-M55 보드(예: RT1060)에서 ARM Helium/MVE SIMD로 가속되며, SIMD JPEG 인코더 경로를 공유합니다.
더 빠른 IDE 디버그 — 디버거가 가능한 경우 이제 USB 스택에서 직접 데이터를 전송하여 추가 복사를 피합니다.
MicroPython 서브모듈 업데이트 — 보드가 TinyUSB CDC 버퍼 크기를 조정할 수 있으며, GC 및 빌드 규칙 수정이 포함됩니다.
버그 수정¶
카메라 및 센서:
OV7725 Bayer/CFA 패턴(GBRG → BGGR)을 수정하여 OV7725 카메라의 디베이어링된 색상 출력을 바로잡았습니다. OV7725는 이제 Bayer 픽셀 포맷을 보고하고, Bayer 전용 센서는 이제 픽셀당 1바이트의 소스 깊이를 보고합니다.
원시/Bayer 프레임버퍼 크기 계산을 수정했습니다.
머신러닝:
TensorFlow Lite Micro가 이제 임시 텐서 아레나 크기를 산정할 때 GC 힙의 여유 메모리를 사용하여, 프레임 버퍼 메모리가 제한된 보드에서 모델 로드 할당 실패를 방지합니다.
호스트 / IDE:
TinyUSB 보드에서 USB 디버그 CDC 버퍼 처리를 수정하여 더 안정적인 시리얼/디버그 처리량을 제공합니다.
tools/pyopenmv: RGB565 바이트 순서를 수정하고,scale인자를 추가했으며, 프레임 버퍼 도구가 이제 이미지 크기/포맷을 보고합니다.
하드웨어 및 보드 지원¶
OV7725 가 이제 Bayer 픽셀 포맷을 보고합니다(올바른 원시/CFA 처리).
STM32/NXP 보드 전반에서 하드웨어 크로핑이 활성화되었습니다.
호환성을 깨는 API 변경 사항¶
v4.5.8과 v4.5.9 사이의 사용자에게 보이는 API 변경입니다. 범위: modules/ 의 Python C 모듈과 scripts/libraries/ 의 Python 라이브러리.
각 변경 사항에는 그 영향이 태그로 표시되어 있습니다:
minor — 좁은 범위의 API; 이를 사용한 스크립트에만 영향을 줍니다.
behavior — 동일한 API이지만 결과가 다름; 튜닝된 스크립트를 다시 확인하세요.
변경 사항은 이 순서대로 영향별로 그룹화되어 있습니다. 코드를 포팅하기만 하면 된다면, 끝에 있는 마이그레이션 체크리스트 로 건너뛰세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
AprilTag 결과 객체와 set_buffers (minor)¶
find_apriltags() 의 AprilTag 결과가 이제 데이터를 메서드가 아니라 속성으로 노출합니다 — tag.cx(), tag.family() 등 대신 tag.cx, tag.cy, tag.rotation, tag.family, tag.corners 를 사용하세요. 새로운 name (패밀리 이름 문자열)과 부동소수점 정밀도의 cxf / cyf 접근자가 추가되었습니다.
별도로, 자동 비디오 버퍼 구성이 변경되었습니다: set_buffers 가 auto_adjust 를 대체합니다 — 프레임 크기의 버퍼를 최대 3개(또는 들어갈 수 있는 최대 개수)까지 사용하려면 -1 을, 전체 프레임 버퍼를 사용하려면 1 을 전달하세요. 버퍼 크기 산정이 이제 픽셀당 비트 수를 인식하므로 1 bpp 포맷에서는 더 많은 버퍼를 할당할 수 있습니다.
ble_advertising 및 네트워크 RPC 제거됨 (minor)¶
ble_advertising 헬퍼 라이브러리와 ble_temperature.py 예제가 제거되었습니다 — 대신 aioble 을 사용하세요(aioble 온도 예제가 제공됩니다). RPC 네트워크 마스터/슬레이브 클래스가 rpc.py 에서 제거되었습니다.
AprilTag 패밀리가 기본적으로 비활성화됨 (behavior)¶
AprilTag 패밀리를 이제 개별적으로 컴파일 타임에 선택할 수 있으며, 사용되지 않는 것들은 기본적으로 비활성화됩니다. 표준 보드에서 find_apriltags() 는 이제 다른 패밀리를 활성화하여 펌웨어를 다시 빌드하지 않는 한 TAG36H11 패밀리만 검출합니다. 표준 빌드에서 다른 패밀리(TAG16H5, TAG25H9, …)에 의존하는 스크립트는 조용히 해당 패밀리를 검출하지 않게 됩니다.
커밋: effe12f2c
마이그레이션 체크리스트¶
v4.5.9로 깔끔하게 포팅하기 위한 일반적인 작업은 다음과 같습니다:
AprilTag 결과 접근을 메서드 호출에서 속성으로 변경하고(
tag.cx()→tag.cx),auto_adjust를set_buffers로 전환하세요 (AprilTag / 버퍼 변경).ble_advertising을aioble로 교체하고 RPC 네트워크 마스터/슬레이브 사용을 모두 제거하세요 (제거 사항).표준 빌드에서
TAG36H11이외의 AprilTag 패밀리를 사용한다면, 이제 기본적으로 검출되지 않음에 유의하세요 (AprilTag 패밀리 변경).