Datasets

Datasets#

Semantic Digital Twin can load datasets from internet resources. The results of the loaded datasets are completely function digital twins (World instances including Semantic Annotations, Kinematics, etc.).

Sage#

Scenes from Sage can be loaded with:

from semantic_digital_twin.adapters.sage_10k_dataset.loader import Sage10kDatasetLoader

loader = Sage10kDatasetLoader()
scene = loader.create_scene(scene_url=Sage10kDatasetLoader.available_scenes()[0])
world = scene.create_world()

Sapien / PartNet#

Articulated assets from the PartNet-Mobility dataset can be loaded with:

from semantic_digital_twin.adapters.partnet_mobility_dataset.loader import PartNetMobilityDatasetLoader

loader = PartNetMobilityDatasetLoader()
world = loader.load(model_id=179) # model_id can be found at https://sapien.ucsd.edu/browse

Note that this requires the sapien library to be installed and the SAPIEN_ACCESS_TOKEN environment variable to be set.

RoboCasa#

Objects, fixtures, full kitchen scenes, and manipulation tasks from RoboCasa can be loaded with:

from semantic_digital_twin.adapters.robocasa_dataset.loader import RoboCasaDatasetLoader
from semantic_digital_twin.adapters.robocasa_dataset.semantics import (
    RoboCasaKitchenApplianceCategory,
    RoboCasaObjectCategory,
)

loader = RoboCasaDatasetLoader()

kitchen_world = loader.load_kitchen(layout_id=..., style_id=...)  # a full kitchen scene
appliance_world = loader.load_kitchen_appliance(RoboCasaKitchenApplianceCategory.CABINET)  # a single appliance
object_world = loader.load_object(RoboCasaObjectCategory.APPLE)  # a single object

A RoboCasa task (for example "TurnOnMicrowave") can be loaded together with the scene it is defined over. load_task returns a RoboCasaTask binding the World to the task’s natural-language instruction, the bodies to be manipulated, and the pose the robot should start at. RoboCasa’s own robot is stripped from the world, since semantic_digital_twin owns the robot.

task = loader.load_task("TurnOnMicrowave", layout_id=..., style_id=...)
task.instruction          # e.g. "Press the start button on the microwave."
task.manipulated_objects  # the bodies the task requires the robot to interact with
task.robot_base_pose      # where to spawn the semantic_digital_twin-owned robot

Note that this requires the robocasa and robosuite libraries to be installed (robosuite must be installed from git, pip install git+https://github.com/ARISE-Initiative/robosuite.git), and the fixture/object assets to be downloaded via python -m robocasa.scripts.download_kitchen_assets (pointed at by RoboCasaDatasetLoader.directory, ~/robocasa-assets by default).