NeuralPlanner

NeuralPlanner#

Experimental

NeuralPlanner is an experimental feature. The API, checkpoint format, and default parameters may change without a deprecation cycle. It is currently only validated on the Franka Panda robot.

NeuralPlanner is a learning-based EEF waypoint planner. It rolls out a trained APG checkpoint through MotionGenerator to reach Cartesian targets.

Configuration#

Pre-trained checkpoints are hosted on HuggingFace and can be downloaded with download_neural_planner_checkpoint() (requires HF_TOKEN environment variable).

from embodichain.data.assets.planner_assets import download_neural_planner_checkpoint
from embodichain.lab.sim.planners import (
    MotionGenCfg,
    MotionGenOptions,
    MotionGenerator,
    MoveType,
    NeuralPlannerCfg,
    PlanState,
)
from embodichain.lab.sim.planners.neural_planner import NeuralPlanOptions

checkpoint_path = download_neural_planner_checkpoint()

motion_generator = MotionGenerator(
    cfg=MotionGenCfg(
        planner_cfg=NeuralPlannerCfg(
            robot_uid=robot.uid,
            checkpoint_path=checkpoint_path,
            control_part="main_arm",
        )
    )
)

result = motion_generator.generate(
    target_states=[
        PlanState(move_type=MoveType.EEF_MOVE, xpos=waypoint)
        for waypoint in waypoints
    ],
    options=MotionGenOptions(
        plan_opts=NeuralPlanOptions(
            control_part="main_arm",
            start_qpos=start_qpos,
        ),
    ),
)

Example#

python examples/sim/planners/neural_planner.py --headless --device cuda

The example downloads the checkpoint automatically on first run.