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 codeFB_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, โมเดลyolov8nperson เป็นไฟล์ที่ตั้งชื่อตามขนาดล้วนๆ) และลบ variants int8 ขนาดใหญ่tiny_yolo_v2ออก (34240cc3c)ขณะนี้การตั้งเวลา serial ถูกปรับแต่งผ่าน override keys
protocolของ firmwaresettings.json(overrideReadTimeout,overrideReadStallTimeout,overridePerCommandWaitและ V2 keysoverrideCRC/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 โดยใช้
QPointerguards เพื่อให้ไม่ใช้ไดอะล็อกที่ถูกลบแล้วหากมันปิดระหว่างดาวน์โหลด (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 keysprotocolใน firmwaresettings.json(019d8bf1d)ขณะนี้ bootloaders ที่รวมมาจัดส่งเป็น
.binเท่านั้น ไฟล์เฟิร์มแวร์และ bootloader.dfuต่อบอร์ดถูกลบออกแล้ว