v4.8.1

v4.8.1 สร้างบน Qt Creator 14.0.2 และมุ่งเน้นไปที่โปรโตคอลกล้อง OpenMV V2 ที่มีความน่าเชื่อถือสูง ตัววิเคราะห์โค้ด (Code Profiler) ในตัว และเวิร์กโฟลว์การบันทึกที่คงกล้องไว้โดยไม่ดีดออก เฟิร์มแวร์ที่รวมมาและชุดตัวอย่างทั้งหมดอัปเดตเป็นเวอร์ชัน 4.8.1 ไม่มีการเปลี่ยนแปลง scripting API แต่พฤติกรรม save-no-longer-ejects และการลบ serial flags บางรายการตอน launch เป็นการเปลี่ยนแปลงเวิร์กโฟลว์ที่ผู้ใช้สังเกตเห็นได้

จุดเด่น

  • OpenMV Protocol V2 เป็นสแตกกล้องที่มีความน่าเชื่อถือสูง (OMVCamera/OMVTransport/OMVDebug) พร้อม CRC32, การจัดลำดับ, ACK/NAK, การส่งซ้ำ, events และ fragmentation โปรโตคอลนี้ถูกเจรจาอัตโนมัติเมื่อเชื่อมต่อและควบคุมการรีเซ็ต, การบูต, การสตรีม, การรันสคริปต์ และสถิติ

  • Code Profiler เป็นหน้าต่างใหม่ (Window > Show Code Profiler) ที่ดึงข้อมูลการโปรไฟล์แบบรายฟังก์ชันจากกล้อง และแสดงจำนวนการเรียก, ไมโครวินาทีน้อยสุด/มากสุด/รวม/เฉลี่ย (μs), รอบเฉลี่ย, เปอร์เซ็นต์ และตัวนับ event ในตารางที่เรียงลำดับได้

  • บันทึกในตำแหน่งเดิม ไม่ดีดไดรฟ์กล้องออกอีกต่อไป ขณะนี้ IDE เขียน main.py และ flush ข้อมูลลงดิสก์ เพื่อให้อุปกรณ์ยังคง mount อยู่

  • การตรวจจับหลาย sensor รายงานกล้องทุกตัวบนบอร์ด แสดงในแถบสถานะเป็น Sensors: X, Y โดยมี sensor หลักอยู่ก่อน

  • Dynamic Frame Reading คำนวณความละเอียดการสตรีม raw ที่เหมาะสมที่สุดต่อฟอร์แมตพิกเซลใหม่และกำหนดค่าสตรีมอัตโนมัติ

  • เฟิร์มแวร์และตัวอย่างที่รวมมา อัปเดตเป็น 4.8.1 สำหรับบอร์ดทั้งหมด โดยเพิ่มตัวอย่างกล้อง event GenX320, TensorFlow ML, Alif OLED และ LCD/Touch-LCD shield ใหม่

