diff --git a/docs/source/overview/imitation-learning/teleop_imitation.rst b/docs/source/overview/imitation-learning/teleop_imitation.rst index 2521a8085cb..2738aba8d05 100644 --- a/docs/source/overview/imitation-learning/teleop_imitation.rst +++ b/docs/source/overview/imitation-learning/teleop_imitation.rst @@ -686,7 +686,7 @@ in the GR00T N1.5 repository. An example closed-loop policy rollout is shown in :figclass: align-center Simulation rollout of GR00T N1.5 policy finetuned for locomanipulation. - + The policy shown above uses the camera image, hand poses, hand joint positions, object pose, and base goal pose as inputs. The output of the model is the target base velocity, hand poses, and hand joint positions for the next several timesteps. diff --git a/scripts/imitation_learning/locomanipulation_sdg/generate_data.py b/scripts/imitation_learning/locomanipulation_sdg/generate_data.py index 46f80d97d70..f32eebfb5e9 100644 --- a/scripts/imitation_learning/locomanipulation_sdg/generate_data.py +++ b/scripts/imitation_learning/locomanipulation_sdg/generate_data.py @@ -119,20 +119,16 @@ from isaaclab.utils.datasets import EpisodeData, HDF5DatasetFileHandler import isaaclab_mimic.locomanipulation_sdg.envs # noqa: F401 -from isaaclab_mimic.locomanipulation_sdg.envs.locomanipulation_sdg_env import LocomanipulationSDGEnv from isaaclab_mimic.locomanipulation_sdg.data_classes import LocomanipulationSDGOutputData -from isaaclab_mimic.locomanipulation_sdg.path_utils import ParameterizedPath, plan_path -from isaaclab_mimic.locomanipulation_sdg.scene_utils import RelativePose, place_randomly -from isaaclab_mimic.locomanipulation_sdg.transform_utils import ( - transform_inv, - transform_mul, - transform_relative_pose, -) +from isaaclab_mimic.locomanipulation_sdg.envs.locomanipulation_sdg_env import LocomanipulationSDGEnv from isaaclab_mimic.locomanipulation_sdg.occupancy_map_utils import ( OccupancyMap, merge_occupancy_maps, occupancy_map_add_to_stage, ) +from isaaclab_mimic.locomanipulation_sdg.path_utils import ParameterizedPath, plan_path +from isaaclab_mimic.locomanipulation_sdg.scene_utils import RelativePose, place_randomly +from isaaclab_mimic.locomanipulation_sdg.transform_utils import transform_inv, transform_mul, transform_relative_pose from isaaclab_tasks.utils import parse_env_cfg @@ -249,7 +245,10 @@ def load_and_transform_recording_data( def setup_navigation_scene( - env: LocomanipulationSDGEnv, input_episode_data: EpisodeData, approach_distance: float, randomize_placement: bool = True + env: LocomanipulationSDGEnv, + input_episode_data: EpisodeData, + approach_distance: float, + randomize_placement: bool = True, ) -> tuple[OccupancyMap, ParameterizedPath, RelativePose, RelativePose]: """Set up the navigation scene with occupancy map and path planning. diff --git a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/g1_locomanipulation_sdg_env.py b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/g1_locomanipulation_sdg_env.py index 4650e578147..b91eedc2909 100644 --- a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/g1_locomanipulation_sdg_env.py +++ b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/g1_locomanipulation_sdg_env.py @@ -8,18 +8,14 @@ import isaaclab.sim as sim_utils from isaaclab.assets import AssetBaseCfg +from isaaclab.envs.common import ViewerCfg from isaaclab.sim.spawners.from_files.from_files_cfg import UsdFileCfg from isaaclab.utils import configclass from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR, ISAACLAB_NUCLEUS_DIR, retrieve_file_path from isaaclab.utils.datasets import EpisodeData -from isaaclab.envs.common import ViewerCfg from isaaclab_mimic.locomanipulation_sdg.data_classes import LocomanipulationSDGInputData -from isaaclab_mimic.locomanipulation_sdg.scene_utils import ( - HasPose, - SceneBody, - SceneFixture, -) +from isaaclab_mimic.locomanipulation_sdg.scene_utils import HasPose, SceneBody, SceneFixture from isaaclab_tasks.manager_based.locomanipulation.pick_place.locomanipulation_g1_env_cfg import ( LocomanipulationG1EnvCfg, @@ -84,16 +80,15 @@ class G1LocomanipulationSDGSceneCfg(LocomanipulationG1SceneCfg): @configclass class G1LocomanipulationSDGEnvCfg(LocomanipulationG1EnvCfg, LocomanipulationSDGEnvCfg): """Configuration for the G1 29DoF environment.""" + viewer: ViewerCfg = ViewerCfg( - eye=(0.0, 3.0, 1.25), - lookat=(0.0, 0.0, 0.5), - origin_type="asset_body", - asset_name="robot", - body_name="pelvis" + eye=(0.0, 3.0, 1.25), lookat=(0.0, 0.0, 0.5), origin_type="asset_body", asset_name="robot", body_name="pelvis" ) - + # Scene settings - scene: G1LocomanipulationSDGSceneCfg = G1LocomanipulationSDGSceneCfg(num_envs=1, env_spacing=2.5, replicate_physics=True) + scene: G1LocomanipulationSDGSceneCfg = G1LocomanipulationSDGSceneCfg( + num_envs=1, env_spacing=2.5, replicate_physics=True + ) recorders: LocomanipulationSDGRecorderManagerCfg = LocomanipulationSDGRecorderManagerCfg() def __post_init__(self): diff --git a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/locomanipulation_sdg_env.py b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/locomanipulation_sdg_env.py index b19ee80390b..6f9c095dac7 100644 --- a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/locomanipulation_sdg_env.py +++ b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/envs/locomanipulation_sdg_env.py @@ -9,10 +9,7 @@ from isaaclab.managers.recorder_manager import RecorderTerm from isaaclab.utils.datasets import EpisodeData -from isaaclab_mimic.locomanipulation_sdg.data_classes import ( - LocomanipulationSDGInputData, - LocomanipulationSDGOutputData, -) +from isaaclab_mimic.locomanipulation_sdg.data_classes import LocomanipulationSDGInputData, LocomanipulationSDGOutputData from isaaclab_mimic.locomanipulation_sdg.scene_utils import HasPose, SceneFixture diff --git a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/path_utils.py b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/path_utils.py index 79f8afbbf82..d6a05d34bf4 100644 --- a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/path_utils.py +++ b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/path_utils.py @@ -8,8 +8,8 @@ from isaacsim.replicator.mobility_gen.impl.path_planner import compress_path, generate_paths -from .scene_utils import HasPose2d from .occupancy_map_utils import OccupancyMap +from .scene_utils import HasPose2d def nearest_point_on_segment(a: torch.Tensor, b: torch.Tensor, c: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]: diff --git a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/scene_utils.py b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/scene_utils.py index 1844bdb4c86..594b6daab0c 100644 --- a/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/scene_utils.py +++ b/source/isaaclab_mimic/isaaclab_mimic/locomanipulation_sdg/scene_utils.py @@ -9,8 +9,8 @@ import isaaclab.utils.math as math_utils -from .transform_utils import transform_mul from .occupancy_map_utils import OccupancyMap, intersect_occupancy_maps +from .transform_utils import transform_mul class HasOccupancyMap: