20. 附录 A: API 手册

20.1. Core API

20.1.1. SceneReader

from simkit.core.scene import SceneReader

reader = SceneReader()
scene = reader.read("scene.yaml")

20.1.2. SceneWriter

from simkit.core.scene import SceneWriter

writer = SceneWriter()
writer.write(scene, "output.yaml")

20.1.3. SceneBuilder

from simkit.core.scene import SceneBuilder

scene = SceneBuilder()
scene.add_object("table", pose=[0, 0, 0])
scene.add_object("cube", pose=[0.5, 0, 0.5])
scene.save("scene.yaml")

20.1.4. TransformUtils

from simkit.core.transforms import TransformUtils

# 坐标变换
transformed_pose = TransformUtils.transform(pose, transform_matrix)

20.2. ManiSkill API

20.2.1. HssdSceneEnv

from simkit import HssdSceneEnv

env = HssdSceneEnv(
    scene="102343992",
    dataset_root="/path/to/hssd",
    obs_mode="state_dict",
    render_mode="rgb_array",
    robot_uid="r1pro"
)
obs, info = env.reset()

20.2.2. ManiSkillRenderPacketBuilder

from simkit import ManiSkillRenderPacketBuilder

builder = ManiSkillRenderPacketBuilder()
packet = builder.build(obs)
# packet.rgb, packet.depth, packet.bboxes_2d, packet.bboxes_3d

20.2.3. ManiSkillAdapter

from simkit.simulators.maniskill import ManiSkillAdapter

adapter = ManiSkillAdapter()
env = adapter.create_env(scene)

20.3. SAPIEN API

20.3.1. SapienRenderer

from simkit.simulators.sapien import SapienRenderer

renderer = SapienRenderer()
renderer.setup(scene)
rgb = renderer.render(camera_pose)

20.3.2. SapienAxisVisualizer

from simkit.simulators.sapien import SapienAxisVisualizer

visualizer = SapienAxisVisualizer()
visualizer.add_axis(pose)
visualizer.render()

20.4. MuJoCo API

20.4.1. SceneComposer

from simkit.simulators.mujoco import SceneComposer

composer = SceneComposer()
composer.add_object("table", pose=[0, 0, 0])
mjcf = composer.build()

20.4.2. MjcfLoader

from simkit.simulators.mujoco import MjcfLoader

loader = MjcfLoader()
model = loader.load("scene.xml")

20.5. 类型定义

20.5.1. 场景数据类型

from dataclasses import dataclass

@dataclass
class Scene:
    objects: list[Object]
    lighting: Lighting
    cameras: list[Camera]

20.5.2. 位姿类型

from typing import List

Pose = List[float]  # [x, y, z, qx, qy, qz, qw]
Position = List[float]  # [x, y, z]
Rotation = List[float]  # [qx, qy, qz, qw]

20.5.3. 渲染数据包类型

from dataclasses import dataclass

@dataclass
class RenderPacket:
    rgb: np.ndarray  # (H, W, 3)
    depth: np.ndarray  # (H, W)
    segmentation: np.ndarray  # (H, W)
    bboxes_2d: list[BBox2D]
    bboxes_3d: list[BBox3D]