v4.6.0

v4.6.0 adalah rilis fitur utama. Sorotan utamanya: modul kamera diganti namanya dari sensor menjadi csi (dengan alias sensor yang kompatibel ke belakang), modul baru ml.postprocessing, dukungan untuk sensor event Prophesee GenX320, PAG7936, dan kamera termal FLIR Boson, bootloader DFU berbasis TinyUSB baru, akselerasi GPU Nema, dan MicroPython 1.24. Rilis ini juga mengubah rentang alpha gambar, jadi bacalah perubahan yang merusak di bawah ini.

Sorotan

  • sensor kini juga csi — modul kamera diganti namanya menjadi csi; sensor tetap tersedia sebagai alias yang kompatibel ke belakang (belum perlu mengubah kode).

  • Modul ml.postprocessing barufomo_postprocess, yolo_v2_postprocess, yolo_v5_postprocess.

  • Sensor baru — kamera event Prophesee GenX320, PAG7936, dan termal FLIR Boson 320/640.

  • Bootloader DFU baru — bootloader DFU standar berbasis TinyUSB menggantikan bootloader CDC lama pada semua board.

  • GPU Nema — grafis 2D/vektor yang dipercepat pada STM32.

  • MicroPython diperbarui ke 1.24.0.

  • Perubahan merusak: rentang alpha gambar berubah dari 0–256 menjadi 0–255 (lihat perubahan rentang alpha).

Fitur baru

  • ml.postprocessing — modul baru untuk mendekode keluaran model: dekoder FOMO (fomo_postprocess, find_blobs + NMS, threshold yang dapat dikonfigurasi) dan yolo_v2_postprocess / yolo_v5_postprocess (dengan threshold, anchors, nms_threshold, nms_sigma).

  • Visualisasi kamera event — metode Image.to_evt_dark() / Image.to_evt_light() baru dan palet warna PALETTE_EVT_DARK / PALETTE_EVT_LIGHT.

  • Visualisasi kedalaman — metode Image.to_depth() baru dan palet warna PALETTE_DEPTH (pada board yang mendukung ToF).

  • Introspeksi sensor — ioctl IOCTL_GET_RGB_STATS baru yang mengembalikan tuple statistik kanal (R, Gb, Gr, B).

  • Preset bias GenX320 — ioctl IOCTL_GENX320_SET_BIASES baru dengan preset GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED.

  • omv.debug_mode() — fungsi baru untuk mengetahui apakah antarmuka debug USB sedang aktif.

  • GPU Nema — integrasi driver NemaGFX/NemaVG Cortex-M55 pada STM32, dengan pemrosesan GPU in-place untuk draw_image.

  • PAG7936 — ditambahkan keluaran color-bar, auto-exposure / auto-gain, mode sleep, dan mode MIPI.

Perubahan dan perbaikan lainnya

  • MicroPython diperbarui ke 1.24.0; ulab diperbarui ke 6.7.3 (menambahkan keepdims).

  • Skrip boot umum — STM32 / i.MX RT / RP2 kini berbagi _boot.py yang secara otomatis membuat filesystem flash/SD dengan main.py dan README.txt bawaan, serta membebaskan variabel global sementara saat startup.

  • Persiapan STM32N6 — dukungan dasar STM32N6, driver XSPI, driver MPU umum, dan penandatanganan firmware/bootloader pada STM32.

  • VM computed-goto — diaktifkan pada STM32 dan nRF untuk mempercepat interpreter.

Perbaikan bug

Kamera dan sensor:

  • Memperbaiki perhitungan PCLK/eksposur OV5640 (dua jalur MIPI, tabel pembagi yang dikoreksi).

  • Varian Bayer-CFA MT9V0xx kini menerima RGB565/BAYER/GRAYSCALE dan menghasilkan data Bayer mentah yang benar, bukan error.

  • Mengaktifkan koreksi lens-shading PAG7936 dan memperbaiki pergeseran citra HD; set_framerate() kini dibatasi sesuai resolusi.

  • Memperbaiki pengambilan gambar termal FLIR Lepton pada i.MX RT1060 (mengoreksi VoSPI CPOL/CPHA), dan snapshot Lepton kini mengembalikan kode error yang spesifik.

  • Memperbaiki pembulatan frekuensi GenX320.

Pemrosesan citra:

  • Memperbaiki kerusakan memori dalam to_ndarray() pada citra skala abu-abu.

  • Memperbaiki prediksi batas debayer dalam konversi Bayer→RGB/skala abu-abu.

  • Memperbaiki transpose pada draw_image() di board tanpa SDRAM (buffer berpotongan).

  • Memperbaiki penanganan argumen boolean dalam Image.binary() dan flag load_to_fb pada ml.Model.

