十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ManiSkill 任务系统全景指南:从任务卡片到九大任务分类的完整解读

ManiSkill 任务系统全景指南:从任务卡片到九大任务分类的完整解读 ManiSkill 任务系统全景指南从任务卡片到九大任务分类的完整解读【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill导读ManiSkill 是一个 GPU 并行化的开源机器人仿真与基准框架Manipulation Skill Framework其内置了大量刚体rigid-body任务全部支持 GPU 并行仿真与渲染。本文以docs/source/tasks/index.md及其下属任务分类文档为主线系统解读 ManiSkill 3 的任务系统如何阅读任务卡片Task Card、如何理解奖励/演示/资产徽章、如何下载任务资产与演示数据、不同观察模式下目标信息的呈现差异并逐一展开控制、桌面夹爪、四足、人形、移动操作、灵巧手、数字孪生、绘图与外部基准九大类任务的完整清单与关键设定最后结合源码如 pick_cube.py说明任务在仓库中的注册与实现方式。读完本文你将能够按环境 ID 快速定位任何内置任务的规格、运行环境并下载所需资源。一、任务系统概述GPU 并行化的刚体任务集ManiSkill 内置了一系列刚体任务覆盖运动控制、灵巧操作、移动操作、绘图、数字孪生等多种能力维度。这些任务全部经过 GPU 并行化可在单个 GPU 上同时运行大量环境实例并支持 GPU 渲染是强化学习、模仿学习与数据采集的理想基准。任务分类即官方文档中的 toctree共九类Control经典控制任务类似 DM Control 套件但支持 GPU 并行仿真与渲染Table-Top 2 Finger Gripper桌面场景下的双指夹爪操作Quadruped四足机器人运动与操作Humanoid人形机器人控制Mobile Manipulation移动操作机器人Fetch 等带移动底盘Dextrous灵巧手任务Digital Twins数字孪生任务训练/评估型Drawing机器人绘图任务External社区贡献的外部基准任务说明软体soft-body任务仍托管在 ManiSkill2 代码库中尚未完全集成进 ManiSkill3。因此在当前版本中任务集以刚体任务为主。二、任务卡片Task Card快速掌握任务规格的统一范式对于上述每个任务官方文档都提供了一张任务卡片Task Card简明扼要地描述该任务的所有关键属性包括任务描述Task Description任务目标的一句话概括支持的机器人Supported Robots可用于该任务的机器人 UID 列表随机化Randomizations任务在每次 episode 重置含 reconfiguration 重配置阶段时对物体位姿、机器人初始状态等引入的随机范围成功条件Success Conditions判定任务成功的量化阈值失败条件Fail Conditions判定任务失败的量化阈值部分任务无目标指定方式Goal Specification目标在观察observation中如何表达仅当目标非视觉形式时给出。任务卡片是理解、对比与复现任务的第一手资料训练策略前先读卡片确认成功阈值与随机化范围编写自定义任务时任务卡片也是文档化的标准模板。三、奖励、演示与资产徽章一眼识别任务属性文档为每个任务标记了三类徽章badge用于快速传达任务特性徽章含义Dense Reward绿色 ✅提供稠密奖励dense rewardDense Reward红色 ❌不提供稠密奖励Sparse Reward绿色 ✅提供稀疏奖励sparse reward通常等价于成功/失败条件Sparse Reward红色 ❌不提供稀疏奖励Demos绿色 ✅提供官方演示数据demonstrations可通过命令下载Download Asset蓝色 ✅需要先下载额外资产asset才能运行该环境徽章体系与源码中的任务文档字符串一一对应。以 pick_cube.py 为例其模块级PICK_CUBE_DOC_STRING即定义了与任务卡片一致的任务描述、随机化与成功条件文本并由文档生成脚本generate_task_docs.py自动渲染为官方文档。四、资产与演示数据下载两条核心命令如果某任务带有Download Asset徽章说明其运行前必须下载对应资产如 PartNet-Mobility 家具、YCB 物体网格等。官方提供两条命令行下载工具下载任务资产python -m mani_skill.utils.download_asset env_id下载任务演示数据python -m mani_skill.utils.download_demo env_id其中env_id为环境 ID例如PickCube-v1、PickSingleYCB-v1、OpenCabinetDrawer-v1。对应的下载实现位于 mani_skill/utils/download_asset.py 与 mani_skill/utils/download_demo.py。提示部分任务的演示数据是跨多个环境共享的例如 OpenCabinet 系列基于 PartNet-Mobility 资产下载时按文档指引操作即可。资产是否必需、演示是否存在均可通过上文的徽章判断。五、观察模式state 与视觉模式的信息差异任务文档特别强调不同观察模式下任务提供的状态观察数据不同。当观察模式observation mode为state或state_dict时所有求解任务所需的真实数据ground truth都会给出——包括物体位姿、速度等当观察模式为任意视觉模式如rgb、depth、pointcloud等时框架会移除通常在真实世界中无法获取的真值观察数据例如物体的位姿以保证视觉观察与真实物理世界的一致性避免策略在训练时作弊。这一设计对 sim2real 训练至关重要视觉模式下无法依赖真值位姿策略必须从图像/点云中推理状态从而提升迁移到真实机器人的可能性。相关观察模式的定义可参考 observation 概念文档 与 gymnasium 包装器。六、九大任务分类详解6.1 控制类任务Control Tasks控制类任务的目标是控制机器人到达特定状态风格接近经典 DM Control 套件但在 ManiSkill 中支持 GPU 并行仿真与渲染。该类任务默认不提供演示数据最大 episode 步数一般为 600–1000。TaskDense RewardSuccess/FailDemosMax StepsMS-AntRun-v1✅❌❌1000MS-AntWalk-v1✅❌❌1000MS-CartpoleBalance-v1✅✅❌1000MS-CartpoleSwingUp-v1✅❌❌1000MS-HopperHop-v1✅✅❌600MS-HopperStand-v1✅✅❌600MS-HumanoidRun-v1✅❌❌1000MS-HumanoidStand-v1✅❌❌1000MS-HumanoidWalk-v1✅❌❌1000关键任务卡片要点MS-AntRun-v1 / MS-AntWalk-v1蚂蚁机器人分别以 4 m/s、0.5 m/s 的速度沿 x 方向前进随机化qpos 与 qvel 添加 [-1e-2, 1e-2] 均匀噪声无具体成功条件。MS-CartpoleBalance-v1用小车平衡竖直杆杆方向在垂直轴周围 [-0.05, 0.05] 弧度随机化失败条件杆低于水平面。MS-CartpoleSwingUp-v1将杆从下垂状态甩起并保持竖直杆方向在 [-π, π] 全圆随机化成功条件为整个 episode 杆保持竖直。MS-HopperHop-v1 / MS-HopperStand-v1跳跃/站立任务机器人绕 y 轴随机旋转 [-π, π]qpos 在允许范围内均匀采样。MS-HumanoidRun / Walk / Stand-v1跑步/行走/站立qpos、qvel 加 [-1e-2, 1e-2] 均匀噪声Stand 还绕 z 轴随机旋转 [-π, π]失败条件躯干 link 的 z 坐标离开 [0.7, 1.0] 区间。这些环境的 MuJoCo 模型位于 mani_skill/envs/tasks/control/assets源码位于 mani_skill/envs/tasks/control。6.2 桌面双指夹爪任务Table-Top 2 Finger Gripper Tasks这是 ManiSkill 任务体系中最核心、最丰富的一类任务位于桌面上由带双指夹爪的机械臂操作物体。其中PickCube-v1 被官方定义为基线任务baseline task用于验证一个具备操作能力的机器人能否被正确仿真与训练因此源码中为多个机器人Panda、Fetch、XArm6Robotiq、SO100、WidowXAI提供了适配代码与表格场景构建器TableSceneBuilder。TaskDense RewardSuccess/FailDemosMax StepsAssemblingKits-v1❌✅❌200LiftPegUpright-v1✅✅✅50PegInsertionSide-v1✅✅✅100PickClutterYCB-v1❌❌❌100PickCube-v1✅✅✅50PickCubeSO100-v1✅✅❌50PickCubeWidowXAI-v1✅✅❌50PickSingleYCB-v1✅✅❌50PlaceSphere-v1✅✅❌50PlugCharger-v1❌✅✅200PokeCube-v1✅✅✅50PullCube-v1✅✅✅50PullCubeTool-v1✅✅✅100PushCube-v1✅✅✅50PushT-v1✅✅✅100RollBall-v1✅✅✅80StackCube-v1✅✅✅50StackPyramid-v1❌✅✅250TurnFaucet-v1❌✅❌200TwoRobotPickCube-v1✅✅✅100TwoRobotStackCube-v1✅✅✅100关键任务卡片要点PickCube-v1基线任务抓取红色立方体并移动到目标位置。随机化立方体 xy 在 [0.1, 0.1] × [-0.1, -0.1] 区域相对于桌面z 轴旋转随机目标点绿色球体xy 随机且 z 在 [0, 0.3]。成功条件立方体与目标点欧氏距离 ≤goal_thresh默认 0.025m且机器人静止q velocity 0.2。其源码位于 pick_cube.pygoal_thresh 0.025、max_episode_steps50均可在类定义中确认。LiftPegUpright-v1将平放木栓立起至任意竖直位置。成功条件木栓 y 欧拉角绝对值与 π/2 相差 ≤ 0.08且 z 坐标与其半长0.12相差 ≤ 0.005。PegInsertionSide-v1抓取橙白木栓并将橙色端插入带孔盒子。重配置时随机化木栓半长 [0.085, 0.125]m、半径 [0.015, 0.025]m盒孔半径 同值 0.003m 间隙。成功条件木栓白色端距盒中心 ≤ 0.015m。PickSingleYCB-v1从 YCB 数据集随机采样物体并移动到随机目标位姿成功条件物体与目标欧氏距离 ≤goal_thresh默认 0.025且机器人静止。官方建议 GPU 仿真下使用≥128 个并行环境以便一次覆盖 YCB 数据库中所有物体否则需要 reconfiguration 才能采样新物体。PushT-v1Diffusion Policy 论文中真实 Push-T 任务的仿真版。机器人需1) 将 T 形块精确推入目标区域2) 将末端执行器移动到 end-zone 结束 episodePushT-easy 无需第 2 步。成功条件T 形块覆盖 2D 目标 T 面积的 90%。StackCube-v1将红立方体叠到绿立方体上并松手。成功条件红立方体位于绿立方体上方偏差不超过半个立方体尺寸、静止且未被夹爪抓持。StackPyramid-v1将红、绿、蓝三立方体堆成金字塔。成功条件蓝色立方体静止、同时位于红绿两立方体之上偏差 ≤ 半个立方体尺寸且三立方体均未被夹爪抓持。TwoRobotPickCube-v1 / TwoRobotStackCube-v1双机器人协作任务。前者中目标位置超出左机器人可达范围、立方体超出右机器人可达范围因此两台机器人必须协作搬运后者中两台机器人分别取绿、蓝立方体协作完成堆叠。随机化保证立方体互不碰撞、且各自仅对一侧机器人可达。PlugCharger-v1将充电器插入插座随机化充电器与插座在桌面 xy 平面上的位置与旋转人视角相机相对于插座固定。RollBall-v1将球滚到桌子另一端的红色/白色圆形目标区成功阈值goal_radius默认 0.1。PullCubeTool-v1利用 L 形工具拉动机械臂够不到的立方体工具使用类任务。对应源码均在 mani_skill/envs/tasks/tabletop每个任务一个 Python 文件例如 stack_cube.py、push_t.py。6.3 四足机器人任务Quadruped Tasks该类任务使用四足机器人如 ANYmal、Unitree Go进行运动与操作。TaskDense RewardSuccess/FailDemosMax StepsAnymalC-Reach-v1✅✅✅200UnitreeGo2-Reach-v1✅✅❌200AnymalC-Spin-v1✅✅❌200关键任务卡片要点AnymalC-Reach-v1控制 AnymalC 机器人到达前方目标位置。目标初始化在正前方 2.5 ± 0.5 米、两侧 ±1 米范围内。成功条件机器人位置距目标 ≤ 0.35 米失败条件机器人摔倒主体中心触地。目标以 XY 平面上的 2D 位置表达。AnymalC-Spin-v1原地快速自旋以角速度作为奖励。失败条件同为摔倒。UnitreeGo2-Reach-v1同为到达任务使用 Unitree Go2 机器人。四足任务的注册与实现见 mani_skill/envs/tasks/quadruped。6.4 人形机器人任务Humanoid TasksManiSkill 同时支持真实世界人形机器人Unitree G1/H1与 MuJoCo 人形机器人该类任务一般涉及双腿双臂的控制。TaskDense RewardSuccess/FailDemosMax StepsUnitreeG1PlaceAppleInBowl-v1✅✅❌100UnitreeG1Stand-v1❌✅❌1000UnitreeH1Stand-v1❌✅❌1000UnitreeG1TransportBox-v1✅✅❌100关键任务卡片要点UnitreeG1PlaceAppleInBowl-v1G1 用右臂抓取苹果放入侧边碗中。碗与苹果 xy 均在 [0.025, 0.025] × [-0.025, -0.025] 桌面区域随机化。成功条件苹果距碗位置 ≤ 0.05m且右手保持在碗外并高于碗至少 0.125m。目标以碗的 3D 位置表达。UnitreeG1TransportBox-v1G1 在一张桌上找到盒子搬运到另一张桌并放置。成功条件盒子静置于另一张桌上。UnitreeG1Stand-v1 / UnitreeH1Stand-v1站立任务仅稀疏奖励无演示。实现见 mani_skill/envs/tasks/humanoid机器人模型位于 mani_skill/assets/robots/g1_humanoid。6.5 移动操作任务Mobile Manipulation Tasks使用带移动底盘的机器人如 Fetch执行操作任务。TaskDense RewardSuccess/FailDemosMax StepsOpenCabinetDoor-v1✅✅❌100OpenCabinetDrawer-v1✅✅❌100RoboCasaKitchen-v1❌❌❌100关键任务卡片要点OpenCabinetDrawer-v1使用 Fetch 移动操作机器人靠近目标柜子并拉开指定抽屉。随机化机器人初始位于距柜子 1.6–1.8 米并面向柜子底盘朝向随机 ±9°柜子从所有含抽屉的 PartNet-Mobility 柜子中随机采样抽屉从所有可开抽屉中随机选择。成功条件抽屉至少打开 90%且抽屉 link 的角/线速度较小。目标指定3D 目标位置位于待开抽屉把手网格的质心人视角渲染中以球体可视化。该类任务需要下载 PartNet-Mobility 资产带Download Asset徽章。实现见 open_cabinet_drawer.py场景级移动操作另有社区基准见 外部基准。6.6 灵巧手任务Dextrous Hand Tasks使用灵巧手DClaw、Allegro Hand、TriFingerPro执行精密操作任务普遍分 Level 0–4 难度梯度。RotateValveLevel0-v1 ~ Level4-v1DClaw旋转 ROBEL 阀门。随机化重配置阶段旋转方向 rLevel 0 固定 r1Level 4 为 {1, -1}阀瓣数 vLevel 0-1 固定 3Level 2-4 为 [3, 6]阀瓣角度 φLevel 0 等间距 (0, 2π/3, 4π/3)Level 1-4 每个角度随机Level 4 额外随机化阀瓣半径初始阀门旋转随机。成功条件阀门从初始位置旋转超过 θ 弧度Level 0: π/2Level 1-3: πLevel 4: 2π。目标指定旋转方向 r1 或 -1旋转量隐含在关卡中。RotateSingleObjectInHandLevel0-v1 ~ Level4-v1Allegro Hand使用带触觉传感器的 Allegro 手旋转随机物体部分细节标注为 WIP。TriFingerRotateCubeLevel0-v1 ~ Level4-v1TriFingerPro旋转立方体。Level 0桌上随机目标位置、无朝向Level 1桌上随机位置偏航朝向Level 2空中固定目标位x,y0、无朝向Level 3空中随机位置Level 4空中随机位姿含朝向。成功条件立方体距目标位置 ≤ 0.02m、朝向偏差 ≤ 0.1 rad。实现见 mani_skill/envs/tasks/dexterity。6.7 数字孪生任务Digital TwinsManiSkill 同时支持训练型在仿真中训练、部署到真实世界的 sim2real与评估型用真实世界数据训练的模型回仿真评估的 real2sim数字孪生并提供简洁的构建框架。训练型数字孪生WIP官方标注Coming soon构建中。BridgeData v2评估型基于 BridgeData v2 环境、参照 SimplerEnv 构建的真实世界通用操作策略评估数字孪生。这些数字孪生同样 GPU 并行化可大规模、快速评估真实世界的通用机器人策略GPU 仿真渲染相较真实世界快约 60 倍、相较 CPU 仿真快约 10 倍全程无需人工监督。ManiSkill 只提供环境本身运行 Octo、RT 等模型推理需使用 SimplerEnv 的 maniskill3 分支。目前已提供四个评估环境PutCarrotOnPlateInScene-v1PutSpoonOnTableClothInScene-v1StackGreenCubeOnYellowCubeBakedTexInScene-v1PutEggplantInBasketScene-v1对应演示视频位于 figures/environment_demos/digital_twins/bridge_data_v2实现见 mani_skill/envs/tasks/digital_twins。若在研究中引用 BridgeData v2 数字孪生文档要求同时引用 ManiSkill 3 及 SimplerEnv 论文arXiv:2405.05941。6.8 绘图任务Drawing Tasks控制机器人绘制指定形状或图案典型配置为白画布 带笔/棒的机器人画红色线条。TaskDense RewardSuccess/FailDemosMax StepsTableTopFreeDraw-v1❌❌❌1000DrawSVG-v1❌✅❌500DrawTriangle-v1❌✅✅300关键任务卡片要点TableTopFreeDraw-v1在桌面实例化白画布与带棒的机器人可自由绘制红色线条。该环境主要作为参考模板供开发者复制并构建自己的绘图任务无随机化、无成功条件、无目标。DrawSVG-v1在画布上给定带轮廓的 SVG 路径机器人用红线绘制。随机化目标 SVG 在 xy 平面位置随机、z 旋转在 [0, 2π] 随机。成功条件机器人绘制的点与目标 SVG 上各点欧氏距离 ≤ 0.05m。DrawTriangle-v1绘制目标三角形含演示数据成功条件同上。实现见 mani_skill/envs/tasks/drawing。6.9 外部基准任务External Benchmarks/Tasks由社区贡献、构建于 ManiSkill 之上的任务与外部库。ManiSkill-HAB家庭整理任务低层操作基准包含 3 个长时程任务TidyHouse将 5 个目标物体移动到不同的开放收纳容器桌、台面等PrepareGroceries将 2 个物体从打开的冰箱移到台面目标位再将 1 个物体从台面放回冰箱SetTable将 1 个碗从关闭的抽屉移到餐桌并将 1 个苹果从关闭的冰箱移到同一餐桌。任务拆分为 4 个子任务Pick、Place、Open、Close。随机化目标物体/关节物体/目标依子任务而定底盘 x/y 位置与 z 旋转、手臂与躯干 qpos 噪声。成功条件Pick物体被抓住、末端执行器回到静止位、机器人静止、Place物体距目标位置 ≤ 15cm、末端执行器静止位、机器人静止、Open/Close关节物体打开/关闭、末端执行器静止位、机器人静止。失败条件机器人累积碰撞力超过阈值Pick 5000N、Place 7500N、Open/Close 10000N。完整任务最大步数 1200–2000子任务为 200。该任务演示视频与海报图位于 figures/environment_demos/ManiSkill-HAB_rt.mp4 与 docs/source/_static/env_thumbnails/ManiSkill-HAB_rt_poster.png相关文献为 arXiv:2412.13211。七、从源码理解任务注册与实现任务文档并非孤立的文字描述而是由源码直接生成并与之严格对应。以基线任务 PickCube-v1 为例register_env(PickCube-v1, max_episode_steps50) class PickCubeEnv(BaseEnv): goal_thresh 0.025 cube_spawn_half_size 0.05 SUPPORTED_ROBOTS [panda, fetch, xarm6_robotiq, so100, widowxai]关键点环境 ID 与最大步数由register_env(PickCube-v1, max_episode_steps50)装饰器声明pick_cube.py注册机制定义在 mani_skill/utils/registration.py成功阈值goal_thresh 0.025、生成区域cube_spawn_half_size 0.05为类属性与任务卡片完全一致场景构建通过TableSceneBuildermani_skill/utils/scene_builder/table完成立方体与绿色目标球分别由actors.build_cube/actors.build_sphere创建episode 初始化在_initialize_episode中完成对每个并行环境采样 xy 位置、用randomization.random_quaternions生成随机姿态任务文档字符串PICK_CUBE_DOC_STRING与类定义同处一个文件由 generate_task_docs.py 自动渲染成docs/source/tasks/下的分类文档。因此读者若想确认某任务的精确参数阈值、步数、机器人列表、随机化范围直接阅读对应分类目录下的 Python 源文件如 mani_skill/envs/tasks/tabletop、mani_skill/envs/tasks/control即可获得与文档一致且更细粒度的实现细节。八、实践指引总结选择任务按需求在九大分类中挑选环境 ID参考任务卡片中的机器人支持列表、成功条件与随机化范围准备资源若任务带 Download Asset 徽章先执行python -m mani_skill.utils.download_asset env_id需要演示则执行python -m mani_skill.utils.download_demo env_id选择观察模式追求真值信息用state/state_dict面向真实世界部署用视觉观察模式真值位姿会被移除训练与评估配合官方基线见 examples/baselines 中的 PPO、SAC、BC、Diffusion Policy 等实现或自定义算法在 GPU 并行环境下大规模采样。ManiSkill 的任务体系以任务卡片为统一信息载体以 GPU 并行化为底层能力覆盖从经典控制到灵巧操作、从数字孪生到社区基准的完整谱系是机器人学习研究中进行任务选择、复现对比与自定义扩展的可靠起点。【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表