v3.6.1

v3.6.1 adalah rilis besar. Rilis ini memperkenalkan modul imu (LSM6DS3), serangkaian API getter sensor baru dengan rotasi otomatis berbasis IMU, koreksi perspektif 4-titik rotation_corr(), dan menghadirkan Arduino Portenta H7 dengan kamera HIMAX HM01B0 dan OV7690. Beberapa API sensor / image berubah dan TensorFlow dihapus pada M7 — baca perubahan yang merusak di bawah ini.

Sorotan

  • Modul imu — akselerometer / giroskop / suhu / roll / pitch pada LSM6DS3 (OpenMV 4 / Portenta).

  • Getter sensor + rotasi otomatisget_pixformat() / get_framesize() / get_hmirror() / get_vflip() / get_windowing(), set_transpose() / set_auto_rotation(), dan rotasi snapshot berbasis IMU.

  • Koreksi perspektifrotation_corr() mendapat kata kunci fov dan corners (4-titik).

  • Perangkat keras baru — Arduino Portenta H7, HIMAX HM01B0, dan kamera OV7690.

  • Perubahan merusak: set_pixformat() / set_framesize() sekarang mengembalikan None, sensor.set_framerate() dihapus, TensorFlow dihapus pada M7, dan lens_corr() / linpolar() kini memerlukan dimensi genap — lihat perubahan yang merusak.

Fitur baru

  • imu — modul IMU baru: imu.acceleration_mg(), imu.angular_rate_mdps(), imu.temperature_c(), imu.roll(), imu.pitch(), dan imu.sleep() (LSM6DS3 pada OpenMV 4 / Portenta).

  • Getter sensor — ditambahkan sensor.get_pixformat(), get_framesize(), get_hmirror(), get_vflip(), get_windowing(), set_transpose() / get_transpose(), dan set_auto_rotation() / get_auto_rotation().

  • Rotasi otomatissensor.snapshot() menggunakan IMU untuk membalik / mencerminkan / mentransposisi bingkai saat rotasi otomatis diaktifkan.

  • rotation_corr() — ditambahkan kata kunci fov dan corners (perspektif 4-titik), beserta contoh koreksi perspektif.

  • lcd.init() — ditambahkan argumen kata kunci bgr.

  • collections.deque — diaktifkan dalam build MicroPython.

  • Ditambahkan konstanta id sensor.OV7690 dan sensor.HM01B0 serta contoh filter citra ulab bergaya numpy.

Perubahan dan peningkatan lainnya

  • Filter citra (median / mode / mean / …) dan find_circles() serta koreksi lensa dioptimalkan secara signifikan; alloc_extra_fb kini dapat mengalokasikan jumlah byte berapa pun; model deteksi orang dibangun ulang dengan operasi average-pool baru.

Perbaikan bug

Kamera dan sensor:

  • Memperbaiki sleep() OV2640 (kini menggunakan register standby COM2 alih-alih pin power-down), konfigurasi pin FSYNC, polaritas HSYNC/VSYNC dan alamat/pemindaian I2C HM01B0, GPIO power-down sensor Portenta dan pin reset kamera, serta menonaktifkan rotasi otomatis saat pitch IMU mendekati 90°/270°.

Pencitraan dan sistem:

  • Memperbaiki bug pemeriksaan batas filter citra, hardfault saat menonaktifkan D-cache, booting pada papan tanpa kartu SD, bug load_to_fb pada tf.load(), stack overflow deteksi orang (stack H7 dinaikkan menjadi ≥12 KB), dan offset deskriptor USB untuk mode kecepatan tinggi pada OpenMV 4 Plus.

Dukungan perangkat keras dan papan

  • Arduino Portenta H7 — bring-up papan awal (konfigurasi clock/OSC/HSE STM32H747, header CMSIS, ADC, SDRAM, Arduino USB PID).

  • HIMAX HM01B0 — driver kamera monokrom baru (Bayer, clock osilator eksternal).

  • OV7690 — driver kamera baru.

  • IMU LSM6DS3 — OpenMV 4 / Portenta.

Perubahan API yang merusak

Perubahan API yang terlihat pengguna antara v3.6.0 dan v3.6.1. Cakupan: modul C Python di modules/ dan pustaka Python di scripts/libraries/.

Setiap perubahan ditandai dengan dampaknya:

  • minor — API terbatas; hanya memengaruhi skrip yang menggunakannya.

  • behavior — API sama, hasil berbeda; periksa ulang skrip yang telah disetel.

Perubahan dikelompokkan berdasarkan dampak dalam urutan tersebut. Jika Anda hanya ingin memindahkan kode, langsung ke daftar periksa migrasi di bagian akhir. Setiap hash commit tertaut ke diff-nya di GitHub.

sensor.set_framerate() dihapus (minor)

Stub sensor.set_framerate() yang tidak melakukan apa-apa telah dihapus; memanggilnya kini akan menghasilkan AttributeError. Hapus pemanggilan tersebut dan kendalikan timing bingkai melalui framesize/exposure. (set_framerate() yang berfungsi diperkenalkan kembali di v4.0.2.)

Commits: 705e98f91

TensorFlow dihapus pada OpenMV Cam M7 (minor)

TensorFlow (modul tf) dinonaktifkan pada OpenMV Cam M7 / OpenMV 3 (tidak lagi muat). import tf pada M7 akan gagal — gunakan kamera kelas H7 untuk TensorFlow. (tf diaktifkan kembali pada F7 di v3.6.3.)

Commits: 2ae875077

set_pixformat() / set_framesize() mengembalikan None (behavior)

sensor.set_pixformat() dan sensor.set_framesize() kini mengembalikan None alih-alih True, dan format piksel yang tidak didukung kini menghasilkan ValueError alih-alih assertion. Kode yang memeriksa nilai kembalian (misalnya if sensor.set_pixformat(...):) harus berhenti melakukannya, dan kode yang menangkap AssertionError untuk format yang tidak didukung harus menangkap ValueError.

Commits: f314ac4e7

lens_corr() / linpolar() / logpolar() memerlukan dimensi genap (behavior)

image.lens_corr() dan image.linpolar() / image.logpolar() kini memerlukan lebar dan tinggi citra yang genap dan akan menghasilkan error pada dimensi ganjil. Potong atau ubah ukuran citra ke dimensi genap sebelum memanggil metode ini.

Commits: b36460a36, 2b26ca17b

Daftar periksa migrasi

Untuk migrasi bersih ke v3.6.1, pekerjaan yang umum dilakukan adalah:

  1. Hapus pemanggilan sensor.set_framerate() (penghapusan set_framerate).

  2. Pindahkan beban kerja TensorFlow dari OpenMV Cam M7 (perubahan TensorFlow M7).

  3. Berhenti mengandalkan nilai kembalian dari set_pixformat() / set_framesize() dan tangkap ValueError untuk format piksel yang tidak didukung (perubahan nilai kembalian).

  4. Pastikan dimensi citra genap sebelum memanggil lens_corr() / linpolar() / logpolar() (persyaratan dimensi genap).

Semua skrip lainnya berjalan tanpa perubahan.