LeRobot documentation

Ortam İşleyicileri

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ortam İşleyicileri

Ortam işleyicileri, politikanın kendi işleyicilerinden önce ortamın gözlemlerini, ortamdan önce ise politikanın eylemlerini dönüştürür. Her ortam yapılandırması, çiftini get_env_processors() üzerinden döndürür ve make_env_pre_post_processors, değerlendirme, eğitim sırasında değerlendirme ve sim robotu için bunları oluşturur.

Simüle ortamların hiçbiri gerekmez

Simüle ortamlar, politika tarafından zaten kanonik olarak erişilir: görüntüler observation.images.<camera> (veya observation.image) olarak, durum ise tek bir düz observation.state olarak iletilir; her simülatörün görüntü yönelimi ve durum kompozisyonu, değerlendirme, rollout ve kayıt için, yerel veya sunulan (bkz. Simülasyon: yerel veya sunulan) her durumda, bir kez src/lerobot/sim/integrations/<simulator>.py entegrasyonu tarafından ele alınır. Örneğin LIBERO için, gözlem adaptörü her iki kamerayı da çevirir ve 8 boyutlu durumu (uç efektor konumu, eksen-açı yönelimi, kavrama eklemeleri) oluşturur; bu nedenle ortam işleyicileri kimlik (identity) işlemidir.

Yeni bir simülatörün gözlem eşlemesini entegrasyonuna, kontrol kurallarını ise o entegrasyonun conventions() fonksiyonuna, bir ortam işleyicisine (environment processor) değil, yerleştirin; böylece sim robotu ve sunulan ortam da bunlardan yararlanır (bkz. Bir benchmark ekleme).

Bir ortam işleyicisi hâlâ bir araçken

  • lerobot.sim dışındaki ortamlar. Isaac Lab Arena, kendi deposundaki make_env üzerinden çalışır ve toplu (batched) torch gözlemleri kullanır; IsaaclabArenaProcessorStep, durum anahtarlarını seçip birleştirir ve kameralarını dönüştürür.
  • Politika bazlı ortam uyarlamaları. make_env_pre_post_processors, bir politikanın ortam çiftini değiştirmesine olanak tanır; XVLA ve Cosmos3, LIBERO için bunu yapar.

Evaluation, ortam işleyicilerinin ürettiklerini bir checkpoint üzerinde kabul eder: ön işleyiciden sonraki gözlem ve son işleyiciden sonraki eylem, her ikisi de transform_features içinden okunur. Bu nedenle bir adım, çalışma zamanındaki davranışını yansıtacak şekilde çıktısını girdisinin bir fonksiyonu olarak orada beyan eder; örneğin, kaynak anahtarı mevcut olduğunda durumu yalnızca o zaman oluşturan bir adım. Uzaktan çıkarım hiçbir ortam işleyicisi uygulamaz, bu nedenle orada sunulan bir checkpoint, simülatörün gözlem ve komutunu kendisi eylemine dönüştürmelidir.

Değerlendirme sırasında işleme sırası şudur:

observation = env_preprocessor(observation)   # environment-specific
observation = preprocessor(observation)       # policy's saved preprocessing (normalization, ...)
action = postprocessor(policy.select_action(observation))
action = env_postprocessor(action)            # environment-specific

Biri yazma

Bir ortam işlemcisi, yapılandırmadan döndürülen sıradan bir işlemci adımıdır:

from dataclasses import dataclass

from lerobot.envs.configs import EnvConfig
from lerobot.processor import ObservationProcessorStep, PolicyProcessorPipeline, ProcessorStepRegistry


@dataclass
@ProcessorStepRegistry.register(name="myenv_processor")
class MyEnvProcessorStep(ObservationProcessorStep):
    def observation(self, observation):
        processed = observation.copy()
        processed["observation.state"] = processed.pop("observation.myenv_state")
        return processed

    def transform_features(self, features):
        return features  # update if names or shapes change


@EnvConfig.register_subclass("myenv")
@dataclass
class MyEnvConfig(EnvConfig):
    ...

    def get_env_processors(self):
        return PolicyProcessorPipeline(steps=[MyEnvProcessorStep()]), PolicyProcessorPipeline(steps=[])

Ortamla ilgili olanları (tuş düzenleri, koordinat çerçeveleri) koruyun ve normalizasyonu ile modele özgü dönüşümleri politikanın işleyicilerine bırakın.

Update on GitHub