ฟีเจอร์ใหม่

  • เพิ่ม OpenMV V2 communication protocol: transport และ transaction layer ที่สมบูรณ์พร้อม CRC32, การจัดลำดับ, ACK/NAK, การส่งซ้ำ, events และ fragmentation รวมถึง class OMVCamera ที่ถูกเจรจาอัตโนมัติเมื่อเชื่อมต่อและผสานรวมเข้ากับ serial driver (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe)

  • เพิ่มหน้าต่าง Code Profiler (Window > Show Code Profiler) ที่ดึงข้อมูลการโปรไฟล์แบบรายฟังก์ชันและแสดงจำนวนการเรียก, ไมโครวินาทีน้อยสุด/มากสุด/รวม/เฉลี่ย (μs), รอบเฉลี่ย, เปอร์เซ็นต์ และตัวนับ event โดยแปลงที่อยู่เป็นสัญลักษณ์ผ่าน ELFIO ELF parser ที่รวมมา (019d3cd2c, 57cd9e1cc)

  • เพิ่มไดอะล็อก Debug Protocol Settings ที่แสดง System Info, Host Stats และ Device Stats แบบ live ที่รีเฟรชทุกวินาที เปิดเผยอัตราการ polling ต่อช่องทาง รวมถึงการควบคุมแบบรวมกันและแยกกัน (5220a6125, 0da2f79d0)

  • เพิ่ม การตรวจจับหลาย sensor: บอร์ดที่มีกล้องมากกว่าหนึ่งตัวจะรายงานทุกตัวในแถบสถานะเป็น Sensors: X, Y โดยมี sensor หลักอยู่ก่อน (cebc79ce7)

  • เพิ่ม Dynamic Frame Reading (เปิดใช้งานโดยค่าเริ่มต้น) ที่คำนวณความละเอียดการสตรีม raw ที่เหมาะสมที่สุดต่อฟอร์แมตพิกเซล (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) ใหม่และกำหนดค่าสตรีมใหม่ (75c073bdb, 0da2f79d0)

  • เพิ่มการถอดรหัส framebuffer สำหรับฟอร์แมตพิกเซล raw BINARY (mono 1-bpp) และ ARGB8 (alpha 32 บิต) ทำให้ภาพประเภทดังกล่าวแสดงผลใน viewer ได้แล้ว (dabb82062)

  • บน Windows Connect ขณะนี้สแกนหาอุปกรณ์ USB ที่ OS ระบุว่ามีปัญหาและเตือนพร้อมรายชื่ออุปกรณ์ที่อาจขัดขวางการเชื่อมต่อ (1a5beb081, 1b59cd78e)

  • เพิ่ม ตัวบ่งชี้การลงทะเบียน ในแถบสถานะ: ปุ่มสีเขียว Registered หรือสีปะการัง Unregistered สำหรับกล้องที่เชื่อมต่ออยู่ สามารถคลิกเพื่อลงทะเบียนบอร์ดได้ (a8c98a4b9)

  • ขณะนี้ framebuffer viewer สามารถแสดงข้อความตรงกลางที่ส่งจากสคริปต์ที่รันอยู่ผ่าน escape code FB_MESSAGE ใหม่แทนภาพได้ (530048201)

  • เพิ่มรายการ model-zoo ใหม่: โมเดลประมาณความลึก ST FastDepth (224/256/320), โมเดล pose จุดสำคัญศีรษะ ST, โมเดลมือตรวจจับฝ่ามือและจุดสำคัญมือ และโมเดลตรวจจับใบหน้าด้านหน้า BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9)

  • เพิ่มสคริปต์การทดสอบตัวเอง (กล้อง, IMU, ToF, WiFi, LAN) แบบ factory-build-only ที่รวมมาและเปิดอัตโนมัติเมื่อ launch ใน IDE variant แบบ factory (0db7fbbb0); ส่วน RT1060 LAN ของการทดสอบถูกปิดใช้งานชั่วคราว (48370d022)

