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]