FindElement 探查元素
FindElement 算子可以自动查找当前点云的对应的几何图形,并根据点到平面的距离阈值来过滤点云。
type | 功能 |
---|---|
Plane | 用于自动查找当前点云的回归平面。 |
Cylinder | 用于自动查找当前点云中的圆柱体。 |
Sphere | 用于自动查找当前点云中的球体。 |
Circle | 用于自动查找当前点云中的拟合圆。 |
Line | 用于自动查找当前点云中的直线。 |
Contour | 用于查找当前点云的轮廓点云。 |
Plane
将 FindElement 算子的 类型
设置为 Plane ,用于自动查找当前点云的回归平面 。
算子参数
最大迭代次数/max_iteration
:最大迭代次数。取值范围:[1,+∞)。默认值:1000次。距离阈值/distance_threshold
:点云过滤的距离阈值。取值范围:(0,+∞)。默认值:0.001 。单位:m。阈值百分比/percentage_threshold
:符合平面点云数占总点云数的比例。默认值:10 。当查找到的平面 percentage 小于该值时, 触发 error 信号。最小点数/min_points
:平面最小点云数。当输入数值超过平面点云的点数时,触发 error 信号。平面立方体宽度/plane_cube_width
:所查找到的平面类似 cube 的宽。默认值:0.1 。平面立方体高度/plane_cube_height
:所查找到的平面类似 cube 的长。默认值:0.15 。平面立方体深度/plane_cube_depth
:所查找到的平面类似 cube 的高。默认值:0.00001 。点云/cloud
:设置查找出平面的点云在3D视图中的可视化属性。打开点云可视化。
关闭点云可视化。
设置3D视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
坐标/pose
:设置平面点云中心点 pose 在 3D 视图中的可视化属性。打开平面点云中心点 pose 可视化。
关闭平面点云中心点 pose 可视化。
设置平面点云中心点 pose 的尺寸大小。取值范围:[0.001,10] 。默认值:0.1 。
立方体/cube
:设置平面类似 cube 在 3D 视图中的可视化属性。打开平面 cube 可视化
关闭平面 cube 可视化
设置平面 cube 的颜色。取值范围:[-2,360] 。默认值:-2 。
设置平面 cube 的透明度。取值范围:[0,1] 。默认值:0.5 。
点云列表/cloud_list
:设置查找出的平面点云列表在 3D 视图中的可视化属性。值描述与点云
一致。坐标列表/pose_list
:设置平面点云中心点 pose 列表在 3D 视图中的可视化属性。值描述与坐标
一致。立方体列表/cube_list
:设置平面 cube 列表在 3D 视图中的可视化属性。值描述与立方体
一致。
输入:
说明:根据需求选择其中一种数据信号输入即可。
input_cloud
:数据类型:PointCloud
输入内容:点云数据
input_cloud_list
:数据类型:PointCloudList
输入内容:点云数据列表
输出:
output_cloud
:数据类型:PointCloud
输出内容:平面查找出的点云数据
pose
:数据类型:Pose
输出内容:点云中心点 pose 数据
cube
:数据类型:Cube
输出内容:平面 cube 数据
output_cloud_list
:数据类型:PointCloudList
输出内容:平面查找出的点云数据列表
pose_list
:数据类型:PoseList
输出内容:点云中心点 pose 数据列表
cube_list
:数据类型:CubeList
输出内容:平面 cube 数据列表
功能演示
使用 FindElement 算子 Plane 查找加载点云的回归平面 。
步骤1:算子准备
添加 Trigger 、Load 、FindElement 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → pointcloud
文件 → → 点云文件名( example_data/pointcloud/milk.pcd )
坐标 → 可视
设置 FindElement 算子参数:
类型 → Plane
点云 → 可视
距离阈值 → 0.01
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,左图为 Load 算子加载出的点云,右图为 FindElement 算子 Plane 查找加载点云的回归平面。
Cylinder
将 FindElement 算子的 类型
设置为 Cylinder ,用于自动查找当前点云的圆柱体。
算子参数
最大迭代次数/max_iteration
:最大迭代次数,默认值:1000 。距离阈值/distance_threshold
:点云过滤的距离阈值。单位:m 。默认值:0.001 。最大半径/max_radius
:圆柱体最大半径。单位:m 。默认值:0.1 。当查找到的圆柱体半径大于该值时, 触发 error 信号。圆柱体长度/cylinder_length
:设置圆柱体的长。单位:m 。默认值:0.05 。点云/cloud
:设置查找出圆柱体点云在 3D 视图中的可视化属性。打开点云可视化。
关闭点云可视化。
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
坐标/pose
:设置平面点云中心点 pose 在3D视图中的可视化属性。打开平面点云中心点 pose 可视化。
关闭平面点云中心点 pose 可视化。
设置平面点云中心点 pose 的尺寸大小。取值范围:[0.001,10] 。默认值:0.1 。
圆柱体/cylinder
:设置圆柱体在 3D 视图中的可视化属性。打开圆柱体可视化。
关闭圆柱体可视化。
设置3D视图中圆柱体的颜色。取值范围:[-2,360] 。默认值:-2 。
点云列表/cloud_list
:设置查找出的圆柱体点云列表在 3D 视图中的可视化属性。值描述点云
一致。坐标列表/pose_list
:设置圆柱体点云中心点 pose 列表在 3D 视图中的可视化属性。值描述坐标
一致。圆柱体列表/cylinder_list
:设置圆柱体列表在 3D 视图中的可视化属性。值描述与圆柱体
一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
input_cloud
:数据类型:PointCloud
输入内容:点云数据
input_cloud_list
:数据类型:PointCloudList
输入内容:点云数据列表
输出:
output_cloud
:数据类型:PointCloud
输出内容:查找出的点云数据
pose
:数据类型:Pose
输出内容:点云中心点 pose 数据
cylinder
:数据类型:Cylinder
输出内容:圆柱体数据
output_cloud_list
:数据类型:PointCloudList
输出内容:查找出的点云数据列表
pose_list
:数据类型:PoseList
输出内容:点云中心点 pose 数据列表
cylinder_list
:数据类型:CylinderList
输出内容:圆柱体数据列表
功能演示
使用 FindElement 算子 Cylinder 查找加载点云中的圆柱 。
步骤1:算子准备
添加 Trigger 、Load 、FindElement 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 →PointCloud
文件 → → 点云文件名 ( example_data/pointcloud/cylinder.pcd )
点云 → 可视→ -2
坐标 → 可视
设置 FindElement 算子参数:
类型 → Cylinder
最大迭代次数 → 1000
距离阈值 → 0.005
最大半径 → 0.1
圆柱体长度 → 0.2
点云 → 可视
坐标 → 可视
圆柱体 → 可视
步骤3:连接算子
步骤四:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中蓝色部分和圆柱体为 FindElement 的结果。
Sphere
将 FindElement 算子的 类型
设置为 Sphere ,用于自动查找当前点云的球体。
算子参数
最大迭代次数/max_iteration
:最大迭代次数。默认值:1000 。距离阈值/distance_threshold
:点云过滤的距离阈值。单位:m ,默认值:0.01 。阈值百分比/percentage_threshold
:符合查找出点云数占总点云数的比例。默认值:50 。球体半径最小值/sphere_radius_min
:球体最小半径。默认值:0.05。当查找到的球体半径小于该值时, 触发 error 信号。单位:m 。球体半径最大值/sphere_radius_max
:球体最大半径。默认值:0.15 。当查找到的球体半径大于该值时, 触发 error 信号。单位:m 。点云/cloud
:设置查找出球体点云在 3D 视图中的可视化属性。打开点云可视化。
关闭点云可视化。
设置3D视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
坐标/pose
:设置平面点云中心点 pose 在3D视图中的可视化属性。打开平面点云中心点 pose 可视化。
关闭平面点云中心点 pose 可视化。
设置平面点云中心点 pose 的尺寸大小 。取值范围:[0.001,10] 。默认值:0.1 。
球体/sphere
:设置球体在3D视图中的可视化属性。打开球体可视化 。
关闭球体体可视化 。
设置3D视图中球体的颜色。取值范围:[-2,360] 。默认值:-2 。
设置平面立方球体的透明度。取值范围:[0,1] 。默认值:0.5 。
点云列表/cloud_list
:设置查找出的球体点云列表可视化属性。值描述与点云
一致。坐标列表/pose_list
:设置球体点云中心点 pose 列表可视化属性。值描述与坐标
一致。球体列表/sphere_list
:设置球体列表可视化属性。值描述与球体
一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
input_cloud
:数据类型:PointCloud
输入内容:点云数据
input_cloud_list
:数据类型:PointCloudList
输入内容:点云数据列表
输出:
output_cloud
:数据类型:PointCloud
输出内容:平面查找出的点云数据
pose
:数据类型:Pose
输出内容:点云中心点 pose 数据
sphere
:数据类型:Sphere
输出内容:sphere数据
output_cloud_list
:数据类型:PointCloudList
输出内容:平面查找出的点云数据列表
pose_list
:数据类型:PoseList
输出内容:点云中心点 pose 数据列表
sphere_list
:数据类型:SphereList
输出内容:sphere数据列表
功能演示
使用 FindElement 算子 Sphere 查找加载点云中的球体 。
步骤1:算子准备
添加 Trigger 、Load 、Emit 、CloudSegment 、FindElement 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → pointcloud
文件 → → 点云文件名( example_data/pointcloud/sphere.pcd )
点云 → 可视→ -2
设置 Emit 算子参数:
类型 → Cube
坐标 → 0 -0.000457 1.10531 -0.110497 0 0
宽度 → 1.6
高度 → 1
深度 → 1
设置 CloudSegment 算子参数:
说明:该算子用于去除背景点云。
类型 → Cropboxsegment
模式 → outside_points
设置 FindElement 算子参数:
类型 → Sphere
最大迭代次数 → 1000
距离阈值 → 0.01
阈值百分比 → 25
球体半径最小值 → 0.03
球体半径最大值 → 0.05
点云→ 可视
球体→ 可视
步骤3:连接算子
步骤四:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中紫色部分和球体为 FindElement 的结果。
Circle
将 FindElement 算子的 类型
设置为 Circle ,用于自动查找当前点云的拟合圆。圆心的朝向与 RVS 坐标系的 Z 轴相反。
算子参数
最大迭代次数/max_iteration
:最大迭代次数,默认为1000次。距离阈值/distance_threshold
:单个点云与拟合圆的距离阈值,高于阈值的点不参与最终拟合。取值范围:(0,+∞)。默认值:0.01。单位:m。点云/cloud
:设置查找出平面的点云在 3D 视图中的可视化属性。打开点云可视化。
关闭点云可视化。
设置3D视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[0,50] 。默认值:1 。
坐标/pose
:设置拟合圆中心点 pose 在 3D 视图中的可视化属性。打开拟合圆中心点 pose 可视化。
关闭拟合圆中心点 pose 可视化。
设置拟合圆中心点 pose 的尺寸大小。取值范围:[0.001,10] 。默认值:0.1 。
圆圈/circle
:设置拟合圆在3D视图中的可视化属性。打开拟合圆可视化。
关闭拟合圆可视化。
设置拟合圆的颜色。取值范围:[-2,360] 。默认值:-2 。
点云列表/cloud_list
:设置查找出平面的点云列表在 3D 视图中的可视化属性。值描述与点云
一致。坐标列表/pose_list
:设置拟合圆中心点 pose 列表在 3D 视图中的可视化属性。值描述与坐标
一致。圆圈列表/circle_list
:设置拟合圆列表在 3D 视图中的可视化属性。值描述与圆圈
一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
cloud
:数据类型:PointCloud
输入内容:点云数据
cloud_list
:数据类型:PointCloudList
输入内容:点云数据列表
输出:
cloud
:数据类型:PointCloud
输出内容:拟合圆所用的最终点云
pose
:数据类型:Pose
输出内容:拟合圆的中心点位姿,z 轴为圆平面法向量
Circle
:数据类型:Circle
输出内容:拟合圆
cloud_list
:数据类型:PointCloudList
输出内容:拟合圆所用的最终点云列表,点云在列表中的位置同下述列表保持一致
pose_list
:数据类型:PoseList
输出内容:点云中心点位姿数据列表,z轴为圆平面法向量
circle_list
:数据类型:CircleList
输出内容:拟合圆列表
功能演示
使用 FindElement 算子中 Circle 自动查找加载点云的拟合圆。
步骤1:算子准备
添加 Trigger 、Load 、CloudProcess 、GeometryProbe (2个) 、FindElement(2个) 、 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → pointcloud
文件 → → 选择点云文件名( example_data/pointcloud/circle_crop.pcd )
点云 → 可视
设置 CloudProcess 算子参数:
类型 → CloudCentroid
设置 GeometryProbe 算子参数:
类型 → Circle
探测方向 → external
圆锥体顶角度→ 70
有效点百分比数→ 0.05
步进值 → 5
圆圈点云→ 可视
设置 GeometryProbe_1 算子参数:
类型 → Circle
探测方向 → internal
圆锥体顶角度→ 45
有效点百分比数→ 0.05
步进值 → 5
圆圈点云→ 可视
设置 FindElement 算子参数:
类型 → Circle
最大迭代次数 → 1000
距离阈值 → 0.001
说明:由于此时案例所用的点云密度很高,所以这里设置的阈值参数很小。实际使用图漾相机时,设置到 0.001 到 0.01 之间比较合适。
坐标 → 可视
圆圈 → 可视
设置 FindElement_1 算子参数:
类型 → Circle
最大迭代次数 → 1000
距离阈值 → 0.0005
坐标 → 可视 → 0.1
圆圈 → 可视
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
结果如下图所示,比例较小的 pose 为 CloudProcess 算子的 pose 可视化结果,比例较大的 pose 为 FindElement 算子的 pose 参数的可视化结果。
左图白色圆圈为 FindElement 算子中的 Circle 可视化结果,右图白色圆圈为 FindElement_1 算子的 Circle 可视化结果。
Line
将 FindElement 算子的 类型
设置为 Line,用于自动查找当前点云的拟合直线。线段 P1与 P2 的朝向 RVS 坐标系 X 轴正方向,P1_X < P2_X。
算子参数
最大迭代次数/max_iteration
:最大迭代次数,默认值。1000 。距离阈值/distance_threshold
:单个点云与拟合直线的距离阈值,高于阈值的点不参与最终拟合。取值范围:(0,+∞)。默认值:0.003 。单位:m 。线段长度/line_length
:最终拟合直线的显示长度。点云/cloud
:设置拟合直线所用点云在 3D 视图中的可视化属性。打开点云可视化。
关闭点云可视化。
设置3D视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
线段/line
:设置拟合直线的可视化在 3D 视图中的可视化属性。打开拟合直线可视化。
关闭拟合直线可视化。
设置拟合直线的颜色。取值范围:[-2,360] 。默认值:60 。
设置拟合直线的线宽。取值范围:[1,50] 。默认值:1 。
点云列表/cloud_list
:设置拟合直线所用点云列表在 3D 视图中的可视化属性。值描述与点云
一致。线段列表/line_list
:设置拟合直线列表的可视化在 3D 视图中的可视化属性。值描述与线段
一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
cloud
:数据类型:PointCloud
输入内容:点云数据
cloud_list
:数据类型:PointCloudList
输入内容:点云数据列表
输出:
cloud
:数据类型:PointCloud
输出内容:拟合直线所用的最终点云
line
:数据类型:Line
输出内容:拟合直线
cloud_list
:数据类型:PointCloudList
输出内容:拟合圆所用的最终点云列表,点云在列表中的位置同下述列表保持一致
line_list
:数据类型:LineList
输出内容:拟合直线列表
功能演示
使用 FindElement 算子中 Line 自动查找加载点云的拟合直线。
步骤1:算子准备
添加 Trigger 、Load 、Emit 、LineOperation 、GeometryProbe (2个)、FindElement (2个)、WaitAllTriggers 算子至算子图。
步骤2:设置算子参数
设置 Emit算子参数:
类型 → cube
坐标 → 0.199179 0.26519 0.092586 2.61142 -2.82994 3.07943
宽度 → 0.02
高度 → 0.01
深度 → 0.005
设置 Load 算子参数:
类型 → PointCloud
文件 → → 选择点云文件名( example_data/pointcloud/cloud.pcd )
设置 FindElement 算子参数:
类型 → Line
最大迭代次数 → 1000
距离阈值 → 0.0001
线段长度 → 0.1
线段 → 可视
设置 FindElement_1 算子参数:
类型 → Line
最大迭代次数 → 1000
距离阈值 → 0.0001
线段长度 → 0.1
线段 → 可视
设置 GeometryProbe 算子参数
类型 →Line
探测方向 → y-
圆锥体顶角度 → 45
有效点百分比数 → 10
步进值 → 5
有效点云 → 可视 → 3
线段点云 → 可视 → 3
设置 GeometryProbe_1 算子参数
类型 →Line
探测方向 → x-
圆锥体顶角度 → 45
有效点百分比数 → 10
步进值 → 5
有效点云 → 可视 → 3
线段点云→ 可视 → 3
设置 LineOperation 算子参数:类型 →LineCrossPoint
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
结果如下图所示,蓝色/绿色点云为 GeometryProbe 算子的 line_cloud 可视化结果,黄色拟合直线为 FindElement 算子的 line 参数的可视化结果 。
Contour
将 FindElement 算子的 类型
设置为 Contour ,用于查找当前点云的轮廓点云。
算子参数
间隔/interval
:在该间隔内对点云进行采样。单位:m ,默认值:0.003 。距离/distance
:在该距离内对点云寻取内轮廓点。单位:m ,默认值:0.006 。点云/cloud
:设置轮廓点云在 3D 视图中的可视化属性。打开点云可视化。
关闭点云可视化。
设置3D视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
坐标/pose
:设置点云中心点 pose 在3D视图中的可视化属性。打开点云中心点 pose 可视化。
关闭点云中心点 pose 可视化。
设置点云中心点 pose 的尺寸大小 。取值范围:[0.001,10] 。默认值:0.1 。
点云列表/cloud_list
:设置查找出的轮廓点云列表可视化属性。值描述与点云
一致。坐标列表/pose_list
:设置点云中心点 pose 列表可视化属性。值描述与坐标
一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
cloud
:数据类型:PointCloud
输入内容:点云数据
cloud_list
:数据类型:PointCloudList
输入内容:点云数据列表
输出:
cloud
:数据类型:PointCloud
输出内容:输入点云的轮廓点云
pose
:数据类型:Pose
输出内容:输入点云的中心点pose
cloud_list
:数据类型:PointCloudList
输出内容:输入点云列表的轮廓点云
pose_list
:数据类型:PoseList
输出内容:输入点云列表中心点 pose 数据列表
功能演示
使用 FindElement 算子 Contour 查找加载点云中的轮廓点云 。
步骤1:算子准备
添加 Trigger 、Load 、FindElement 算子至算子图。
步骤2:设置算子参数
设置 Load 算子参数:
类型 → pointcloud
文件 → → 点云文件名( example_data/pointcloud/back.pcd )
点云 → 可视→ -2
设置 FindElement 算子参数:
类型 → Contour
间隔 →0.15
点云 → 可视
坐标 → 可视
步骤3:连接算子
步骤四:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中紫色点云为轮廓点云和点云中心点 pose 的结果。