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 的结果。