LeRobot documentation

Kameralar

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Kameralar

LeRobot, video yakalama için birden fazla seçenek sunar:

SınıfDesteklenen Kameralar
OpenCVCameraTelefon, yerleşik dizüstü bilgisayar, USB web kameraları
ZMQCameraAğ bağlantılı kameralar
RealSenseCameraIntel RealSense (derinlik ile)
Reachy2CameraReachy 2 robot kameraları

OpenCVCamera uyumluluk ayrıntıları için OpenCV ile Video G/Ç Genel Bakış başlığını inceleyin.

Kameranızı bulun

Her kamera, birden fazla bağlı cihaz arasında ayrım yapmanıza olanak tanıyan benzersiz bir tanımlayıcı ile örneklenmelidir.

OpenCVCamera ve RealSenseCamera otomatik algılama özelliğini destekler. Kullanılabilir cihazları ve tanımlayıcılarını listelemek için aşağıdaki komutu çalıştırın. İşletim sisteminize bağlı olarak bu tanımlayıcılar, bilgisayarınızı yeniden başlattıktan veya kamerayı yeniden takıp çıkardıktan sonra değişebilir.

lerobot-find-cameras opencv # or realsense for Intel Realsense cameras

İki kamera bağlıysa çıktı aşağıdaki gibi görünecektir:

--- Detected Cameras ---
Camera #0:
  Name: OpenCV Camera @ 0
  Type: OpenCV
  Id: 0
  Backend api: AVFOUNDATION
  Default stream profile:
    Format: 16.0
    Width: 1920
    Height: 1080
    Fps: 15.0
--------------------
(more cameras ...)

macOS üzerinde Intel RealSense kameralarını kullanırken bu hatayı alabilirsiniz: Error finding RealSense cameras: failed to set power state. Bu sorun, aynı komutu sudo izinleriyle çalıştırılarak çözülebilir. macOS üzerinde RealSense kameralarının kullanımı istikrarsızdır.

ZMQCamera ve Reachy2Camera otomatik keşfi desteklemez. Ağ adresi ve portu veya robot SDK ayarları sağlanarak manuel olarak yapılandırılmalıdır.

Kamera yerleşimi ve aydınlatma

Kamera görüntüleri, politikanızın öğrenme kaynağıdır; bu nedenle yüksek çözünürlükten çok iyi bir kamera kurulumu daha önemlidir:

  • Sahneyi eşit şekilde aydınlatın. Yayılmış, tutarlı bir ışık kullanın ve doğrudan güneş ışığı, güçlü yansımalar ve hareketli gölgelerden kaçının. Kayıt ve dağıtım arasındaki aydınlatma farkları, bir politikanın başarısız olmasına neden olabilir.
  • Kameraları sabitleyin. Onları rijit bir şekilde monte edin ve kayıt oturumları arasında veya kayıt ile dağıtım arasında hareket ettirmeyin.
  • Görevi çerçeveleyin. Nesne, kavrama mekanizması ve hedef en az bir kamerada görünür olmalıdır. İyi bir test: Görevi yalnızca kamera görüntülerine bakarak kendiniz yapabilir misiniz?
  • Çözünürlüğü makul tutun. Çoğu görev için 640×480 ve 30 fps yeterlidir ve kayıt ile eğitimi hızlı tutar.

Kameraları kullanın

Çerçeve erişim modları

Tüm kamera sınıfları, kare yakalama için üç erişim modunu uygular:

YöntemDavranışBloklar mı?En Uygun Olduğu Alan
read()Kamera donanımının bir kare döndürmesini bekler. Kamera ve SDK'ya bağlı olarak uzun süre bloklanabilir.EvetBasit betikler, ardışık yakalama
async_read(timeout_ms)Arka plan iş parçacığından en son tüketilmemiş çerçeveyi döndürür. Yalnızca tampon boşsa, timeout_ms kadar bloklanır. Hiçbir çerçeve gelmezse TimeoutError fırlatılır.Zaman aşımı ileKamera FPS'ine senkronize edilmiş kontrol döngüleri
read_latest(max_age_ms)Tampondaki en son kareye bakar (esnek olabilir). Kare max_age_ms değerinden eskiyse TimeoutError fırlatır.HayırArayüz görselleştirme, günlük kaydı, izleme

Kullanım örnekleri

