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

Commits: c0d4759f8, 7b36e4ef6

ble_advertising และ RPC-over-network ถูกลบออก (minor)

ไลบรารี helper ble_advertising และตัวอย่าง ble_temperature.py ถูกลบออก — ใช้ aioble แทน (มีตัวอย่าง aioble temperature ให้) คลาส RPC network master/slave ถูกลบออกจาก rpc.py

Commits: 6513276c1, 44a7e579d

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 งานทั่วไปคือ:

  1. เปลี่ยนการเข้าถึงผลลัพธ์ AprilTag จากการเรียกเมธอดเป็น attribute (tag.cx()tag.cx) และเปลี่ยน auto_adjust เป็น set_buffers (การเปลี่ยนแปลง AprilTag / buffer)

  2. แทนที่ ble_advertising ด้วย aioble และหยุดใช้ RPC network master/slave (การลบออก)

  3. หากใช้ AprilTag family อื่นนอกจาก TAG36H11 บน build มาตรฐาน โปรดทราบว่าตอนนี้ไม่ตรวจจับโดยค่าเริ่มต้นอีกต่อไป (การเปลี่ยนแปลง AprilTag family)