tof — uçuş süresi sensörü sürücüsü

tof modülü, bir OpenMV Cam’e I2C üzerinden bağlı uçuş süresi (ToF) mesafe ölçüm sensörlerini sürer. Her çerçeve, 8x8 bölge ızgarası (VL53L5CX / VL53L8CX) için piksel başına milimetre cinsinden bir derinlik değeri döndürür; bu değer snapshot() ile bağımsız bir derinlik görüntüsü olarak işlenebilir veya genellikle image.PALETTE_DEPTH gibi bir renk paleti aracılığıyla draw_depth() ile CSI sensöründen alınan görünür ışık çerçevesi üzerine bindirilebilir.

Örnek kullanım:

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)

Derinlik dizisini/görüntüsünü 90 derecenin katları kadar döndürmek istiyorsanız, read_depth, draw_depth veya snapshot öğelerine aşağıdaki hmirror/vflip/transpose kombinasyonlarını iletin:

  • vflip=False, hmirror=False, transpose=False -> 0 derece döndürme

  • vflip=True,  hmirror=False, transpose=True -> 90 derece döndürme

  • vflip=True,  hmirror=True,  transpose=False -> 180 derece döndürme

  • vflip=False, hmirror=True,  transpose=True -> 270 derece döndürme

İşlevler

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

Yerleşik bir derinlik sensörünü başlatır.

type TOF sensörünün türünü belirtir:

Varsayılan olarak type değeri -1 olup, bu da tof.init() öğesinin I2C adresine göre bağlı bir TOF sensörünü otomatik olarak taramasına ve başlatmasına neden olur.

tof.reset() None

Derinlik sensörü durumunu sıfırlar.

tof.deinit() None

Derinlik sensörünü kapatarak kaynakları serbest bırakır.

tof.width() int

Kullanımdaki derinlik sensörünün genişliğini (yatay çözünürlük) döndürür. Sensör başlatılmamışsa bir RuntimeError oluşturur.

tof.height() int

Kullanımdaki derinlik sensörünün yüksekliğini (dikey çözünürlük) döndürür. Sensör başlatılmamışsa bir RuntimeError oluşturur.

tof.type() int

Kullanımdaki derinlik sensörünün türünü döndürür:

Sensör başlatılmamışsa bir RuntimeError oluşturur.

tof.refresh() int

Kullanımdaki derinlik sensörünün yenileme hızını (Hz cinsinden) döndürür:

Sensör başlatılmamışsa bir RuntimeError oluşturur.

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

Derinlik listesini (mm cinsinden width * height adet float), görülen minimum derinliği ve görülen maksimum derinliği içeren bir demet döndürür.

hmirror eğer True ise derinlik dizisini yatay olarak yansıtır.

vflip eğer True ise derinlik dizisini dikey olarak çevirir.

transpose eğer True ise derinlik dizisinin devriğini alır.

timeout yeni çerçeve için bir RuntimeError oluşturmadan önce kaç milisaniye bekleneceğini belirtir. 0 ise sonsuza kadar bekler.

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

Bir depth dizisini (read_depth tarafından döndürüldüğü gibi) sol üst köşesi x, y konumundan başlayacak şekilde image üzerine çizer.

x_scale görüntülenen görüntünün x yönünde ne kadar ölçekleneceğini kontrol eder (float). Bu değer negatifse görüntü yatay olarak çevrilir. Belirtilmezse en boy oranını korumak için y_scale ile eşleşir.

y_scale görüntülenen görüntünün y yönünde ne kadar ölçekleneceğini kontrol eder (float). Bu değer negatifse görüntü dikey olarak çevrilir. Belirtilmezse en boy oranını korumak için x_scale ile eşleşir.

roi çizilecek kaynak derinlik dizisinin ilgi bölgesi dikdörtgeni demetidir (x, y, w, h).

rgb_channel kaynaktan çıkarılacak RGB kanalıdır (0=R, 1=G, 2=B). -1 (varsayılan) tüm kanalları kullanır.

alpha kaynağın hedef görüntüye ne kadar karıştırılacağını kontrol eder. 255 opaktır, 0 herhangi bir değişiklik yapmaz. Aralık: 0-255.

color_palette bir renk paleti enum’u (örneğin image.PALETTE_DEPTH, image.PALETTE_RAINBOW) veya gri tonlama derinlik değeri üzerinde renk arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.

alpha_palette None değilse, piksel başına alpha değerini modüle eden alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.

hint aşağıdakilerin mantıksal VEYA işlemidir:

scale derinlik görüntüsünü ölçeklemek için kullanılan minimum ve maksimum derinliği (mm cinsinden) kontrol eden iki değerli bir demettir (min, max). Varsayılan olarak derinlik dizisinin gerçek min ve max değerleridir.

Not

read_depth, transpose=True ile çağrılıp çağrılmadığını hatırlar ve draw_depth kaynak diziyi boyutlandırmak için bunu dahili olarak kullanır.

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

Derinlik sensöründen bir çerçeve okur ve image.GRAYSCALE veya image.RGB565 türünde yeni bir image.Image nesnesi döndürür.

hmirror eğer True ise yeni görüntüyü yatay olarak yansıtır.

vflip eğer True ise yeni görüntüyü dikey olarak çevirir.

transpose eğer True ise yeni görüntünün devriğini alır.

x_scale görüntünün x yönünde ne kadar ölçekleneceğini kontrol eder (float). Negatif değerler yatay olarak çevirir. Belirtilmezse y_scale ile eşleşir.

y_scale görüntünün y yönünde ne kadar ölçekleneceğini kontrol eder (float). Negatif değerler dikey olarak çevirir. Belirtilmezse x_scale ile eşleşir.

roi çıkarılacak kaynağın ilgi bölgesi dikdörtgeni demetidir (x, y, w, h).

rgb_channel çıkarılacak RGB kanalıdır (0=R, 1=G, 2=B). -1 (varsayılan) tüm kanalları kullanır.

alpha kaynaktan hedefe karıştırmayı kontrol eder. 255 opaktır, 0 hedefi değiştirmeden bırakır. Aralık: 0-255.

color_palette bir renk paleti enum’u (örneğin image.PALETTE_DEPTH) veya renk arama tablosu olarak kullanılan 256 piksellik bir RGB565 görüntüsüdür.

alpha_palette None değilse, alfa arama tablosu olarak kullanılan 256 piksellik bir GRAYSCALE görüntüsüdür.

hint aşağıdakilerin mantıksal VEYA işlemidir:

scale görüntüyü ölçeklemek için kullanılan minimum ve maksimum derinliği (mm cinsinden) kontrol eden iki değerli bir demettir (min, max). Varsayılan olarak çerçevenin gerçek min/max değerleridir.

pixformat son görüntü piksel formatını kontrol eder. image.GRAYSCALE veya image.RGB565 olmalıdır.

copy_to_fb eğer True ise yeni görüntüyü MicroPython yığınında tahsis etmek yerine çerçeve arabelleğine yazar.

timeout yeni çerçeve için bir RuntimeError oluşturmadan önce kaç milisaniye bekleneceğini belirtir. 0 ise sonsuza kadar bekler.

Sabitler

tof.TOF_VL53LX: int

VL53L5CX veya VL53L8CX TOF sensörü (8x8 piksel).