v1.7.0

v1.7.0 เพิ่มการแบ่งและประกอบบัฟเฟอร์เฟรมอนุกรมเพื่อให้สามารถถ่ายโอนเฟรมขนาดใหญ่ผ่านลิงก์อนุกรมดีบักได้ ทำให้การตัดการเชื่อมต่อพร้อมรีเซ็ตปลอดภัยยิ่งขึ้นโดยล้าง (และบน Windows ให้ eject) ไดรฟ์ USB mass-storage ของกล้อง และปรับปรุงชุดตัวอย่าง รุ่นนี้ใช้ Qt Creator 4.0.2 (ฐานเดียวกับรุ่นก่อนหน้า) และเพิ่มการสนับสนุนการ build สำหรับเป้าหมาย Linux แบบ embedded ที่คอมไพล์ข้ามแพลตฟอร์ม เช่น Raspberry Pi ไม่มีการเปลี่ยนแปลงที่ส่งผลกระทบ

ไฮไลต์

  • การแบ่งบัฟเฟอร์เฟรมอนุกรม — การถ่ายโอนบัฟเฟอร์เฟรมขนาดใหญ่จะถูกแบ่งเป็นชิ้นขนาด MTU และประกอบใหม่ในบัฟเฟอร์พิกเซล เพื่อให้สามารถย้ายเฟรมขนาดใหญ่ผ่านลิงก์อนุกรมดีบักได้

  • การตัดการเชื่อมต่อพร้อมรีเซ็ตที่ปลอดภัยกว่า — ไดรฟ์ USB mass-storage ของกล้องจะถูกล้างก่อนการรีเซ็ต (และ force-eject บน Windows) เพื่อซิงค์ระบบไฟล์ก่อน

  • การบันทึกไฟล์แบบ atomicmain.py และไฟล์ keypoint จะถูกเขียนแบบ atomic เพื่อป้องกันการเสียหายและแก้ไขบั๊ก path ที่เขียน main.py ไปผิดตำแหน่ง

  • Raspberry Pi / embedded Linux — รวมการสนับสนุนการ build แบบคอมไพล์ข้ามแพลตฟอร์มแล้ว

  • ตัวอย่างที่ปรับปรุงใหม่ — ชุด Servo Shield ตัวอย่าง Feature-Detection ใหม่ และตัวอย่างวิดีโอ Image Reader/Writer

