# 附录 A: API 手册 ## Core API ### SceneReader ```python from simkit.core.scene import SceneReader reader = SceneReader() scene = reader.read("scene.yaml") ``` ### SceneWriter ```python from simkit.core.scene import SceneWriter writer = SceneWriter() writer.write(scene, "output.yaml") ``` ### SceneBuilder ```python 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") ``` ### TransformUtils ```python from simkit.core.transforms import TransformUtils # 坐标变换 transformed_pose = TransformUtils.transform(pose, transform_matrix) ``` --- ## ManiSkill API ### HssdSceneEnv ```python 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() ``` ### ManiSkillRenderPacketBuilder ```python from simkit import ManiSkillRenderPacketBuilder builder = ManiSkillRenderPacketBuilder() packet = builder.build(obs) # packet.rgb, packet.depth, packet.bboxes_2d, packet.bboxes_3d ``` ### ManiSkillAdapter ```python from simkit.simulators.maniskill import ManiSkillAdapter adapter = ManiSkillAdapter() env = adapter.create_env(scene) ``` --- ## SAPIEN API ### SapienRenderer ```python from simkit.simulators.sapien import SapienRenderer renderer = SapienRenderer() renderer.setup(scene) rgb = renderer.render(camera_pose) ``` ### SapienAxisVisualizer ```python from simkit.simulators.sapien import SapienAxisVisualizer visualizer = SapienAxisVisualizer() visualizer.add_axis(pose) visualizer.render() ``` --- ## MuJoCo API ### SceneComposer ```python from simkit.simulators.mujoco import SceneComposer composer = SceneComposer() composer.add_object("table", pose=[0, 0, 0]) mjcf = composer.build() ``` ### MjcfLoader ```python from simkit.simulators.mujoco import MjcfLoader loader = MjcfLoader() model = loader.load("scene.xml") ``` --- ## 类型定义 ### 场景数据类型 ```python from dataclasses import dataclass @dataclass class Scene: objects: list[Object] lighting: Lighting cameras: list[Camera] ``` ### 位姿类型 ```python 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] ``` ### 渲染数据包类型 ```python 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] ```