Context
Sub-issue of #74. This is the "final form" — using LeRobot's official make_env() factory with full DDS communication, replacing our standalone LeRobotG1Env.
Current state (SDK-free path, working)
# Our current approach: load model directly, bypass DDS
env = LeRobotG1Env(model_path=xml_path, num_motors=29)
ctrl = GrootLocomotionController() # our ONNX wrapper
Target state (native LeRobot)
# Official LeRobot approach: full digital twin via DDS
from lerobot.envs.factory import make_env
env = make_env("lerobot/unitree-g1-mujoco", trust_remote_code=True)
# LeRobot's own controller handles locomotion via DDS internally
Blockers
Tasks
When to do this
After the SDK fork (#81) is stable and tested. The SDK-free path (#78, #79, #80) is sufficient for now.
Context
Sub-issue of #74. This is the "final form" — using LeRobot's official
make_env()factory with full DDS communication, replacing our standaloneLeRobotG1Env.Current state (SDK-free path, working)
Target state (native LeRobot)
Blockers
cycloneddsinstalls on Python 3.12+ (LeRobot requires >=3.12)make_env()returns an env withrender_camera()or onlyrender()Tasks
examples/lerobot_g1_native.pyusingmake_env()RobotHarnessWrapper— validate Gymnasium API compatibilityWhen to do this
After the SDK fork (#81) is stable and tested. The SDK-free path (#78, #79, #80) is sufficient for now.