ฟีเจอร์ใหม่

  • การแบ่งและประกอบบัฟเฟอร์เฟรมอนุกรม การถ่ายโอนบัฟเฟอร์เฟรมจะถูกแบ่งเป็นชิ้นขนาด MTU และประกอบใหม่ในบัฟเฟอร์พิกเซล เพื่อให้สามารถย้ายเฟรมขนาดใหญ่ผ่านลิงก์อนุกรมดีบักได้โดยใช้ MTU เริ่มต้น มีการเพิ่มการ handshake เจรจา MTU อัตโนมัติแบบ runtime พร้อม firmware version gate ที่ตั้งค่าเป็น 2.5.0 ซึ่งตรงกับเฟิร์มแวร์ 2.5.0 ที่รวมมาด้วยใน commit เดียวกัน (96458ccef) จากนั้น gate ถูกยกระดับเป็น 9.9.9 สำหรับการเผยแพร่ ซึ่งเฟิร์มแวร์ที่จัดส่งไม่มีรายงาน ดังนั้นกล้องจะใช้ MTU เริ่มต้นและไม่มีการเจรจาเกิดขึ้น (abd1dacb9)

  • ล้าง/eject เมื่อตัดการเชื่อมต่อพร้อมรีเซ็ต การตัดการเชื่อมต่อพร้อมรีเซ็ตจะล้างไดรฟ์ USB mass-storage ของกล้องก่อนการรีเซ็ต: บน Windows ไดรฟ์จะถูก force-eject ในขณะที่บน Linux และ macOS ระบบไฟล์ของไดรฟ์จะถูก sync (syncfs / sync_volume_np) ข้อผิดพลาด Failed to eject จะรายงานเมื่อล้มเหลวบนทั้งสามแพลตฟอร์ม (243618791, ff6b15aff, 1865ffd31, 4fd4e89cf)

  • ตัวอย่าง Servo Shield เพิ่มชุดตัวอย่าง 15-Servo-Shield ที่สาธิตเซอร์โวที่ขับเคลื่อนด้วย PCA9685 รวมถึงไดรเวอร์ pca9685.py และ helper servo.py (abd1dacb9)

  • ตัวอย่าง Feature-Detection ใหม่ เพิ่ม find_circles (Hough), find_rects (quad-threshold), find_numbers (การรู้จำตัวเลข LeNet) และตัวอย่างการถดถอยเชิงเส้นที่รวดเร็วและแข็งแกร่งภายใต้ 09-Feature-Detection (abd1dacb9)

  • ตัวอย่างวิดีโอและการควบคุมบอร์ด เพิ่มตัวอย่าง Image Reader/Writer สำหรับการบันทึกและเล่นซ้ำ snapshot stream จากการ์ด SD ตัวอย่างการควบคุมบอร์ด RTC และตัวรัน unit-test บนกล้อง (abd1dacb9)

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

  • เปลี่ยนชื่อโฟลเดอร์ตัวอย่าง 99-Tests (เดิมคือ 15-Tests) และเพิ่มตัวรัน unittests.py (abd1dacb9)

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

  • เพิ่มความปลอดภัยในการบันทึก main.py และไฟล์ keypoint การเขียนถูกเปลี่ยนเป็นการเขียน FileSaver แบบ atomic (เขียนแล้ว finalize) ใน (4fd4e89cf) และแก้ไขตัวคั่น path ที่หายไปซึ่งเขียน main.py ไปยังตำแหน่งผิดใน (1865ffd31)

  • ปรับปรุงความน่าเชื่อถือของอนุกรมโดยขยายบัฟเฟอร์การอ่านอนุกรมเป็น 1MB บนทุกพอร์ตและเพิ่ม timeout การหยุดอ่าน เพื่อแก้ปัญหาข้อมูลสูญหายกับ QSerialPort (7f68368dc)

  • แก้ไขข้อบกพร่องของ layout splitter หน้าต่างโดย export MainWindow และส่งสัญญาณ show-event เพื่อให้ปลั๊กอิน OpenMV กู้คืน layout เมื่อหน้าต่างหลักแสดงขึ้น (4895e20b7)

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

  • ฐาน Qt Creator: 4.0.2

  • เพิ่มการสนับสนุนการ build สำหรับเป้าหมาย Linux แบบ embedded ที่คอมไพล์ข้ามแพลตฟอร์ม เช่น Raspberry Pi: deploy ฟอนต์ Qt แก้ไขการจัดการ chrpath/RPATH build การแปลด้วยไบนารี host และเพิ่ม dependency qml ที่ขาดหายไป (73c052fcc, 8f0baa131, 5b9e9e82e, 45011ec2a)

  • อัปเดตเฟิร์มแวร์ OpenMV ที่รวมมาจาก 2.4.1 เป็น 2.5.0 (96458ccef)

  • เปลี่ยนชื่อโฟลเดอร์เฟิร์มแวร์ OMV2/OMV3 เป็น OPENMV2/OPENMV3 และจัดส่งเฟิร์มแวร์และไบนารีบูตโหลดเดอร์ STM32F427 (OPENMV2) และ STM32F765 (OPENMV3) ที่อัปเดตและ build ใหม่ (abd1dacb9)

การเปลี่ยนแปลงที่ส่งผลกระทบ

ไม่มี รุ่นนี้ไม่มีการเปลี่ยนแปลงขั้นตอนการทำงานหรือพฤติกรรมที่ผู้ใช้มองเห็นได้ และโปรเจกต์ที่มีอยู่ยังคงทำงานได้โดยไม่มีการเปลี่ยนแปลง