v2.7.0

v2.7.0은 sensor 자동 게인 / 자동 노출 / 화이트 밸런스 API를 물리 단위(dB / 마이크로초)로 현대화하고, 위상 상관 find_displacement()를 전면 개편하며(회전/스케일 추가), get_similarity()(SSIM), chrominvar() / illuminvar(), 추가 프레임 버퍼, 그리고 MQTT 라이브러리를 추가합니다. 대규모 호환성 변경 릴리스입니다 — 아래의 호환성 변경 사항을 읽어보십시오.

주요 내용

  • 현대화된 센서 APIset_auto_gain() / set_auto_exposure() / set_auto_whitebal()이 이제 dB / 마이크로초를 사용하며, 이에 대응하는 get_gain_db() / get_exposure_us() / get_rgb_gain_db()를 제공합니다.

  • 위상 상관 — 회전 / 스케일을 포함하도록 재작업된 find_displacement()find_rotscale() / linpolar() / logpolar().

  • SSIMimage.get_similarity() 구조적 유사도.

  • 추가 프레임 버퍼sensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — 새로운 MQTT 라이브러리.

  • 호환성 변경: 센서 게인/노출/화이트밸런스 API, find_displacement() / FFT 프레임 크기, find_number(), WINC 펌웨어 도구, 그리고 AprilTag z_rotation()이 모두 변경되었습니다 — 호환성 변경 사항을 참고하십시오.

새로운 기능

  • 센서sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), set_auto_gain()gain_db_ceiling 키워드, MT9V034 hmirror / vflip 지원, 그리고 추가 RAM 내 프레임 버퍼를 위한 sensor.alloc_extra_fb() / sensor.dealloc_extra_fb()를 추가했습니다.

  • 이미지remove_shadows(), min() / max()(프레임 차분), 구조적 유사도 예제와 함께 get_similarity()(SSIM), chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), mean() / mode() / median() / midpoint() 적응형 필터의 threshold / offset / invert 키워드, 키포인트 객체의 len() / 인덱싱, 그리고 키포인트 매치 객체의 .match() 접근자를 추가했습니다.

  • 라이브러리 / 네트워크 — MQTT 라이브러리(WiFi MQTT 예제 포함)와 디버그 UART를 통해 WINC 펌웨어를 프로그래밍하기 위한 network.WINC.MODE_BSP 모드를 추가했습니다.

  • 예제 — 저전력 deep_sleep.py / stop_mode.py, 고급 광학 흐름, 그리고 선형/로그 극좌표 예제 스크립트를 추가했습니다. 펌웨어는 이제 부팅 시 uart.ini를 파싱하여 REPL UART를 활성화합니다.

기타 변경 사항 및 개선

  • get_regression()area_threshold / pixels_threshold 키워드와 더 빠른 강건 회귀(라인 추종 / 레이싱용)가 추가되었습니다. get_pixel()이 이제 Bayer 이미지를 지원합니다. STM32H7 기반 작업(CMSIS 헤더 / HAL / 부트로더 — H7 보드는 아직 사용할 수 없음)을 추가했고, 번들된 WINC1500 펌웨어를 업데이트했습니다(19.4.4 / 19.5.2).

버그 수정

이미징:

  • find_template() 다이아몬드 탐색 범위 초과 버그, logpolar / linpolar 손상, 그리고 0에 가까운 색상 값에서 illuminvar()이 폭주하던 문제를 수정했습니다.

센서 및 시스템:

  • 자동 게인 제어 버그, snapshot()에서 MAIN_FB 크기 복원(다른 해상도에서의 copy_to_fb, FB 크기 조정, 광학 흐름 풀링이 다시 작동하도록), WINC gethostbyname 타임아웃, H7 부트로더의 pydfu clear-status, 그리고 저전력 정지/대기 모드를 수정했습니다.

하드웨어 및 보드 지원

  • STM32H7 — 기반 작업(CMSIS / HAL / 부트로더); OpenMV H7 보드는 이번 릴리스에서 아직 사용할 수 없습니다.

  • WINC1500 — 번들된 펌웨어 업데이트.

호환성에 영향을 주는 API 변경

v2.6.0과 v2.7.0 사이의 사용자에게 보이는 API 변경. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.

각 변경 사항은 영향도로 태그가 지정됩니다:

  • major — 해당 기능을 사용한 대부분의 스크립트에 영향을 줍니다. 코드를 이식해야 합니다.

  • minor — 좁은 범위의 API. 이를 사용한 스크립트에만 영향을 줍니다.

  • behavior — 동일한 API, 다른 결과. 튜닝된 스크립트를 다시 확인하십시오.

변경 사항은 해당 순서대로 영향도별로 그룹화되어 있습니다. 코드만 이식하려면 끝부분의 마이그레이션 체크리스트로 건너뛰십시오. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.

sensor.set_auto_gain()이 dB로 재작업됨 (major)

