SimKit 提供完整的数据生成能力,支持多种传感器数据类型和标注格式。 # 支持的数据类型 ## RGB/深度/语义分割图像 - 多相机视角渲染 - 高分辨率输出 - 实时渲染支持 ![RGB 渲染输出](_static/features/environment/render_packet_rgb.png) *RGB 渲染输出* ![边界框标注](_static/features/environment/render_packet_bboxes.png) *边界框标注* ## 3D 边界框标注 - 自动生成 2D/3D 边界框 - 实例分割掩码 - 深度图对齐 ## 点云数据 - 高精度深度图转点云 - 支持多帧融合 - 法线估计 ## 批量场景变体生成 - 物体位置随机化 - 纹理和材质随机化 - 光照条件变化 # 使用示例 ```python 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}") ``` # 输出格式 ## RGB 图像 - 格式:`numpy.ndarray` - 形状:`(H, W, 3)` - 数据类型:`uint8` - 值范围:`0-255` ## 深度图 - 格式:`numpy.ndarray` - 形状:`(H, W)` - 数据类型:`float32` - 单位:米 ## 语义分割 - 格式:`numpy.ndarray` - 形状:`(H, W)` - 数据类型:`uint32` - 值:实例 ID ## 2D 边界框 - 格式:`list[dict]` - 字段:`x_min`, `y_min`, `x_max`, `y_max`, `label`, `instance_id` ## 3D 边界框 - 格式:`list[dict]` - 字段:`position`, `size`, `rotation`, `label`, `instance_id` # 批量生成 ```python 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() ``` # 数据导出 ## COCO 格式 ```python 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 ) ``` ## YOLO 格式 ```python 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"] ) ``` # 性能指标 | 配置 | 单 GPU | 多 GPU (8) | |------|-------|-----------| | RGB (512x512) | 60 FPS | 480 FPS | | 深度图 | 60 FPS | 480 FPS | | 语义分割 | 45 FPS | 360 FPS | | 3D 边界框 | 60 FPS | 480 FPS | --- # 🔍 验证项 ## 0. HSSD 机器人放置位置生成 **目标**: 在 HSSD 场景中自动找到合适的 R1 Pro 机器人放置位置 **验证内容**: - [ ] 场景文件解析 (HSSD JSON 格式) - [ ] 桌子/工作台检测 - [ ] 机器人基座位置计算 - [ ] 8 个候选位置生成 (围绕桌子) - [ ] 碰撞检测 - [ ] 可达性验证 - [ ] 工作空间覆盖验证 - [ ] 稳定性评分计算 - [ ] 批量场景处理 **实现文件**: - `simkit/simulators/maniskill/hssd_robot_placer.py` - `test/simulators/maniskill/test_hssd_robot_placer.py` **使用示例**: ```python 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) **状态**: [完成] --- ## 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` **使用示例**: ```python 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"] ``` **状态**: [计划] --- ## 2. ReplicaCAD 房间场景测试 **目标**: 验证 ManiSkill 自带的 ReplicaCAD 房间场景支持 **验证内容**: - [ ] 统计支持的 ReplicaCAD 房间数量 - [ ] 每个房间的场景加载测试 - [ ] 房间布局验证 (家具、物体位置) - [ ] 房间尺寸统计 (面积、高度) - [ ] 生成房间场景清单文档 **实现文件**: - `simkit/simulators/maniskill/replicacad_catalog.py` - `test/simulators/maniskill/test_replicacad_rooms.py` - `docs/maniskill/replicacad_rooms_catalog.md` **使用示例**: ```python 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") ``` **预期输出**: - 房间总数统计 - 房间类型分布 (卧室、客厅、厨房、浴室等) - 房间面积分布 - 家具配置统计 **状态**: [计划] --- # 相关文档 - [API 手册](appendix-a-api.md) - 详细 API 参考 - [详细安装指南](appendix-b-install.md) - 环境配置 - [常见问题](appendix-d-faq.md) - 问题排查 --- **文档生成时间**: 2026-04-21 **SimKit 版本**: 0.1.0