FilterBoxList 筛选箱子

FilterBoxList 算子用于按照一定的需求来筛选箱子点云列表 cloudlist 。

ByAxisZ 按照箱子点云列表 cloudlist 的 Z 轴坐标值进行筛选,筛选出最上层箱子,并对最上层箱子进行排序。
ByArea 按照箱子点云列表 cloudlist 的抓取区域进行筛选,筛选出最先需要抓取的箱子及其附近某范围内的箱子。

ByAxisZ

算子参数

  • 选择模式/select_mode:选择筛选的模式。

    • Z_MAX:在机器人坐标系下最高的箱子。

    • Z_MIN:在相机坐标系下最高的箱子。

  • 选择阈值/select_thresh:选择筛选的阈值。如果某个箱子的点云中心 Z 值与最高的箱子的点云中心 Z 值的差值小于阈值,则判定为最上层箱子。

  • x权重/weight_x:筛选出最上层箱子列表后,对其按照 X 值和 Y 值进行排序,weight_x 为 X 值的权重。

  • y权重/weight_y:筛选出最上层箱子列表后,对其按照 X 值和 Y 值进行排序,weight_y 为 Y 值的权重。

  • 点云列表/cloud_list:设置筛选后的点云列表在 3D 视图中的可视化属性。

    • icon_visOn 打开筛选后的点云列表可视化。

    • icon_visOff 关闭筛选后的点云列表可视化。

    • icon_color 设置筛选后的点云列表的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_opacity 设置筛选后的点云列表的尺寸。取值范围:[1,50] 。默认值:1 。

数据信号输入输出

输入:

  • cloudlist

    • 数据类型:PointCloudList

    • 输入内容:筛选前的点云列表

输出

  • cloudlist

    • 数据类型:PointCloudList

    • 输出内容:筛选后的点云列表

功能演示

使用 FilterBoxList 算子中 ByAxisZ 对 cloudlist 进行筛选。

步骤1:算子准备

添加 Trigger 、Load 、Emit 、ClusterExtraction 、FilterBoxList 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → pointcloud

    • 文件 → icon_more→ 选择点云文件名 ( example_data/pointcloud/box_stack.pcd )

  2. 设置 Emit 算子参数:

    • 类型 → pose

    • 坐标 → 生成相机坐标系的 Pose ( 0 0 0 0 0 0 ) 。

    • 坐标 → icon_visOn 可视

  3. 设置 ClusterExtraction 算子参数:

    • 最小点数 → 10000

    • 最大点数 → 100000

    • 公差值 → 0.005

    • 点云列表 → icon_visOn 可视

  4. 设置 FilterBoxList 算子参数:

    • 类型→ ByAxisZ

    • 选择模式→ Z_MIN

    • 选择阈值→ 0.1

    • x权重 → 1

    • y权重→ 1

    • 点云列表 → icon_visOn 可视

步骤3:连接算子

Box_unstack_FilterBoxList_ByAxisZ_Nodes

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子

运行结果

  1. 打开 ClusterExtraction 算子的 点云列表 可视化属性值,3D视图显示如下。

    Box_unstack_FilterBoxList_ByAxisZ_Result1

  2. 打开 FilterBoxList 算子的点云列表可视化属性值,筛选出点云列表的最上层的箱子,去掉图像右侧的四个下层箱子。3D 视图显示如下。

    Box_unstack_FilterBoxList_ByAxisZ_Result2

ByArea

算子参数

  • x权重/weight_x:按照 X 值和 Y 值选取最先抓取的箱子,x权重为 X 值的权重。

  • y权重/weight_y:按照 X 值和 Y 值选取最先抓取的箱子,y权重为 Y 值的权重。

  • 选择半径/select_radius:根据最先抓取的箱子,筛选出与最先抓取的箱子中心点在 OXY 平面上的距离小于 select_radius 的箱子。

  • 点云列表/cloud_list:设置筛选后的点云列表在 3D 视图中的可视化属性。

    • icon_visOn 打开筛选后的点云列表可视化。

    • icon_visOff 关闭筛选后的点云列表可视化。

    • icon_color 设置筛选后的点云列表的颜色。取值范围:[-2,360] 。默认值:-1 。

    • icon_opacity 设置筛选后的点云列表的尺寸。取值范围:[1,50] 。默认值:1 。

数据信号输入输出

输入:

  • cloudlist

    • 数据类型:PointCloudList

    • 输入内容:筛选前的点云列表

输出

  • cloudlist

    • 数据类型:PointCloudList

    • 输出内容:筛选后的点云列表

功能演示

使用 FilterBoxList 中 ByArea 对 cloudlist 进行筛选。

步骤1:算子准备

添加 Trigger 、Load 、Emit 、ClusterExtraction 、FilterBoxList 算子至算子图。

步骤2:设置算子参数

  1. 设置 Load 算子参数:

    • 类型 → pointcloud

    • 文件 → icon_more → 选择点云文件名 ( example_data/pointcloud/box_stack.pcd )

    • 点云 → icon_visOn 可视

  2. 设置 Emit算子参数:

    • 类型 →Pose

    • 坐标 →生成相机坐标系的Pose (0 0 0 0 0 0 )。

    • 坐标 → icon_visOn 可视

  3. 设置 ClusterExtraction 算子参数:

    • 最小点数 → 10000

    • 最大点数 → 100000

    • 公差值 → 0.005

    • 点云列表 → icon_visOn 可视

  4. 设置 FilterBoxList 算子参数:

    • 类型 → ByArea

    • x权重 → 1

    • y权重→ 1

    • 选择半径 → 0.5

    • 点云列表 → icon_visOn 可视

    说明:按照 x权重y权重 计算出最先抓取的箱子为左下角的箱子( x权重 * x + y权重 * y 从小到大排序),然后筛选出左下角箱子及其周边 选择半径范围内的箱子,这样的筛选结果便于开展多个箱子的组合抓取工作。

步骤3:连接算子

Box_unstack_FilterBoxList_ByArea_Nodes

步骤4:运行

点击 RVS 运行按钮,触发 Trigger 算子

运行结果

  1. 打开 ClusterExtraction 算子的 点云列表 可视化属性值,3D 视图显示如下:

    Box_unstack_FilterBoxList_ByArea_Result1

  2. 打开 FilterBoxList 算子的 点云列表 可视化属性值。3D 视图筛选出点云列表的左下角箱子及其周边 0.5 米范围内的箱子,3D 视图显示如下:

    Box_unstack_FilterBoxList_ByArea_Result2