From 6fb7aef502fde727a8101da542fe65e1070e08c8 Mon Sep 17 00:00:00 2001 From: Wu Bingqian Date: Tue, 6 Jan 2026 19:51:05 +0800 Subject: [PATCH 1/2] modify lerobot policy client to support lerobot v0.4.x policy server --- source/leisaac/leisaac/policy/lerobot/__init__.py | 3 ++- source/leisaac/leisaac/policy/lerobot/helpers.py | 3 ++- source/leisaac/leisaac/policy/service_policy_clients.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/source/leisaac/leisaac/policy/lerobot/__init__.py b/source/leisaac/leisaac/policy/lerobot/__init__.py index a40a28ce..51f025af 100644 --- a/source/leisaac/leisaac/policy/lerobot/__init__.py +++ b/source/leisaac/leisaac/policy/lerobot/__init__.py @@ -20,7 +20,8 @@ def create_module_hierarchy(path: str): setattr(sys.modules[parent_path], parts[i - 1], mod) -helpers_path = "lerobot.scripts.server.helpers" +helpers_path = "lerobot.async_inference.helpers" + create_module_hierarchy(helpers_path) fake_lerobot_module = sys.modules[helpers_path] diff --git a/source/leisaac/leisaac/policy/lerobot/helpers.py b/source/leisaac/leisaac/policy/lerobot/helpers.py index c41ae98b..f3c58572 100644 --- a/source/leisaac/leisaac/policy/lerobot/helpers.py +++ b/source/leisaac/leisaac/policy/lerobot/helpers.py @@ -1,4 +1,4 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field from enum import Enum import torch @@ -25,6 +25,7 @@ class RemotePolicyConfig: lerobot_features: dict[str, PolicyFeature] actions_per_chunk: int device: str = "cpu" + rename_map: dict[str, str] = field(default_factory=dict) RawObservation = dict[str, torch.Tensor] diff --git a/source/leisaac/leisaac/policy/service_policy_clients.py b/source/leisaac/leisaac/policy/service_policy_clients.py index d5f747a1..c79980ba 100644 --- a/source/leisaac/leisaac/policy/service_policy_clients.py +++ b/source/leisaac/leisaac/policy/service_policy_clients.py @@ -87,7 +87,7 @@ def get_action(self, observation_dict: dict) -> torch.Tensor: class LeRobotServicePolicyClient(Policy): """ Service policy client for Lerobot: https://github.com/huggingface/lerobot - Target Commit: https://github.com/huggingface/lerobot/tree/v0.3.3 + Target Commit: https://github.com/huggingface/lerobot/tree/v0.4.2 """ def __init__( From 01316254de5f71eb00c38e1e968a75b2485a0e94 Mon Sep 17 00:00:00 2001 From: Wu Bingqian Date: Tue, 6 Jan 2026 20:58:57 +0800 Subject: [PATCH 2/2] remove skip send observation when recieve empty action machenism, to fix the bug of block when recieve empty action --- source/leisaac/leisaac/policy/service_policy_clients.py | 1 - 1 file changed, 1 deletion(-) diff --git a/source/leisaac/leisaac/policy/service_policy_clients.py b/source/leisaac/leisaac/policy/service_policy_clients.py index c79980ba..4710cb07 100644 --- a/source/leisaac/leisaac/policy/service_policy_clients.py +++ b/source/leisaac/leisaac/policy/service_policy_clients.py @@ -224,7 +224,6 @@ def get_action(self, observation_dict: dict) -> torch.Tensor: self._send_observation(observation_dict) action_chunk = self._receive_action() if action_chunk is None: - self.skip_send_observation = True return torch.from_numpy(self.last_action).repeat(self.actions_per_chunk, 1)[:, None, :] action_list = [action.get_action()[None, :] for action in action_chunk]