tof — time-of-flight érzékelő meghajtó

A tof modul az OpenMV Camhez I2C-n keresztül csatlakoztatott time-of-flight (ToF) távolságmérő érzékelőket vezérli. Minden képkocka képpontonkénti mélységértéket ad vissza milliméterben egy 8x8-as zónarács esetén (VL53L5CX / VL53L8CX), amely a snapshot() segítségével önálló mélységképként jeleníthető meg, vagy a draw_depth() segítségével a CSI érzékelő látható fényű képkockájára komponálható, általában egy színpaletta, például az image.PALETTE_DEPTH segítségével.

Példa a használatra:

import csi
import tof

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)

tof.init()

while True:
    img = csi0.snapshot()
    depth, depth_min, depth_max = tof.read_depth()
    tof.draw_depth(img, depth)
    print("====================")
    print("Min depth in mm seen: %0.2f" % depth_min)
    print("Max depth in mm seen: %0.2f" % depth_max)

Ha a mélységtömböt/-képet 90 fok többszöröseivel szeretné elforgatni, adja át a következő hmirror/vflip/transpose kombinációkat a read_depth, draw_depth vagy snapshot függvénynek:

  • vflip=False, hmirror=False, transpose=False -> 0 fokos forgatás

  • vflip=True,  hmirror=False, transpose=True -> 90 fokos forgatás

  • vflip=True,  hmirror=True,  transpose=False -> 180 fokos forgatás

  • vflip=False, hmirror=True,  transpose=True -> 270 fokos forgatás

Függvények

tof.init(type: int = -1) None

Inicializál egy fedélzeti mélységérzékelőt.

A type jelzi a TOF érzékelő típusát:

Alapértelmezés szerint a type értéke -1, ami arra készteti a tof.init() függvényt, hogy az I2C-cím alapján automatikusan beolvassa és inicializálja a csatlakoztatott TOF érzékelőt.

tof.reset() None

Visszaállítja a mélységérzékelő állapotát.

tof.deinit() None

Felszabadítja a mélységérzékelőt, felszabadítva az erőforrásokat.

tof.width() int

Visszaadja a használatban lévő mélységérzékelő szélességét (vízszintes felbontását). RuntimeError kivételt vált ki, ha az érzékelő nincs inicializálva.

tof.height() int

Visszaadja a használatban lévő mélységérzékelő magasságát (függőleges felbontását). RuntimeError kivételt vált ki, ha az érzékelő nincs inicializálva.

tof.type() int

Visszaadja a használatban lévő mélységérzékelő típusát:

RuntimeError kivételt vált ki, ha az érzékelő nincs inicializálva.

tof.refresh() int

Visszaadja a használatban lévő mélységérzékelő frissítési gyakoriságát (Hz-ben):

RuntimeError kivételt vált ki, ha az érzékelő nincs inicializálva.

tof.read_depth(hmirror: bool = False, vflip: bool = False, transpose: bool = False, timeout: int = 100) Tuple[List[float], float, float]

Egy tuple-t ad vissza, amely tartalmazza a mélységlistát (width * height darab float érték mm-ben), a látott minimális mélységet és a látott maximális mélységet.

hmirror ha True, vízszintesen tükrözi a mélységtömböt.

vflip ha True, függőlegesen tükrözi a mélységtömböt.

transpose ha True, transzponálja a mélységtömböt.

timeout hány milliszekundumig várjon az új képkockára, mielőtt RuntimeError kivételt vált ki. Ha 0, örökké vár.

tof.draw_depth(image: image.Image, depth: List[float], x: int = 0, y: int = 0, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int = image.PALETTE_DEPTH, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None) None

Egy depth tömböt (a read_depth által visszaadott formában) rajzol az image képre, amelynek bal felső sarka az x, y helyen kezdődik.

Az x_scale szabályozza, hogy a megjelenített kép mennyire legyen átméretezve x irányban (float). Ha ez az érték negatív, a kép vízszintesen tükröződik. Ha nincs megadva, az y_scale értékéhez igazodik a képarány megtartásához.

Az y_scale szabályozza, hogy a megjelenített kép mennyire legyen átméretezve y irányban (float). Ha ez az érték negatív, a kép függőlegesen tükröződik. Ha nincs megadva, az x_scale értékéhez igazodik a képarány megtartásához.