การเปลี่ยนแปลงและการปรับปรุงอื่นๆ

  • บันทึกในตำแหน่งเดิม: การบันทึกสคริปต์ไม่ดีดไดรฟ์กล้องออกอีกต่อไป IDE เขียน main.py และ flush บัฟเฟอร์ volume ในตำแหน่งเดิม (FlushFileBuffers บน Windows, syncfs บน Linux, sync_volume_np/F_FULLFSYNC บน macOS) ทำให้อุปกรณ์ยังคง mount อยู่ (1614c572f, 6928b51ea, 35ed53967)

  • การกระทำบน Toolbar ที่คลิกขณะกล้องกำลังทำงาน (ปิดใช้งาน framebuffer, บีบอัด JPEG, บันทึกสคริปต์, กำหนดค่าการตั้งค่า) ขณะนี้ถูกจัดคิวและรันอัตโนมัติเมื่ออุปกรณ์ว่าง แทนที่จะแสดงไดอะล็อก Busy error (f4315f0a4)

  • ขณะนี้ framebuffer viewer ค่าเริ่มต้นเป็น fit-in-view เพื่อให้ภาพปรับขนาดอัตโนมัติตามหน้าต่างเมื่อเริ่มต้น และบานหน้าต่าง output ของ serial terminal แสดงโดยค่าเริ่มต้นเมื่อเริ่มต้น (f3ce4dc75)

  • ไฟล์โมเดลที่คอมไพล์แล้วที่มีนามสกุล .lite ขณะนี้ได้รับการรู้จักทุกที่: การกรองและการแสดงผลของ model-zoo browser, การจัดตำแหน่ง firmware ROMFS และคอมไพเลอร์ Vela/STEdge AI ขณะนี้ส่งออกผลลัพธ์ .lite (f3ce4dc75)

  • ไดอะล็อก compile โมเดล STEdge AI (N6) ขณะนี้แยกวิเคราะห์และรายงานเปอร์เซ็นต์การใช้งาน NPU RAM และ hyperRAM และคัดลอกผลลัพธ์เครือข่ายที่ย้ายแล้วไปยังไฟล์ที่ตรงกับนามสกุลของโมเดล (f3ce4dc75)

  • ขณะนี้ model-zoo browser แสดงคอลัมน์ Size และยืดคอลัมน์ชื่อให้พอดี แทนที่จะซ่อนขนาด (f3ce4dc75)

  • เทมเพลต new-script ถูกอัปเดตเป็น module API csi ใหม่และค่าเริ่มต้น framesize เป็น VGA และตัวอย่าง Hello World ที่รวมมาถูกเปลี่ยนจาก QVGA เป็น VGA framesize (f3ce4dc75)

  • ไดอะล็อก Convert Video ถูกเขียนใหม่เพื่อใช้ไดอะล็อก loader ที่ใช้ร่วมกันพร้อม output ที่มีสี, ข้อความสำเร็จ/ล้มเหลว, ปุ่ม OK-to-close และข้อผิดพลาดที่ชัดเจนเมื่อ FFMPEG ไม่มีให้ใช้บนแพลตฟอร์ม (f56efc7be)

  • ขณะนี้ framebuffer viewer แสดงคำเตือนที่กะพริบเมื่อภาพ JPEG/PNG ใหญ่เกินกว่าจะบัฟเฟอร์และส่งได้ ผ่าน escape code FB_BUFFER_ERROR ใหม่ (fda826126)

  • การเข้า DFU bootloader ขณะนี้บังคับให้ bootloader อยู่ resident บนเฟิร์มแวร์โปรโตคอล V2 พร้อมการตรวจจับเวอร์ชันที่ fall back เป็นการรีเซ็ตธรรมดาบน bootloader รุ่นเก่า (<1.0.2) ที่อาจค้างเมื่อถูกบังคับ (975857221)

  • เปลี่ยนชื่อและจัดระเบียบโฟลเดอร์โมเดลตรวจจับวัตถุ ST ใหม่ (st_yolo_lc_v1 เป็น yolo_lc, tiny_yolo_v2 เป็น yolo_v2, โมเดล yolov8n person เป็นไฟล์ที่ตั้งชื่อตามขนาดล้วนๆ) และลบ variants int8 ขนาดใหญ่ tiny_yolo_v2 ออก (34240cc3c)

  • ขณะนี้การตั้งเวลา serial ถูกปรับแต่งผ่าน override keys protocol ของ firmware settings.json (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait และ V2 keys overrideCRC/overrideSEQ/overrideACK) แทน command-line flags ตอน launch (019d8bf1d)

  • กำหนดขีดจำกัดความยาวบรรทัดของ Python language-server เป็น 120 คอลัมน์สำหรับ flake8 และ pycodestyle เพื่อให้บรรทัดยาวไม่ถูก flag ที่ค่าเริ่มต้น 79 (dabb82062)

  • ลดชุดโมเดล machine-learning ที่รวมมาโดยย้ายคอลเลกชันโมเดล Qualcomm และ google/mobilenet_v1 ไปยัง models_unused เพื่อลดขนาด installer (c44ddba20)

