v3.6.1

v3.6.1 je veliko izdanje. Uvodi modul imu (LSM6DS3), niz novih getter API-ja za sensor s automatskom rotacijom vođenom IMU-om, korekciju perspektive u 4 točke pomoću rotation_corr() te omogućuje rad Arduino Portenta H7 s kamerama HIMAX HM01B0 i OV7690. Promijenjeno je nekoliko sensor / image API-ja, a TensorFlow je uklonjen na M7 — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Najvažnije

  • imu modul — akcelerometar / žiroskop / temperatura / valjanje / nagib na LSM6DS3 (OpenMV 4 / Portenta).

  • Sensor getteri + automatska rotacijaget_pixformat() / get_framesize() / get_hmirror() / get_vflip() / get_windowing(), set_transpose() / set_auto_rotation() i rotacija snimke vođena IMU-om.

  • Korekcija perspektiverotation_corr() dobiva ključne riječi fov i corners (4 točke).

  • Novi hardver — Arduino Portenta H7, HIMAX HM01B0 i kamera OV7690.

  • Narušava kompatibilnost: set_pixformat() / set_framesize() sada vraćaju None, sensor.set_framerate() je uklonjen, TensorFlow je uklonjen na M7, a lens_corr() / linpolar() sada zahtijevaju parne dimenzije — pogledajte promjene koje narušavaju kompatibilnost.

Nove značajke

  • imu — novi IMU modul: imu.acceleration_mg(), imu.angular_rate_mdps(), imu.temperature_c(), imu.roll(), imu.pitch() i imu.sleep() (LSM6DS3 na OpenMV 4 / Portenta).

  • Sensor getteri — dodani sensor.get_pixformat(), get_framesize(), get_hmirror(), get_vflip(), get_windowing(), set_transpose() / get_transpose() i set_auto_rotation() / get_auto_rotation().

  • Automatska rotacijasensor.snapshot() koristi IMU za zrcaljenje / okretanje / transponiranje sličica kada je automatska rotacija omogućena.

  • rotation_corr() — dodane ključne riječi fov i corners (perspektiva u 4 točke), s primjerima korekcije perspektive.

  • lcd.init() — dodan ključni argument bgr.

  • collections.deque — omogućen u MicroPython buildu.

  • Dodane su id konstante sensor.OV7690 i sensor.HM01B0 te primjer filtriranja slike sličan numpy-u pomoću ulab.

Ostale promjene i poboljšanja

  • Znatno su optimizirani filtri slike (median / mode / mean / …) te find_circles() i korekcija leće; alloc_extra_fb sada može alocirati bilo koji broj bajtova; model za detekciju osoba ponovno je izgrađen s novom average-pool operacijom.

Ispravci grešaka

Kamera i senzori:

  • Ispravljen je OV2640 sleep() (sada koristi COM2 standby registar umjesto power-down pina), konfiguracija FSYNC pina, polaritet HM01B0 HSYNC/VSYNC i I2C adresa/skeniranje, GPIO za isključivanje napajanja Portenta senzora i reset pin kamere te je onemogućena automatska rotacija kada je nagib IMU-a blizu 90°/270°.

Obrada slike i sustav:

  • Ispravljena je greška u provjeri granica filtra slike, hardfault pri onemogućavanju D-cachea, pokretanje na pločama bez SD kartice, greška load_to_fb u tf.load(), preljev stoga pri detekciji osoba (H7 stog povećan na ≥12 KB) te pomaci USB deskriptora za high-speed način rada na OpenMV 4 Plus.

Hardver i podrška za ploče

  • Arduino Portenta H7 — početno osposobljavanje ploče (STM32H747 clock/OSC/HSE konfiguracija, CMSIS zaglavlja, ADC, SDRAM, Arduino USB PID).

  • HIMAX HM01B0 — novi upravljački program za monokromnu kameru (Bayer, vanjski oscilatorski takt).

  • OV7690 — novi upravljački program za kameru.

  • LSM6DS3 IMU — OpenMV 4 / Portenta.

Promjene API-ja koje narušavaju kompatibilnost

Promjene API-ja vidljive korisniku između v3.6.0 i v3.6.1. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Svaka je promjena označena svojim utjecajem:

  • minor — uski API; utječe samo na skripte koje su ga koristile.

  • behavior — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.

Promjene su grupirane prema utjecaju tim redoslijedom. Ako samo želite prenijeti svoj kôd, prijeđite na kontrolni popis za migraciju na kraju. Svaki hash commita vodi na svoj diff na GitHubu.

sensor.set_framerate() uklonjen (minor)

Uklonjen je no-op stub sensor.set_framerate(); njegovo pozivanje sada izaziva AttributeError. Uklonite poziv i upravljajte vremenom sličica putem framesize/ekspozicije. (Funkcionalni set_framerate() ponovno je uveden u v4.0.2.)

Commiti: 705e98f91

TensorFlow uklonjen na OpenMV Cam M7 (minor)

TensorFlow (modul tf) je onemogućen na OpenMV Cam M7 / OpenMV 3 (više ne stane). import tf na M7 ne uspijeva — koristite kameru klase H7 za TensorFlow. (tf je ponovno omogućen na F7 u v3.6.3.)

Commiti: 2ae875077

set_pixformat() / set_framesize() vraćaju None (behavior)

sensor.set_pixformat() i sensor.set_framesize() sada vraćaju None umjesto True, a nepodržani format piksela sada izaziva ValueError umjesto tvrdnje (assertion). Kôd koji je provjeravao povratnu vrijednost (npr. if sensor.set_pixformat(...):) to više ne smije raditi, a kôd koji je hvatao AssertionError za nepodržane formate mora hvatati ValueError.

Commiti: f314ac4e7

lens_corr() / linpolar() / logpolar() zahtijevaju parne dimenzije (behavior)

image.lens_corr() i image.linpolar() / image.logpolar() sada zahtijevaju parnu širinu i visinu slike te izazivaju grešku kod neparnih dimenzija. Izrežite ili promijenite veličinu slike na parne dimenzije prije pozivanja ovih metoda.

Commiti: b36460a36, 2b26ca17b

Kontrolni popis za migraciju

Za čist prijenos na v3.6.1 tipičan posao je:

  1. Uklonite pozive sensor.set_framerate() (uklanjanje set_framerate).

  2. Premjestite TensorFlow opterećenja s OpenMV Cam M7 (promjena TensorFlowa na M7).

  3. Prestanite se oslanjati na povratnu vrijednost set_pixformat() / set_framesize() i hvatajte ValueError za nepodržane formate piksela (promjena povratne vrijednosti).

  4. Osigurajte parne dimenzije slike prije lens_corr() / linpolar() / logpolar() (zahtjev za parnim dimenzijama).

Sve ostale skripte rade nepromijenjeno.