跳转到内容

Generation Config

generation_config 控制数据生成过程。当前 GenManip 的本质任务为 Pick-and-Place,下面补充更详细的可选项与语义。

goal 使用嵌套列表来表示逻辑关系:

  • 外层列表 = 逻辑 OR(选择多种可替代的目标集合)
  • 内层列表 = 逻辑 AND(同一目标集合内的多个约束需同时满足)

示例:

  • [[{banana → left of plate}], [{banana → right of plate}]]:香蕉可以放在盘子的左边 右边。
  • [[{banana → left of plate}, {cup → right of plate}]]:香蕉必须放在左边,杯子必须放在右边(两个要求同时成立)。

每个目标项至少包含 obj1_uidobj2_uidposition。抓取姿态通常由 AnyGrasp 提供。

此外,goal 还支持三层列表(three-level list)——用于在同一 Config 中定义若干互相独立的任务并随机抽取执行(表示不同任务的集合),这与把多个目标放在同一内层(AND)语义不同(AND 表示同时满足多个条件,而三层列表表示在不同任务间采样)。

示例(较为完整的 goal 配置):

obj1_uid:
- 'bread4'
obj2_uid:
- 'beef'
position:
- top
fixed_position: true
fixed_position_config:
translation: [0.0, 0.02, -0.01]
orientation: [0.924, -0.383, 0.0, 0.0]
force_fixed_grasp: true
fixed_grasp_config:
translation: [0.0, 0.0, -0.03]
allow_fixed_grasp: true
mesh_top_only: true
ignored_uid:
- 'plate'
- 'bread2'
arm: auto
motion_config:
pre_grasp_distance: 0.08
post_grasp_distance: 0.16
pre_place_distance: null
post_place_distance: 0.08

GenManip 的 Pick-and-Place 轨迹生成策略如下:

  1. 计算抓取位姿(grasp pose)与放置位姿(place pose)。
  2. 基于抓取/放置位姿沿夹爪朝向推导出四个辅助位姿:pre_grasppost_grasppre_placepost_place。默认位移距离分别为 0.08m0.16m0.16m0.08m
  3. 在这些位姿之间进行插值,得到连续的轨迹(motion)。

固定抓取 / 固定放置(Fixed grasp / Fixed placement)

Section titled “固定抓取 / 固定放置(Fixed grasp / Fixed placement)”
  • allow_fixed_grasp(bool):允许在 AnyGrasp 无响应时使用固定计算的抓取位姿(基于 mesh top)。

  • force_fixed_grasp(bool):强制使用固定抓取位姿(直接忽略 AnyGrasp)。

  • fixed_grasp_config:用于指定固定抓取位姿的相对平移与朝向,例如:

    fixed_grasp_config:
    translation: [0.0, 0.0, -0.03] # 相对平移
    orientation: [0.924, -0.383, 0.0, 0.0] # 绝对朝向,四元数 wxyz
  • fixed_position(bool):是否使用固定放置位置(默认放置在容器中心,放置物底面与容器顶端对齐)。

  • fixed_position_config:覆盖默认放置位置的平移与朝向,例如:

    fixed_position_config:
    translation: [0.0, 0.02, -0.01] # 相对平移
    orientation: [0.924, -0.383, 0.0, 0.0] # 绝对朝向,四元数 wxyz
  • ignored_uid:放置计算时应忽略(不作为碰撞物考虑)的 UID 列表(例如在堆叠场景中忽略某些已有物体)。

  • mesh_top_only:若为 true,仅使用物体网格的最高点来计算抓取位姿;默认会使用裁剪区域(crop)后的 mesh 的顶点集合。

  • arm:字符串,"auto" | "left" | "right",用于双臂场景指定使用哪只机械臂;auto 会选择距离抓取位姿最近的臂。
  • motion_config:字典,包含 pre_grasp_distancepost_grasp_distancepre_place_distancepost_place_distance。若为 null,表示跳过对应的动作阶段。

示例:

motion_config:
pre_grasp_distance: 0.08
post_grasp_distance: 0.16
pre_place_distance: null
post_place_distance: 0.08
  • Action Path:通常设置为 mode: autorobot: 0,GenManip 会基于 goal 自动解析出动作序列(action sequence)。
  • planner:当前默认使用 curobo(实验中表现优于早期的 mplib)。建议保留默认设置,除非你有特殊需要。