การแก้ไขบั๊ก

  • ไดอะล็อก progress การดาวน์โหลดเฟิร์มแวร์และการอัปเดต resource ถูกทำให้ปลอดภัยจากการ crash โดยใช้ QPointer guards เพื่อให้ไม่ใช้ไดอะล็อกที่ถูกลบแล้วหากมันปิดระหว่างดาวน์โหลด (f3ce4dc75)

  • การสแกนไดรฟ์ขณะนี้สแกนซ้ำจนกว่าจะพบ USB drive ของกล้องและล้างรายการไดรฟ์เก่าเมื่อตัดการเชื่อมต่อ โดยลบ hack timer แบบ one-shot เดิม (a31d41b4e)

  • การแก้ไขการเชื่อมต่อและ serial หลายรายการ: sensor ที่ซ่อนอยู่ (เช่น SoftCSI) ไม่แสดงในประเภท sensor ที่แสดงอีกต่อไป, Windows serial keep-alive timer ป้องกัน USB stalls, Start ไม่รีสตาร์ทสคริปต์ที่รันอยู่แล้ว และช่อง camera ถูกตัดการเชื่อมต่ออย่างสะอาดเมื่อปิด port (a8e467be6)

  • มุมมอง profiler กู้คืนการเลือกตัวนับ event PMU ต่อคอลัมน์ (เมนู event ที่เลือกได้) และสถานะ counter/header ที่บันทึกไว้ซึ่งถูกปิดใช้งานชั่วคราว (40c679e90)

การรองรับแพลตฟอร์มและเครื่องมือ

  • ฐาน Qt Creator: 14.0.2

  • เฟิร์มแวร์ที่รวมมา: อัปเดตจาก 4.7.0 เป็น 4.8.1 สร้างเฟิร์มแวร์ใหม่สำหรับ OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 และบอร์ด Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca)

  • แก้ไข handshake เวอร์ชัน protocol บน macOS สำหรับบอร์ด RT1062 และ AE3 โดยแบ่ง USB transfer หลายคำสั่งออกเป็นชิ้น USBDBG_LEN ที่บอร์ดเหล่านั้นสามารถจัดการได้ (6b9d5f842)

  • ปรับปรุง Windows driver package ที่รวมมาใหม่: เพิ่มไฟล์ driver .cat/.inf ที่ลงนามต่อบอร์ด (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) และย้าย CDC serial drivers ไปยังโฟลเดอร์ openmvcdc ใหม่พร้อม auto-installer แบบ dpinst (439557829, ba3b01bfb)

  • เพิ่มการรองรับ sensor กล้อง MT9V032 เวอร์ชันเก่าโดยลงทะเบียน sensor IDs 0x1311 และ 0x1312 (ควบคู่กับ 0x1313 ที่มีอยู่แล้ว) เป็น MT9V0X2 (eaaa624e3)

การเปลี่ยนแปลงที่ทำลาย compatibility

รีลีสนี้ไม่มีการเปลี่ยนแปลง scripting API แต่มีการเปลี่ยนแปลงเวิร์กโฟลว์ที่ผู้ใช้สังเกตเห็นได้บางรายการ:

  • การบันทึกสคริปต์ไม่ดีดหรือ unmount USB drive ของกล้องอีกต่อไป ขณะนี้ IDE flush บัฟเฟอร์ volume ในตำแหน่งเดิม เพื่อให้อุปกรณ์ยังคง mount อยู่หลังการบันทึก

  • serial flags ตอน launch -override_read_timeout (ค่าเริ่มต้น 5000 ms), -override_read_stall_timeout (ค่าเริ่มต้น 1000 ms) และ -override_per_command_wait (ค่าเริ่มต้น 1 ms, 2 ms บน macOS) ถูกลบออกแล้ว ขณะนี้การตั้งเวลา serial กำหนดค่าผ่าน override keys protocol ใน firmware settings.json (019d8bf1d)

  • ขณะนี้ bootloaders ที่รวมมาจัดส่งเป็น .bin เท่านั้น ไฟล์เฟิร์มแวร์และ bootloader .dfu ต่อบอร์ดถูกลบออกแล้ว