LeRobot documentation
Bộ xử lý Môi trường
Bộ xử lý Môi trường
Bộ xử lý môi trường biến đổi các quan sát của môi trường trước khi bộ xử lý của chính sách thực hiện, và biến đổi các hành động của chính sách trước khi đưa vào môi trường. Mỗi cấu hình môi trường trả về cặp bộ xử lý của nó từ get_env_processors(), và make_env_pre_post_processors xây dựng chúng cho đánh giá, đánh giá trong quá trình huấn luyện và robot mô phỏng.
Môi trường mô phỏng không cần bất kỳ
Các môi trường mô phỏng đưa chính sách vào ở dạng đã chuẩn hóa: ảnh dưới dạng observation.images.<camera> (hoặc observation.image), trạng thái dưới dạng một observation.state phẳng duy nhất, trong đó hướng ảnh và cấu thành trạng thái của từng trình mô phỏng được xử lý một lần duy nhất bởi tích hợp src/lerobot/sim/integrations/<simulator>.py của nó, cho cả đánh giá, rollout và ghi hình, dù chạy cục bộ hay được phục vụ (xem Mô phỏng: cục bộ hay được phục vụ). Ví dụ, với LIBERO, bộ thích ứng quan sát của nó lật cả hai camera và xây dựng trạng thái 8 chiều (vị trí đầu cuối, hướng trục-góc, khớp gắp), do đó các bộ xử lý môi trường của nó là đồng nhất.
Đặt ánh xạ quan sát của trình mô phỏng mới trong phần tích hợp của nó và các quy ước điều khiển trong conventions() của phần tích hợp đó, thay vì trong bộ xử lý môi trường, để robot mô phỏng và môi trường được phục vụ cũng nhận được chúng (xem Thêm một benchmark).
Khi bộ xử lý môi trường vẫn là công cụ
- Môi trường bên ngoài
lerobot.sim. Isaac Lab Arena chạy thông quamake_envriêng của kho mã của nó, với các quan sát torch dạng batch;IsaaclabArenaProcessorStepchọn và nối các khóa trạng thái của nó và chuyển đổi các camera của nó. - Điều chỉnh môi trường theo từng chính sách.
make_env_pre_post_processorscho phép một chính sách thay thế cặp của môi trường, như cách XVLA và Cosmos3 thực hiện cho LIBERO.
Evaluation chấp nhận một checkpoint dựa trên những gì các bộ xử lý môi trường của nó tạo ra: quan sát sau bộ tiền xử lý và hành động sau bộ hậu xử lý, cả hai đều được đọc từ transform_features của chúng. Do đó, một bước khai báo đầu ra của nó tại đó như một hàm của đầu vào, theo cách nó hoạt động lúc chạy, chẳng hạn như một bước chỉ xây dựng trạng thái khi khóa nguồn của nó có mặt. Suy luận từ xa không áp dụng các bộ xử lý môi trường, vì vậy một checkpoint được phục vụ tại đó phải tự nhận quan sát của trình mô phỏng và tự ra lệnh hành động của nó.
Thứ tự xử lý trong quá trình đánh giá là:
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-specificViết một
Bộ xử lý môi trường là một bước xử lý thông thường, được trả về từ cấu hình:
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=[])Giữ các yếu tố cụ thể cho môi trường (bố cục phím, hệ tọa độ) và để các bộ xử lý của chính sách đảm nhận việc chuẩn hóa và các phép biến đổi cụ thể cho mô hình.
Update on GitHub