v4.5.9¶
v4.5.9 นำ raw preview streaming มาสู่บอร์ดที่ไม่มี JPEG encoder แบบฮาร์ดแวร์, การ crop sensor แบบฮาร์ดแวร์เพื่อเพิ่ม RAM, การ debayering ที่เร็วขึ้นด้วย Helium acceleration และชุดการแก้ไขกล้อง/USB debug รุ่นนี้ยังเปลี่ยนแปลง AprilTag result API และชุด AprilTag family เริ่มต้น โปรดอ่านการเปลี่ยนแปลงที่ไม่เข้ากันย้อนหลังด้านล่าง
ไฮไลต์¶
Raw preview streaming — บอร์ดที่ไม่มี JPEG encoder แบบฮาร์ดแวร์สามารถส่งเฟรมดิบที่ย่อขนาดไปยัง IDE/host แทนการล้มเหลวในการแสดงตัวอย่าง
Hardware sensor cropping — การตั้งค่า frame size ขนาดเล็กลงตอนนี้ลดหน่วยความจำต่อบัฟเฟอร์และเพิ่ม RAM สำหรับ
fb_alloc()Debayering เร็วขึ้น — การแปลง Bayer→RGB/grayscale ตอนนี้ได้รับการเร่งความเร็วด้วย Helium-SIMD บนบอร์ด Cortex-M55
Breaking: AprilTag result object เปลี่ยนเป็นการเข้าถึงแบบ attribute และชุด AprilTag family เริ่มต้นถูกลดลง (ดู การเปลี่ยนแปลง AprilTag และ การเปลี่ยนแปลง AprilTag family)
คุณสมบัติใหม่¶
Raw preview streaming — บอร์ดที่ไม่มี JPEG encoder แบบฮาร์ดแวร์สามารถข้าม JPEG และ stream เฟรมดิบที่ย่อขนาดแล้ว (จำกัดที่ ~60 KB) ไปยัง IDE/host เพื่อให้การแสดงตัวอย่างสดทำงานได้บนบอร์ดเหล่านั้น
การเปลี่ยนแปลงและปรับปรุงอื่น ๆ¶
Hardware cropping เปิดใช้งานบนบอร์ด STM32/NXP ทั้งหมดแล้ว (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060) เมื่อตั้งค่า frame size หรือ window หน่วยความจำต่อบัฟเฟอร์จะลดลงเป็นขนาดที่ crop แล้ว ปลดปล่อย RAM มากขึ้นสำหรับ
fb_alloc()Debayering เร็วขึ้น — การแปลง Bayer→RGB565/grayscale ตอนนี้ได้รับการเร่งความเร็วด้วย ARM Helium/MVE SIMD บนบอร์ด Cortex-M55 (เช่น RT1060) พร้อม path SIMD JPEG encoder ที่ใช้ร่วมกัน
IDE debug เร็วขึ้น — debugger ตอนนี้ถ่ายโอนข้อมูลโดยตรงจาก USB stack เมื่อเป็นไปได้ หลีกเลี่ยงการคัดลอกซ้ำ
MicroPython submodule ได้รับการอัปเดต — บอร์ดสามารถปรับขนาด TinyUSB CDC buffer ได้ พร้อมการแก้ไข GC และกฎการ build
การแก้ไขบัก¶
กล้องและ sensor:
แก้ไข Bayer/CFA pattern ของ OV7725 (GBRG → BGGR) แก้ไข output สีหลัง debayer บนกล้อง OV7725; OV7725 ตอนนี้รายงาน Bayer pixel format และ sensor แบบ Bayer-only ตอนนี้รายงาน source depth แบบ 1 ไบต์ต่อพิกเซล
แก้ไขการคำนวณขนาด raw/Bayer framebuffer
Machine learning:
TensorFlow Lite Micro ตอนนี้ใช้หน่วยความจำว่างของ GC heap ในการกำหนดขนาด temporary tensor arena ป้องกันความล้มเหลวในการ allocate โมเดลบนบอร์ดที่มีหน่วยความจำ frame buffer จำกัด
Host / IDE:
แก้ไขการจัดการ USB-debug CDC buffer บนบอร์ด TinyUSB เพื่อ throughput serial/debug ที่เชื่อถือได้มากขึ้น
tools/pyopenmv: แก้ไขลำดับไบต์ RGB565 เพิ่มอาร์กิวเมนต์scaleและ frame-buffer tool ตอนนี้รายงานขนาด/รูปแบบภาพ
ฮาร์ดแวร์และการรองรับบอร์ด¶
OV7725 ตอนนี้รายงาน Bayer pixel format (การจัดการ raw/CFA ที่ถูกต้อง)
Hardware cropping เปิดใช้งานทั่วทั้งบอร์ด STM32/NXP
การเปลี่ยนแปลง API ที่ไม่เข้ากันย้อนหลัง¶
การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v4.5.8 และ v4.5.9 ขอบเขต: Python C-module ใน modules/ และไลบรารี Python ใน scripts/libraries/
การเปลี่ยนแปลงแต่ละรายการถูกกำกับด้วยผลกระทบ:
minor — API แคบ; ส่งผลเฉพาะสคริปต์ที่ใช้งานเท่านั้น
behavior — API เหมือนเดิม แต่ผลลัพธ์ต่างออกไป; ตรวจสอบสคริปต์ที่ปรับแต่งไว้ซ้ำ
การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการ port โค้ดของคุณ ข้ามไปที่ migration checklist ที่ท้ายรายการ แต่ละ commit hash เชื่อมโยงไปยัง diff บน GitHub
AprilTag result objects และ set_buffers (minor)¶
ผลลัพธ์ AprilTag จาก find_apriltags() ตอนนี้เปิดเผยข้อมูลเป็น attribute แทนเมธอด — ใช้ tag.cx, tag.cy, tag.rotation, tag.family, tag.corners แทน tag.cx(), tag.family() ฯลฯ มี accessor ใหม่ name (string ชื่อ family) และ cxf / cyf แบบ float precision
แยกต่างหาก การกำหนดค่า video-buffer อัตโนมัติเปลี่ยนแปลงไป: set_buffers แทนที่ auto_adjust — ส่ง -1 เพื่อใช้ buffer สูงสุดสามตัวของ frame size (หรือมากที่สุดที่ใส่ได้) และ 1 เพื่อใช้ frame buffer ทั้งหมด การกำหนดขนาด buffer ตอนนี้รับรู้ bits-per-pixel จึงสามารถ allocate buffer ได้มากขึ้นสำหรับรูปแบบ 1 bpp
ble_advertising และ RPC-over-network ถูกลบออก (minor)¶
ไลบรารี helper ble_advertising และตัวอย่าง ble_temperature.py ถูกลบออก — ใช้ aioble แทน (มีตัวอย่าง aioble temperature ให้) คลาส RPC network master/slave ถูกลบออกจาก rpc.py
AprilTag families ถูกปิดใช้งานโดยค่าเริ่มต้น (behavior)¶
ตอนนี้ AprilTag family สามารถเลือกได้ในช่วง compile-time แต่ละรายการ และรายการที่ไม่ได้ใช้ถูกปิดใช้งานโดยค่าเริ่มต้น บนบอร์ดมาตรฐาน find_apriltags() ตอนนี้ตรวจจับเฉพาะ family TAG36H11 เว้นแต่เฟิร์มแวร์จะถูก rebuild พร้อมเปิดใช้งาน family อื่น สคริปต์ที่พึ่งพา family อื่น (TAG16H5, TAG25H9, ...) บน build มาตรฐานจะหยุดตรวจจับโดยไม่มีการเตือน
Commit: effe12f2c
Migration checklist¶
สำหรับการ port ที่สะอาดไปยัง v4.5.9 งานทั่วไปคือ:
เปลี่ยนการเข้าถึงผลลัพธ์ AprilTag จากการเรียกเมธอดเป็น attribute (
tag.cx()→tag.cx) และเปลี่ยนauto_adjustเป็นset_buffers(การเปลี่ยนแปลง AprilTag / buffer)แทนที่
ble_advertisingด้วยaiobleและหยุดใช้ RPC network master/slave (การลบออก)หากใช้ AprilTag family อื่นนอกจาก
TAG36H11บน build มาตรฐาน โปรดทราบว่าตอนนี้ไม่ตรวจจับโดยค่าเริ่มต้นอีกต่อไป (การเปลี่ยนแปลง AprilTag family)