CloudProcess 点云处理
CloudProcess 算子用于点云处理,包含 CloudCentroid 、EstimateNormal 、MergeCloud 、NANRemoval 、RadiusOutlierRemoval 。
type | 功能 |
---|---|
CloudCentroid | 功能用于输出点云的 pose 中心。 |
EstimateNormal | 求出点云相应的法向量。 |
MergeCloud | 将多个点云合并为一个点云输出。 |
NANRemoval | 用于去除 NAN(不是数)值。(点云图中的 NAN 值代表无效或未定义的点,需要注意检测和处理以避免影响点云的处理和分析结果。) |
RadiusOutlierRemoval | 半径滤波。对点云中的每一个点确定一个半径的邻域,若邻域范围内点数 < min_neighbors ,则认为该点为噪声点,并剔除。 |
ParseCloud | 用于输出点云或者点云列表的物品类型。 |
CloudCentroid
将 CloudProcess 点云处理 类型
设置为 CloudCentroid ,用于输出点云的
pose 中心。
注意:输出的姿态自动选择为基坐标系而不是沿着目标的长宽方向。
算子参数
-
坐标/pose
:设置点云中心 pose 在 3D 视图中的可视化属性。-
打开点云中心 pose 可视化。
-
关闭点云中心 pose 可视化。
-
设置点云中心 pose 的尺寸大小。取值范围:[0.001,10] 。默认值:0.1。
-
-
坐标列表/pose_list
:设置逆 pose 列表在 3D 视图中的可视化属性。值描述与 pose 一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
-
cloud
:-
数据类型:PointCloud
-
输入内容:点云数据
-
-
cloud_list
:-
数据类型:PointCloudList
-
输入内容:点云列表数据
-
输出:
-
pose
:-
数据类型:Pose
-
输出内容:点云中心 pose 数据
-
-
pose_list
:-
数据类型:PoseList
-
输出内容:点云中心 pose 数据列表
-
功能演示
使用 CloudProcess 算子中 CloudCentroid 输出加载点云的 pose 中心。
步骤1:算子准备
添加 Trigger 、Load 、CloudProcess 算子至算子图。
步骤2:设置算子参数
-
设置 Load 算子参数:
-
类型 → PointCloud
-
文件 → → 选择点云文件名( example_data/pointcloud/line.pcd )
-
点云→ 可视
-
-
设置CloudProcess算子参数:
-
类型→ CloudCentroid
-
坐标 → 可视
-
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,在 3D 视图中显示加载的点云及其中心 pose 。
EstimateNormal
将 CloudProcess 点云处理 类型
设置为 EstimateNormal ,用于求出点云相应的法向量。
-
搜索半径/search_radius
:该属性表示点云中的点的半径,半径范围内,搜索到多个相邻点拟合出的平面的法向量即当前点的法向量。 -
反转法线/flip_normals
:法向量反转。-
True:反转点云法向量的朝向。
-
False :点云法向量的朝向正常。
-
-
点云/cloud
:设置点云相应的法向量在 3D 视图中的可视化属性。-
打开点云相应的法向量可视化。
-
关闭点云相应的法向量可视化。
-
设置3D视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
-
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
-
数据信号输入输出
输入:
-
cloud
:-
数据类型:PointCloud
-
输入内容:点云数据
-
输出:
-
cloud
:-
数据类型:PointCloud
-
输出内容:点云数据及其法向量
-
功能演示
步骤1:算子准备
添加 Trigger 、Load 、CloudProcess 算子至算子图。
步骤2:设置算子参数
-
设置 Load 算子参数:
-
类型 → PointCloud
-
文件 → → 选择点云文件名( example_data/pointcloud/model.pcd )
-
-
设置 CloudProcess 算子参数:
-
类型 → EstimateNormal
-
步骤3:连接算子
步骤4:运行
-
点击 RVS 运行按钮,触发 Trigger 算子。
-
双击3D视图中的点云,显示 POINTCLOUD 面板,勾选“显示法向量”。
运行结果
如下图所示,在 3D 视图中显示加载的点云及其法向量。
MergeCloud
将 CloudProcess 点云处理 类型
设置为 MergeCloud ,用于将多个点云合并为一个点云输出。
算子参数
-
输入数量/number_input
:决定该算子的输入端口 cloud 的数量。取值范围:[0,10]。默认值:1。 -
列表输入数量/number_input_list
:决定该算子的输入端口 cloud_list 的数量。取值范围:[0,10]。默认值:0 。 -
点云/cloud
:设置合并后点云在 3D 视图中的可视化属性。-
打开合并后点云可视化。
-
关闭合并后点云可视化。
-
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
-
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
-
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
-
input_0/1
:-
数据类型:PointCloud
-
输入内容:点云数据
-
输出:
-
cloud
:-
数据类型:PointCloud
-
输出内容:合并后点云数据
-
功能演示
使用 CloudProcess 算子中 MergeCloud 将加载的两个点云合并成一个点云输出。
步骤1:算子准备
添加 Trigger、Load(2个)、 CloudProcess 算子至算子图。
步骤2:设置算子参数
-
设置 Load 算子参数:
-
类型 → PointCloud
-
文件 → → 选择点云文件名( example_data/pointcloud/wolf1.pcd )
-
-
设置 Load_1 算子参数:
-
类型 → PointCloud
-
文件 → → 选择点云文件名( example_data/pointcloud/wolf2.pcd )
-
-
设置 CloudProcess 算子参数:
-
类型 → MergeCloud
-
文件 → 可视
-
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中显示合并后的点云。
NANRemoval
将 CloudProcess 点云处理 类型
设置为 NANRemoval,用于去除 NAN 值。
算子参数
-
点云/cloud
:设置去除NAN值后点云在 3D 视图的可视化属性。-
打开去除 NAN 值后点云可视化
-
关闭去除 NAN 值后点云可视化
-
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
-
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
-
-
点云列表/cloud_list
:设置去除 NAN 值后点云列表的可视化属性。值描述与点云
一致。
数据信号输入输出
输入:
说明:根据需求选择其中一种数据信号输入即可。
-
cloud
:-
数据类型:PointCloud
-
输入内容:点云数据
-
-
cloud_list
:-
数据类型:PointCloudList
-
输入内容:点云列表数据
-
输出:
-
cloud
:-
数据类型:PointCloud
-
输出内容:去除NAN值后点云数据
-
-
cloud_list
:-
数据类型:PointCloudList
-
输出内容:去除 NAN 值后点云列表数据
-
功能演示
步骤1:算子准备
添加 Trigger 、Load、CloudProcess 、Save 算子至算子图。
步骤2:设置算子参数
-
设置 Load 算子参数:
-
类型 → PointCloud
-
文件 → → 选择点云文件名( example_data/pointcloud/pointcloud_ascii.pcd ) ,此点云为 ascii 形式。
-
-
设置 CloudProcess 算子参数:类型 → NANRemoval
-
设置 Save 算子参数:
-
类型 → PointCloud
-
format → ascii
-
文件 → NAN_pointcloud_ascii.pcd
-
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。保存点云 NAN_pointcloud_ascii.pcd 。
运行结果
使用 vscode 编辑器打开两个点云文件进行对比,会发现 NAN_pointcloud_ascii.pcd 点云文件中去除了 NAN 值,并且将有序点云变成了无序点云。
RadiusOutlierRemoval
将 CloudProcess 点云处理 类型
设置为 RadiusOutlierRemoval ,用于半径滤波。对点云中的每一个点确定一个半径的邻域,若邻域范围内点数 < min_neighbors ,则认为该点为噪声点,并剔除。
算子参数
-
搜索半径/search_radius
:以点云中的点为圆心设置半径。默认值:0.1 。单位:m。注意:该属性值设置与点云的密度和单位有关。如果运行过程中出现算子卡死的情况,建议从小到大逐步调整该参数,并不断测试效果。
-
最小邻居数/min_neighbors
:点半径范围内最少的邻近点。当小于该值时,剔除该点。 -
点云/cloud
:设置半径滤波后点云在3D视图中的可视化属性。-
打开半径滤波后点云可视化。
-
关闭半径滤波后点云可视化。
-
设置 3D 视图中点云的颜色。取值范围:[-2,360] 。默认值:-1 。
-
设置点云中点的尺寸。取值范围:[1,50] 。默认值:1 。
-
数据信号输入输出
输入:
-
cloud
:-
数据类型:PointCloud
-
输入内容:点云数据
-
输出:
-
cloud
:-
数据类型:PointCloud
-
输出内容:半径滤波后点云数据
-
功能演示
步骤1:算子准备
添加 Trigger 、Load 、DownSampling 、CloudProcess 算子至算子图。
步骤2:设置算子参数
-
设置 Load 算子参数:
-
类型 → PointCloud
-
文件 → → 选择点云文件名( example_data/pointcloud/ClusterExtraction_cloud.pcd )
-
-
设置 DownSampling 算子参数:
-
类型 → DownSample
-
x 方向采样 → 0.02
-
y 方向采样 → 0.02
-
z 方向采样 → 0.02
-
点云 → 可视
-
-
设置 CloudProcess算 子参数:
-
类型 → RadiusOutlierRemoval
-
搜索半径 → 0.05
-
最小邻居数 → 40
-
点云 → 可视
-
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,3D 视图中,左图为 DownSampling 算子结果,右图为半径滤波后的结果。
ParseCloud
将 CloudProcess 点云处理 类型
设置为 ParseCloud ,用于输出点云或者点云列表的物品类型。 通常用于查看 ai 推理后的物品类型。
算子参数
-
标签/label
:设置点云标签的曝光属性。打开后可用与交互面板中输出工具文本框
进行绑定。-
打开点云标签的曝光属性。
-
关闭点云标签的曝光属性。
-
-
标签列表/label_list
:设置点云标签的曝光属性。打开后可用与交互面板中输出工具表格
进行绑定。-
打开点云标签列表的曝光属性。
-
关闭点云标签列表的曝光属性。
-
数据信号输入输出
输入:
-
cloud
:-
数据类型:PointCloud
-
输入内容:点云数据
-
-
cloud_list
:-
数据类型:PointCloudList
-
输入内容:点云列表数据
-
输出:
-
label
:-
数据类型:String
-
输出内容:物品类型
-
-
label_list
:-
数据类型:StringList
-
输出内容:物品类型列表
-
功能演示
步骤1:算子准备
添加 Trigger( 3 个)、Load( 2 个)、LoadCalibFile、AIDetectGPU、ProjectMask、CloudProcess 算子至算子图
步骤2:设置算子参数
-
设置 Trigger_1 算子参数:
-
算子名称→Init_Trigger
-
类型 → InitTrigger
-
-
设置 Trigger_2 算子参数:
-
算子名称→AI_Trigger
-
类型 → InitTrigger
-
-
设置 Load 算子参数:
-
类型 → Image
-
文件 → →选择图像文件名 (example_data/mask_data_train/20221010113840917/rgb.png )
-
图像 → 可视
-
-
设置 Load_1 算子参数:
-
类型 → PointCloud
-
文件 → → 选择与图像匹配点云文件名 (example_data/mask_data_train/20221010113840917/cloud.pcd )
-
点云 → 可视
-
-
设置 LoadCalibFile 算子参数:
-
相机标定文件 → 图漾相机出厂标定文件 ( example_data/mask_data_train/mask_ty_color_calib.txt )
-
-
设置 AIDetectGPU 算子参数:
说明:该端口连接/不连接,输出所有类别的旋转矩阵。连接时,可填写 select_class 来输出指定类别的旋转矩形。
-
类名文件路径 → → 选择相应文件名(example_data/mask_data_train/fruits.txt )
-
权重文件路径 → → 选择相应权重文件名 (example_data/mask_data_train/train_output/model_final.pth )
-
配置文件路径 → → 选择相应权重文件名 (example_data/mask_data_train/train_output/config.yaml )
-
物体得分阈值 → → 0.75
-
识别结果图像 → 可视
-
-
设置 ProjectMask 算子参数:
-
类型→ MaskList
-
点云列表 → 可视
-
-
设置 CloudProcess 算子参数:
-
类型 → ParseCloud
-
步骤3:连接算子
步骤4:运行
点击 RVS 运行按钮,触发 Trigger 算子。
运行结果
如下图所示,鼠标放置 CloudProcess 算子 label_list 端口静置 1s ,显示推理所得的掩码图列表转换为 3D 点云列表的物品类型。