A roi a forrás mélységtömb kirajzolandó érdeklődési terület téglalapját jelölő (x, y, w, h) tuple.

Az rgb_channel az a forrásból kinyerendő RGB csatorna (0=R, 1=G, 2=B). A -1 (alapértelmezett) minden csatornát használ.

Az alpha szabályozza, hogy a forrásból mennyi keveredik a célképbe. A 255 átlátszatlan, a 0 nem eredményez módosítást. Tartomány: 0-255.

A color_palette egy színpaletta-enum (pl. image.PALETTE_DEPTH, image.PALETTE_RAINBOW) vagy egy 256 képpontos RGB565 kép, amely színkikereső táblaként szolgál a szürkeárnyalatos mélységérték alapján.

Az alpha_palette ha nem None, egy 256 képpontos szürkeárnyalatos kép, amely alfa-kikereső táblaként szolgál, és képpontonként modulálja az alpha értéket.

A hint a következők logikai VAGY-a:

A scale egy kétértékű (min, max) tuple, amely a mélységkép méretezéséhez használt minimális és maximális mélységet (mm-ben) szabályozza. Alapértelmezés szerint a mélységtömb tényleges minimuma és maximuma.

Megjegyzés

A read_depth megjegyzi, ha transpose=True értékkel hívták meg, és a draw_depth ezt belsőleg használja a forrástömb méretezéséhez.

tof.snapshot(hmirror: bool = False, vflip: bool = False, transpose: bool = False, x_scale: float | None = None, y_scale: float | None = None, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int = image.PALETTE_DEPTH, alpha_palette: int | None = None, hint: int = 0, scale: Tuple[float, float] | None = None, pixformat: int = image.RGB565, copy_to_fb: bool = False, timeout: int = 100) image.Image

Beolvas egy képkockát a mélységérzékelőből, és egy új image.Image objektumot ad vissza, amely vagy image.GRAYSCALE, vagy image.RGB565.

hmirror ha True, vízszintesen tükrözi az új képet.

vflip ha True, függőlegesen tükrözi az új képet.

transpose ha True, transzponálja az új képet.

Az x_scale szabályozza, hogy a kép mennyire legyen átméretezve x irányban (float). A negatív értékek vízszintesen tükröznek. Ha nincs megadva, az y_scale értékéhez igazodik.

Az y_scale szabályozza, hogy a kép mennyire legyen átméretezve y irányban (float). A negatív értékek függőlegesen tükröznek. Ha nincs megadva, az x_scale értékéhez igazodik.

A roi a forrásból kinyerendő érdeklődési terület téglalapját jelölő (x, y, w, h) tuple.

Az rgb_channel a kinyerendő RGB csatorna (0=R, 1=G, 2=B). A -1 (alapértelmezett) minden csatornát használ.

Az alpha szabályozza a forrásból a célba történő keverést. A 255 átlátszatlan, a 0 változatlanul hagyja a célt. Tartomány: 0-255.

A color_palette egy színpaletta-enum (pl. image.PALETTE_DEPTH) vagy egy 256 képpontos RGB565 kép, amely színkikereső táblaként szolgál.

Az alpha_palette ha nem None, egy 256 képpontos szürkeárnyalatos kép, amely alfa-kikereső táblaként szolgál.

A hint a következők logikai VAGY-a:

A scale egy kétértékű (min, max) tuple, amely a kép méretezéséhez használt minimális és maximális mélységet (mm-ben) szabályozza. Alapértelmezés szerint a képkocka tényleges minimuma/maximuma.

A pixformat szabályozza a végső kép képpontformátumát. image.GRAYSCALE vagy image.RGB565 kell legyen.

A copy_to_fb ha True, az új képet a képkocka-pufferbe írja ahelyett, hogy a MicroPython heapen foglalna helyet.

timeout hány milliszekundumig várjon az új képkockára, mielőtt RuntimeError kivételt vált ki. Ha 0, örökké vár.

Konstansok

tof.TOF_VL53LX: int

VL53L5CX vagy VL53L8CX TOF érzékelő (8x8 képpont).