sensor.set_auto_gain() 은 더 이상 정수 value= 키워드를 받지 않으며 True / False 를 반환하지 않습니다. 대신 sensor.set_auto_gain(False, gain_db=...) (부동 소수점 dB 값)을 사용하고, 새로운 sensor.get_gain_db() 로 값을 다시 읽어오세요. 또한 실패 시 이제 ValueError 가 발생하므로 호출을 try / except 로 감싸야 합니다.

커밋: b906c5f19

sensor.set_auto_exposure()이 마이크로초로 재작업됨 (major)

sensor.set_auto_exposure()은 더 이상 정수 value= 키워드를 받지 않으며 True / False를 반환하지 않습니다. sensor.set_auto_exposure(False, exposure_us=...)을 사용하고, 새로운 sensor.get_exposure_us()로 값을 다시 읽으며, 실패 시 발생하는 ValueError를 처리하십시오.

커밋: 7be0a7a18

find_displacement() / FFT 프레임 크기 전면 개편 (major)

위상 상관이 전면 개편되었습니다. image.find_displacement()는 이제 변위 객체를 반환합니다(x_translation() / y_translation() — 이전의 x_offset / y_offset — 그리고 rotation() / scale()과 새로운 logpolar / fix_rotation_scale 키워드 포함). 별도의 rot-scale 객체는 제거되었고 find_rotscale()이 추가되었습니다. FFT 프레임 크기 상수는 이름이 변경되거나 제거되었습니다: sensor.B40x30은 완전히 제거되었고, sensor.B64x32 / B64x64는 대문자 sensor.B64X32 / B64X64로 이름이 변경되었습니다(새로운 B128X64 / B128X128 포함).

커밋: c78f91b42, 213396d09

sensor.set_auto_whitebal()이 dB로 재작업됨 (minor)

sensor.set_auto_whitebal()은 정수 value=[r, g, b] 키워드를 rgb_gain_db=[r, g, b](부동소수점 dB)로 교체했으며, 이제 True / False 대신 None을 반환합니다(실패 시 ValueError 발생). 게인을 다시 읽으려면 새로운 sensor.get_rgb_gain_db()를 사용하십시오.

커밋: 30ecbdc4f

set_hmirror() / set_vflip()None을 반환함 (minor)

sensor.set_hmirror()sensor.set_vflip()은 이제 True / False 상태를 반환하는 대신 None을 반환하고 실패 시 ValueError를 발생시킵니다. 이들의 반환 값으로 분기하는 코드를 모두 제거하십시오.

커밋: aeb023804

WINC 펌웨어 도구가 파일 경로를 요구함 (minor)

network.WINC 펌웨어 도구가 변경되었습니다: wlan.fw_dump() / wlan.fw_update()는 이제 필수 펌웨어 파일 경로 인수를 받으며 WINC는 프로그래밍 모드(network.WINC(mode=...))로 열립니다. 인수 없는 호출을 경로를 전달하도록 업데이트하십시오(예: wlan.fw_update("/winc_19_5_2.bin")).

커밋: fcc3b0b9c

image.find_number()이 28x28 ROI를 요구함 (behavior)

image.find_number()(LeNet)는 이제 이미지 안에 들어맞는 정확히 28x28 ROI를 요구하며 그렇지 않으면 오류를 발생시킵니다(임의/전체 이미지 ROI에서 실행되는 대신). 명시적인 roi=(x, y, 28, 28)을 전달하십시오.

커밋: 4d09a13f3

AprilTag z_rotation() 부호 반전 (behavior)

AprilTag z_rotation()(및 관련 rotation())이 이제 오른손 좌표 규칙을 사용하므로, 반환되는 각도는 이전 릴리스 대비 부호가 반전됩니다. 기존 부호에 의존하는 스크립트는 값을 반전하거나 각도 계산을 조정해야 합니다.

커밋: 7673aaf74

마이그레이션 체크리스트

v2.7.0으로 깔끔하게 이식하기 위한 일반적인 작업은 다음과 같습니다:

  1. set_auto_gain()gain_db= + get_gain_db()로 이식하고 ValueError를 처리하십시오(자동 게인 재작업).

  2. set_auto_exposure()exposure_us= + get_exposure_us()로 이식하십시오(자동 노출 재작업).

  3. find_displacement()을 변위 객체로 업데이트하고 FFT 프레임 크기 상수의 이름을 변경하십시오(find_displacement 개편).

  4. set_auto_whitebal()rgb_gain_db= + get_rgb_gain_db()로 이식하고(화이트 밸런스 재작업) set_hmirror() / set_vflip()의 반환 값 확인을 중단하십시오(미러/플립 변경).

  5. WINC fw_* 도구에 펌웨어 경로를 전달하십시오(WINC 도구 변경).

  6. find_number()에 28x28 roi를 전달하고(find_number 변경) 반전된 z_rotation() 부호에 맞춰 AprilTag 각도 계산을 조정하십시오(z_rotation 변경).

다른 모든 스크립트는 변경 없이 실행됩니다.