SimKit 提供完整的数据生成能力,支持多种传感器数据类型和标注格式。

5. 支持的数据类型

5.1. RGB/深度/语义分割图像

  • 多相机视角渲染

  • 高分辨率输出

  • 实时渲染支持

RGB 渲染输出 RGB 渲染输出

边界框标注 边界框标注

5.2. 3D 边界框标注

  • 自动生成 2D/3D 边界框

  • 实例分割掩码

  • 深度图对齐

5.3. 点云数据

  • 高精度深度图转点云

  • 支持多帧融合

  • 法线估计

5.4. 批量场景变体生成

  • 物体位置随机化

  • 纹理和材质随机化

  • 光照条件变化

6. 使用示例

from simkit import HssdSceneEnv, ManiSkillRenderPacketBuilder

# 创建环境
env = HssdSceneEnv(
    scene="102343992",
    dataset_root="/path/to/hssd",
    obs_mode="state_dict",
    render_mode="rgb_array",
    robot_uid="r1pro"
)

# 重置环境
obs, info = env.reset(seed=0)

# 获取渲染数据包
packet = env.get_render_packet()

# 获取 RGB 图像
rgb = env.render()

# 使用数据包构建器
builder = ManiSkillRenderPacketBuilder()
built_packet = builder.build(packet)

# 访问数据
print(f"RGB shape: {rgb.shape}")
print(f"2D BBoxes: {built_packet.bboxes_2d}")
print(f"3D BBoxes: {built_packet.bboxes_3d}")

7. 输出格式

7.1. RGB 图像

  • 格式:numpy.ndarray

  • 形状:(H, W, 3)

  • 数据类型:uint8

  • 值范围:0-255

7.2. 深度图

  • 格式:numpy.ndarray

  • 形状:(H, W)

  • 数据类型:float32

  • 单位:米

7.3. 语义分割

  • 格式:numpy.ndarray

  • 形状:(H, W)

  • 数据类型:uint32

  • 值:实例 ID

7.4. 2D 边界框

  • 格式:list[dict]

  • 字段:x_min, y_min, x_max, y_max, label, instance_id

7.5. 3D 边界框

  • 格式:list[dict]

  • 字段:position, size, rotation, label, instance_id

8. 批量生成

from simkit.data import BatchDataGenerator

# 创建批量生成器
generator = BatchDataGenerator(
    scene_templates=["scene_001.yaml", "scene_002.yaml"],
    num_variants=100,
    output_dir="datasets/generated"
)

# 配置域随机化
generator.set_domain_randomization(
    object_positions=True,
    textures=True,
    lighting=True
)

# 生成数据
generator.generate()

9. 数据导出

9.1. COCO 格式

from simkit.data.export import export_to_coco

export_to_coco(
    dataset_path="datasets/generated",
    output_path="datasets/coco_format",
    include_masks=True,
    include_keypoints=False
)

9.2. YOLO 格式

from simkit.data.export import export_to_yolo

export_to_yolo(
    dataset_path="datasets/generated",
    output_path="datasets/yolo_format",
    classes=["object_1", "object_2", "object_3"]
)

10. 性能指标

配置

单 GPU

多 GPU (8)

RGB (512x512)

60 FPS

480 FPS

深度图

60 FPS

480 FPS

语义分割

45 FPS

360 FPS

3D 边界框

60 FPS

480 FPS


11. 🔍 验证项

11.1. 0. HSSD 机器人放置位置生成

目标: 在 HSSD 场景中自动找到合适的 R1 Pro 机器人放置位置

验证内容:

  • [ ] 场景文件解析 (HSSD JSON 格式)

  • [ ] 桌子/工作台检测

  • [ ] 机器人基座位置计算

  • [ ] 8 个候选位置生成 (围绕桌子)

  • [ ] 碰撞检测

  • [ ] 可达性验证

  • [ ] 工作空间覆盖验证

  • [ ] 稳定性评分计算

  • [ ] 批量场景处理

实现文件:

  • simkit/simulators/maniskill/hssd_robot_placer.py

  • test/simulators/maniskill/test_hssd_robot_placer.py

使用示例:

from simkit import HSSDRobotPlacer

# 创建放置器
placer = HSSDRobotPlacer(robot_uid="r1pro")

# 在场景中放置机器人
report = placer.place_robot_in_scene("102343992")

# 访问报告
print(f"位置:{report.placement.position}")
print(f"距离桌子:{report.placement.distance_to_table}m")
print(f"工作空间覆盖:{report.workspace_coverage}")
print(f"稳定性评分:{report.stability_score}")

预期输出:

  • 8 个候选位置 (围绕桌子 0.8m)

  • 碰撞检测报告

  • 可达性验证结果

  • 稳定性评分 (0-1)

状态: [完成]


11.2. 1. R1 Pro 相机图像生成

目标: 直接从 R1 Pro 机器人的相机中生成图像数据

验证内容:

  • [ ] R1 Pro 相机内参正确配置

  • [ ] 多相机视角同步渲染

  • [ ] 图像分辨率可配置 (224x224, 512x512, 1024x1024)

  • [ ] RGB/深度/语义分割图像对齐

  • [ ] 相机位姿与机器人关节状态同步

实现文件:

  • simkit/simulators/maniskill/r1pro_camera_renderer.py

  • test/simulators/maniskill/test_r1pro_camera.py

使用示例:

from simkit import R1ProCameraRenderer

# 创建 R1 Pro 相机渲染器
renderer = R1ProCameraRenderer(
    robot_uid="r1pro",
    scene="102343992",
    cameras=["head_camera", "left_wrist", "right_wrist"]
)

# 渲染所有相机图像
images = renderer.render_all_cameras()

# 访问图像
head_rgb = images["head_camera"]["rgb"]
head_depth = images["head_camera"]["depth"]
left_wrist_rgb = images["left_wrist"]["rgb"]

状态: [计划]


11.3. 2. ReplicaCAD 房间场景测试

目标: 验证 ManiSkill 自带的 ReplicaCAD 房间场景支持

验证内容:

  • [ ] 统计支持的 ReplicaCAD 房间数量

  • [ ] 每个房间的场景加载测试

  • [ ] 房间布局验证 (家具、物体位置)

  • [ ] 房间尺寸统计 (面积、高度)

  • [ ] 生成房间场景清单文档

实现文件:

  • simkit/simulators/maniskill/replicacad_catalog.py

  • test/simulators/maniskill/test_replicacad_rooms.py

  • docs/maniskill/replicacad_rooms_catalog.md

使用示例:

from simkit import ReplicaCADManager

# 创建 ReplicaCAD 管理器
manager = ReplicaCADManager()

# 获取所有支持的房间
rooms = manager.get_all_rooms()
print(f"支持的房间数量:{len(rooms)}")

# 获取房间详情
room_info = manager.get_room_info("102343992")
print(f"房间面积:{room_info.area} m²")
print(f"家具数量:{len(room_info.furniture)}")

# 生成房间清单
manager.generate_catalog("docs/maniskill/replicacad_rooms_catalog.md")

预期输出:

  • 房间总数统计

  • 房间类型分布 (卧室、客厅、厨房、浴室等)

  • 房间面积分布

  • 家具配置统计

状态: [计划]


12. 相关文档


文档生成时间: 2026-04-21
SimKit 版本: 0.1.0