Aşağıdaki örnekler, farklı kamera türlerinden kare yapılandırmak ve yakalamak için kamera API'sinin nasıl kullanılacağını gösterir.

  • OpenCV tabanlı bir kamera ile engelleyici ve engelleyici olmayan kare yakalama
  • Intel RealSense kamera ile Renk ve derinlik yakalama

Kameraların temiz bir şekilde bağlantısının kesilmemesi kaynak sızıntılarına neden olabilir. Otomatik temizleme işlemini sağlamak için bağlam yöneticisi protokolünü kullanın:

with OpenCVCamera(config) as camera:
    ...

connect() ve disconnect() fonksiyonlarını manuel olarak da çağırabilirsiniz ancak ikincisi için her zaman bir finally bloğu kullanın.

Açık CV Kamera
Intel Realsense Kamera
from lerobot.cameras.opencv import OpenCVCamera, OpenCVCameraConfig
from lerobot.cameras import ColorMode, Cv2Rotation

# Construct an `OpenCVCameraConfig` with your desired FPS, resolution, color mode, and rotation.
config = OpenCVCameraConfig(
    index_or_path=0,
    fps=15,
    width=1920,
    height=1080,
    color_mode=ColorMode.RGB,
    rotation=Cv2Rotation.NO_ROTATION
)

# Instantiate and connect an `OpenCVCamera`, performing a warm-up read (default).
with OpenCVCamera(config) as camera:

    # Read a frame synchronously — blocks until hardware delivers a new frame
    frame = camera.read()
    print(f"read() call returned frame with shape:", frame.shape)

    # Read a frame asynchronously with a timeout — returns the latest unconsumed frame or waits up to timeout_ms for a new one
    try:
        for i in range(10):
            frame = camera.async_read(timeout_ms=200)
            print(f"async_read call returned frame {i} with shape:", frame.shape)
    except TimeoutError as e:
        print(f"No frame received within timeout: {e}")

    # Instantly return a frame - returns the most recent frame captured by the camera
    try:
        initial_frame = camera.read_latest(max_age_ms=1000)
        for i in range(10):
            frame = camera.read_latest(max_age_ms=1000)
            print(f"read_latest call returned frame {i} with shape:", frame.shape)
            print(f"Was a new frame received by the camera? {not (initial_frame == frame).any()}")
    except TimeoutError as e:
        print(f"Frame too old: {e}")

Derinlikle çalışma

Intel RealSense ve Reachy 2 kameraları, renk ve derinlik verilerini eş zamanlı olarak yakalayabilir. read() çağrısı, renk karesini (H, W, 3) uint8 olarak döndürür. read_depth() çağrısı ise derinlik haritasını (H, W, 1) uint16 olarak döndürür; bu haritada her piksel değeri, sensöre olan mesafenin milimetre cinsinden ifadesidir. 0 piksel değeri genellikle “ölçüm mevcut değil” (menzil dışı, tıkanmış veya düşük güven) anlamına gelir.

Kayıt sırasında, kontrol döngüsü en güncel tamponlanmış kareleri read_latest() (renk) ve read_latest_depth() (derinlik) ile engellemeden okur ve derinlik haritasını bir kardeş özellik olarak ekler (ör. front yanında front_depth).

Bir veri seti kaydedilirken derinlik akışlarının nasıl saklandığı ve kodlandığı hakkında bilgi için, video kodlama kılavuzundaki Derinlik akışları bölümüne bakın.

Telefonunuzun kamerasını kullanın

iPhone ve macOS
OBS sanal kamera

macOS'ta iPhone'unuzu kamera olarak kullanmak için Continuity Camera özelliğini etkinleştirin:

  • Mac'inizin macOS 13 veya daha yeni bir sürüm çalıştırdığından ve iPhone'unuzun iOS 16 veya daha yeni bir sürümde olduğundan emin olun.
  • Her iki cihazda da aynı Apple Kimliği ile oturum açın.
  • Cihazlarınızı bir USB kablosuyla bağlayın veya kablosuz bağlantı için Wi-Fi ve Bluetooth'u açın.

Daha fazla ayrıntı için Apple destek sayfasını ziyaret edin.

Her şey doğru şekilde yapılandırıldıysa, telefonunuz standart bir OpenCV kamerası olarak görünecek ve OpenCVCamera ile kullanılabilir olacaktır.

Update on GitHub