LeRobot documentation
Ortam İşleyicileri
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.simdışındaki ortamlar. Isaac Lab Arena, kendi deposundakimake_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-specificBiri 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