Sistem:

  • Memperbaiki konfigurasi pin RX-only / TX-only SPI pada STM32 dan i.MX RT.

  • Memindahkan buffer DMA Ethernet Portenta H7 ke SRAM3 agar Ethernet berfungsi.

  • Memperbaiki karakter yang hilang dalam keluaran teks saluran debug melalui USB; membulatkan ukuran alokasi dinamis ML ke atas untuk menghindari buffer model yang terlalu kecil.

Dukungan hardware dan board

  • Sensor visi berbasis event Prophesee GenX320 (STM32F7 + i.MX RT1060).

  • Sensor PAG7936 (dengan mode MIPI).

  • Kamera termal FLIR Boson 320/640 (driver IDD 4).

  • Akselerasi GPU Nema pada STM32.

  • Persiapan bootloader/XSPI STM32N6.

  • VL53L5CX — ditambahkan dukungan pin power-enable.

Perubahan API yang merusak

Perubahan API yang terlihat pengguna antara v4.5.9 dan v4.6.0. Cakupan: C-module Python dalam modules/ dan library Python dalam scripts/libraries/.

Setiap perubahan diberi tag dengan dampaknya:

  • major — sebagian besar skrip yang menggunakannya perlu diedit.

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

  • behavior — API sama, hasil berbeda; periksa kembali skrip yang sudah disetel.

  • tooling — hanya memengaruhi flashing / host tools / ketersediaan board.

Perubahan dikelompokkan berdasarkan dampak dalam urutan tersebut. Jika Anda hanya ingin memindahkan kode, langsung ke daftar periksa migrasi di akhir. Setiap hash commit menautkan ke diff-nya di GitHub. Catatan: penggantian nama modul sensorcsi dalam rilis ini tidak merusak — sensor masih berfungsi sebagai alias.

Rentang alpha gambar kini 0–255 (major)

Argumen alpha pada draw_image() dan setiap overlay yang menggunakannya (FIR, ToF, display, TV, MJPEG, tabel alpha) kini menggunakan rentang 0–255 alih-alih 0–256. Skrip yang meneruskan 256 untuk sepenuhnya buram, atau menghitung alpha terhadap 256, harus diskalakan ulang ke 0–255.

Commit: 1f87b5bb6

Konstanta ioctl FLIR Lepton diganti nama (minor)

Tiga konstanta ioctl Lepton dipersingkat: IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP. Contoh yang disertakan telah diperbarui.

Commit: 12582d54d

Perubahan API post-processing ML (minor)

ml.postprocessing baru dalam rilis ini dan API-nya berubah selama rilis berlangsung: kata kunci konstruktor yolo_v2_postprocess score_threshold diganti nama menjadi threshold, dan hasil post-processing yang kosong kini mengembalikan () alih-alih []. Model bawaan yolov5_rgb_person diganti nama menjadi yolo_v5_224_nano. ml.apps.MicroSpeech kini meneruskan **kwargs sembarang ke audio.init() alih-alih nilai tetap gain_db=24.

Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST adalah detektor sudut bawaan (behavior)

find_keypoints() kini menggunakan AGAST alih-alih FAST sebagai detektor sudut bawaan pada semua board. Set titik kunci (dan oleh karena itu pencocokan deskriptor) berbeda dari rilis sebelumnya — periksa kembali pipeline titik kunci yang sudah disetel. Streaming buffer bingkai IDE juga kini dibatasi pada 20 Hz untuk mengurangi beban USB.

Commits: da6bf6910, bc4e39246

Bootloader, board, dan fitur yang dihapus (tooling)

Bootloader CDC lama digantikan oleh bootloader DFU standar berbasis TinyUSB baru pada semua board — mekanisme pembaruan firmware berubah; perbarui alur kerja/tooling flashing Anda sesuai. Board OpenMV Pro, build Raspberry Pi Pico mandiri, dan fitur IDE-jarak-jauh WiFi-debug (wifidbg) telah dihapus.

Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

Daftar periksa migrasi

Untuk migrasi bersih ke v4.6.0, pekerjaan yang umum dilakukan adalah:

  1. Skalakan ulang setiap nilai alpha gambar/overlay dari rentang 0–256 ke 0–255 (perubahan rentang alpha).

  2. Ganti nama konstanta ioctl FLIR Lepton ke bentuk yang dipersingkat (penggantian nama ioctl Lepton).

  3. Jika Anda menggunakan post-processor ML baru, ganti score_threshold menjadi threshold, tangani hasil kosong (), dan perbarui nama model menjadi yolo_v5_224_nano (perubahan ML).

  4. Periksa kembali pipeline berbasis find_keypoints() untuk perubahan detektor AGAST (perubahan detektor sudut).

  5. Perbarui alur kerja flashing firmware untuk bootloader DFU baru (perubahan bootloader/board).