跳转到内容

Layout Config

layout_config 支持大量的布局预设及灵活配置;基础的两个 key 是:

  • ignored_objects:被忽略不参与布局的对象列表(names/UIDs)。
  • type:布局类型字符串。

下面按 layout type 逐项说明。

None 表示保持场景文件中已有的布局,不做随机化。适用于你已经有一个手工摆放好的布局并希望保持其不变的场景。

注意:通过 add_additional_object_from_pathload_object_from_path 新加载的物体在 None 模式下默认不会被放到桌面(程序实现中会将它们放置在远离桌面的地方),需要使用其它 layout type 将它们放入桌面区域。

random_all 会对场景中(除 ignored_objects 指定的外)所有物体随机放置并避免碰撞,等价于对整张桌面使用 global_range 的大 bbox。

random_custom_tableset 允许对每个物体单独指定布局规则。你需要提供 custom_tableset 字典,其中 key 为 meta object 名称,value 为该对象的布局配置。

示例结构:

layout_config:
ignored_objects: []
type: random_custom_tableset
in_order: true # 是否按 custom_tableset 中的顺序依次布局
custom_tableset:
"apple":
type: global_range
random_range_angle: 360
random_range_h: 0.7
random_range_w: 0.4
random_range_x: -0.2
random_range_y: -0.35
"plate":
type: global_range
random_range_angle: 360
random_range_h: 0.7
random_range_w: 0.4
random_range_x: -0.2
random_range_y: -0.35
"banana":
type: global_range
random_range_angle: 360
random_range_h: 20
random_range_w: 20
random_range_x: -10
random_range_y: -10

常见的单个对象布局类型:

  • global_range:在世界坐标系指定的 XYWH 区域内随机放置,并把物体底面贴到桌面。区域由 random_range_x, random_range_y, random_range_w, random_range_h 定义,物体在 [0, random_range_angle] 度内随机旋转;最终与桌面区域取交集。物体的边缘必须落在 bbox 内(若 bbox 小于物体尺寸,布局会失败)。random_all 实际上等价于为每个对象指定一个覆盖整张桌面的 global_range

    示例:

    "apple":
    type: global_range
    random_range_angle: 360
    random_range_h: 0.7
    random_range_w: 0.4
    random_range_x: -0.2
    random_range_y: -0.35
  • fixed_global_range:将物体放在固定 XY 位置(pos_x, pos_y),并把物体底面贴到桌面。物体仍会在 [0, random_range_angle] 内旋转(可设置为 0)。可指定 pos_z 固定 z。不保证碰撞规避。

    示例:

    "bread":
    pos_x: -0.17217
    pos_y: -0.45642
    random_range_angle: 0
    type: fixed_global_range
  • centric_range:在物体中心的邻域内随机放置并规避碰撞。该邻域由物体 bbox 向上下左右扩展 h/2w/2 得到。旋转从 [0, angle] 采样;若 angle_bilateral: true 则从 [-angle, +angle] 采样。

    示例:

    "box":
    w: 0.05
    h: 0.05
    angle: 0
    angle_bilateral: false
    type: centric_range

所有布局类型都支持以下可选参数:

  • additional_height:浮点数,使物体相对于桌面上升该米数。
  • reset_orientation:布尔值,是否在开始时重置物体朝向。默认的重置朝向为四元数 [0.5, 0.5, 0.5, 0.5]
  • orientation:指定一个朝向来覆盖默认重置朝向。