tof --- driver sensor time-of-flight

Modul tof menggerakkan sensor ranging time-of-flight (ToF) yang terhubung ke OpenMV Cam melalui I2C. Setiap bingkai mengembalikan nilai kedalaman per piksel dalam milimeter untuk grid zona 8x8 (VL53L5CX / VL53L8CX), yang dapat dirender sebagai citra kedalaman mandiri dengan snapshot() atau digabungkan ke bingkai cahaya tampak dari sensor CSI dengan draw_depth(), biasanya melalui palet warna seperti image.PALETTE_DEPTH.

Contoh penggunaan:

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)

Jika Anda ingin memutar array/citra kedalaman dengan kelipatan 90 derajat, berikan kombinasi hmirror/vflip/transpose berikut ke read_depth, draw_depth, atau snapshot:

  • vflip=False, hmirror=False, transpose=False -> rotasi 0 derajat

  • vflip=True,  hmirror=False, transpose=True -> rotasi 90 derajat

  • vflip=True,  hmirror=True,  transpose=False -> rotasi 180 derajat

  • vflip=False, hmirror=True,  transpose=True -> rotasi 270 derajat

Fungsi

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

Menginisialisasi sensor kedalaman onboard.

type menunjukkan jenis sensor TOF:

Secara default type adalah -1 yang menyebabkan tof.init() secara otomatis memindai dan menginisialisasi sensor TOF yang terpasang berdasarkan alamat I2C.

tof.reset() None

Mereset status sensor kedalaman.

tof.deinit() None

Mendeiinisialisasi sensor kedalaman dan membebaskan sumber daya.

tof.width() int

Mengembalikan lebar (resolusi horizontal) sensor kedalaman yang sedang digunakan. Memunculkan RuntimeError jika sensor tidak diinisialisasi.

tof.height() int

Mengembalikan tinggi (resolusi vertikal) sensor kedalaman yang sedang digunakan. Memunculkan RuntimeError jika sensor tidak diinisialisasi.

tof.type() int

Mengembalikan jenis sensor kedalaman yang sedang digunakan:

Memunculkan RuntimeError jika sensor tidak diinisialisasi.

tof.refresh() int

Mengembalikan laju penyegaran (dalam Hz) sensor kedalaman yang sedang digunakan:

Memunculkan RuntimeError jika sensor tidak diinisialisasi.

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

Mengembalikan tuple yang berisi daftar kedalaman (width * height float dalam mm), kedalaman minimum yang terlihat, dan kedalaman maksimum yang terlihat.

hmirror jika True mencerminkan array kedalaman secara horizontal.

vflip jika True membalik array kedalaman secara vertikal.

transpose jika True melakukan transpose pada array kedalaman.

timeout berapa milidetik untuk menunggu bingkai baru sebelum memunculkan RuntimeError. Jika 0 menunggu selamanya.

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

Menggambar array depth (seperti yang dikembalikan oleh read_depth) ke image yang pojok kiri atasnya dimulai dari lokasi x, y.

x_scale mengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah x (float). Jika nilai ini negatif, citra akan dicerminkan secara horizontal. Jika tidak ditentukan, nilainya mengikuti y_scale untuk mempertahankan rasio aspek.

y_scale mengontrol seberapa besar citra yang ditampilkan diskalakan dalam arah y (float). Jika nilai ini negatif, citra akan dibalik secara vertikal. Jika tidak ditentukan, nilainya mengikuti x_scale untuk mempertahankan rasio aspek.

roi adalah tuple persegi panjang wilayah yang diminati (x, y, w, h) dari array kedalaman sumber yang akan digambar.

rgb_channel adalah kanal RGB (0=R, 1=G, 2=B) yang diekstrak dari sumber. -1 (default) menggunakan semua kanal.

alpha mengontrol seberapa banyak sumber yang dicampur ke citra tujuan. 255 adalah buram, 0 tidak menghasilkan modifikasi. Rentang: 0-255.

color_palette adalah enum palet warna (mis. image.PALETTE_DEPTH, image.PALETTE_RAINBOW) atau citra RGB565 256-piksel yang digunakan sebagai tabel pencarian warna pada nilai kedalaman skala abu-abu.

alpha_palette jika tidak None adalah citra GRAYSCALE 256-piksel yang digunakan sebagai tabel pencarian alpha yang memodulasi alpha per piksel.

hint adalah OR logis dari:

scale adalah tuple dua nilai (min, max) yang mengontrol kedalaman minimum dan maksimum (dalam mm) yang digunakan untuk menskalakan citra kedalaman. Default ke nilai min dan maks aktual array kedalaman.

Catatan

read_depth mengingat apakah dipanggil dengan transpose=True dan draw_depth menggunakannya secara internal untuk menentukan ukuran array sumber.

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

Membaca bingkai dari sensor kedalaman dan mengembalikan objek image.Image baru yang berformat image.GRAYSCALE atau image.RGB565.

hmirror jika True mencerminkan citra baru secara horizontal.

vflip jika True membalik citra baru secara vertikal.

transpose jika True melakukan transpose pada citra baru.

x_scale mengontrol seberapa besar citra diskalakan dalam arah x (float). Nilai negatif membalik secara horizontal. Jika tidak ditentukan, nilainya mengikuti y_scale.

y_scale mengontrol seberapa besar citra diskalakan dalam arah y (float). Nilai negatif membalik secara vertikal. Jika tidak ditentukan, nilainya mengikuti x_scale.

roi adalah tuple persegi panjang wilayah yang diminati (x, y, w, h) dari sumber yang akan diekstrak.

rgb_channel adalah kanal RGB (0=R, 1=G, 2=B) yang diekstrak. -1 (default) menggunakan semua kanal.

alpha mengontrol pencampuran sumber-ke-tujuan. 255 adalah buram, 0 membiarkan tujuan tidak berubah. Rentang: 0-255.

color_palette adalah enum palet warna (mis. image.PALETTE_DEPTH) atau citra RGB565 256-piksel yang digunakan sebagai tabel pencarian warna.

alpha_palette jika tidak None adalah citra GRAYSCALE 256-piksel yang digunakan sebagai tabel pencarian alpha.

hint adalah OR logis dari:

scale adalah tuple dua nilai (min, max) yang mengontrol kedalaman minimum dan maksimum (dalam mm) yang digunakan untuk menskalakan citra. Default ke nilai min/maks aktual bingkai.

pixformat mengontrol format piksel citra akhir. Harus berupa image.GRAYSCALE atau image.RGB565.

copy_to_fb jika True menulis citra baru ke dalam buffer bingkai alih-alih mengalokasikannya di heap MicroPython.

timeout berapa milidetik untuk menunggu bingkai baru sebelum memunculkan RuntimeError. Jika 0 menunggu selamanya.

Konstanta

tof.TOF_VL53LX: int

Sensor TOF VL53L5CX atau VL53L8CX (8x8 piksel).