LeRobot documentation

معالجات البيئة

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

معالجات البيئة

تحوّل معالجات البيئة ملاحظات البيئة قبل معالجات السياسة الخاصة بها، وتحوّل إجراءات السياسة قبل البيئة. يعيد كل تكوين بيئة زوج المعالجات الخاص به من get_env_processors()، ويبني make_env_pre_post_processors هذه المعالجات للتقييم، وتقييم وقت التدريب، والروبوت المحاكي.

لا تحتاج البيئات المحاكاة إلى أي شيء

تصل البيئات المحاكاة إلى السياسة (Policy) بشكل قياسي مسبقًا: الصور على شكل observation.images.<camera> (أو observation.image)، والحالة كمتجه مسطّح واحد observation.state، حيث يُعالج اتجاه الصور وتكوين الحالة لكل محاكي مرة واحدة عبر تكامله الخاص src/lerobot/sim/integrations/<simulator>.py، سواءً كان ذلك للتقييم أو النشر (Rollout) أو التسجيل، محليًا أو عبر خادم (انظر المحاكاة: محليًا أو عبر خادم). على سبيل المثال، في حالة LIBERO، يقوم مُكيّف الملاحظات (Observation Adapter) الخاص به بقلب كلا الكاميرتين وبناء حالة بأبعاد 8 (موضع الطرف النهائي، الاتجاه بنظام المحور-الزاوية، مفاصل الماسك)، لذا فإن معالجات البيئة الخاصة به تكون هوية (Identity).

ضع خرائط الملاحظات لمحاكي جديد في تكامله، واتفاقيات التحكم الخاصة به في دالة conventions() لذلك التكامل، بدلاً من وضعها في معالج البيئة، بحيث يحصل روبوت المحاكاة والبيئة المُقدَّمة عليها أيضاً (انظر إضافة معيار تقييم).

عندما يكون معالج البيئة هو الأداة

  • البيئات خارج lerobot.sim. يعمل Isaac Lab Arena عبر make_env الخاص بمستودعه، مع ملاحظات torch مُجمَّعة؛ حيث يختار IsaaclabArenaProcessorStep مفاتيح الحالة الخاصة به ويلصقها، ويحوّل كاميراته.
  • تكييفات البيئة المحددة لكل سياسة. يتيح make_env_pre_post_processors للسياسة استبدال زوج البيئة، كما تفعل XVLA وCosmos3 في LIBERO.

يتيح التقييم نقطة تفتيش على ما تنتجه معالجات البيئة: الملاحظة بعد المعالج المسبق والإجراء بعد المعالج اللاحق، وكلاهما يُقرأ من transform_features. لذلك، يُعلن كل خطوة عن مخرجه هناك كدالة لدخله، بالطريقة التي يتصرف بها وقت التشغيل، على سبيل المثال خطوة تبني الحالة فقط عندما يكون مفتاح المصدر حاضراً. لا يطبق الاستدلال عن بُعد أي معالجات بيئة، لذا يجب على نقطة التفتيش المُقدَّمة هناك أن تستقبل ملاحظة المحاكي وتصدر إجراءها بنفسها.

ترتيب المعالجة أثناء التقييم هو:

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

كتابة واحدة

معالج البيئة هو خطوة معالج عادية، تُعاد من الإعداد:

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=[])

اجعلها محددة بالبيئة (تخطيطات المفاتيح، أطر الإحداثيات) واترك عمليات التطبيع والتحويلات الخاصة بالنموذج لمعالجات السياسة.

Update on GitHub