从零实现无序抓取(二)制作属于自己的点云数据

本文介绍了如何通过Solidworks和PCL库生成OBJ格式的三维模型,并详细指导了如何将其转换为点云(PCD),提供了PCL_mesh_sampling.exe工具的使用技巧,包括设置采样密度和处理常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

近来写毕业论文,想根据自己的要求生成一些点云数据,发现PCL库可以根据obj格式的文件生成点云,而且点云的数量可控。

一、 绘制.obj格式的三维图

画obj格式的图像很多三维软件都可以实现,我这里是用soliworks中的scan to 3d插件实现的。提前准备好scan to 3d插件,在工具->插件->ScanTo3D中打钩。
在这里插入图片描述

1.1 绘制零件图

首先,画一个三维零件图,不会的先去学solidworks。
在这里插入图片描述

1.2 另存为stl

点击另存为.stl格式
在这里插入图片描述
这个格式的文件,Windows自带的3D软件是能打开的,如下:
在这里插入图片描述

1.3 另存为obj

点击文件->打开,选择网格文件,注意:这个要你打开ScanTo3D插件了才会显示。
在这里插入图片描述

stl文件打开后的结果
然后点击,文件->另存为,选择.obj格式
在这里插入图片描述
这个时候就能得到一个.obj格式的文件了,同样可以使用Windows自带的软件打开。

二、使用PCL采样点云

PCL库有个 pcl_mesh_sampling.exe可以用来从obj生成pcd格式的点云。在安装PCL的路径下将bin文件夹打开,找到文件pcl_mesh_sampling_release.exe或是pcl_mesh_sampling_debug.exe文件。我习惯将他拿出来,放在一个常用的文件夹,此处我直接放在d盘了。然后将先前的obj文件放在同级目录下(为了方便)。在命令窗口打开 pcl_mesh_sampling.exe,进入这个exe所在的文件夹,shift+鼠标右键,在此处打开Powershell窗口。输入 pcl_mesh_sampling.exe -h查看使用方法。
在这里插入图片描述
可以看到,除了obj格式的文件,ply格式的文件也可以使用改功能转化为pcd。另外,可以根据数量或者密度来生成点云,也可以把点云法向量、颜色等信息记录到pcd文件。根据提示输入就行了,这里写了个例子,设置采样密度0.02.然后你就能在文件夹下得到一个part1.pcd文件啦。
在这里插入图片描述
注意:这里有个问题,就是你的leafsize不能设置的太小,或者n_samples不能设置的太大,不然会报错无法生成的。
用matlab做下可视化看看,如下:
在这里插入图片描述

下一篇预告,点云配准

<think>嗯,用户想了解Halcon在3D无序抓取中的标定方法或解决方案,需要教程或实现方案。首先,我得回顾一下之前的引用内容,看看有没有相关的信息。引用1和2提到了读取3D模型、创建表面模型、重采样以及点云处理步骤,可能涉及标定的部分。引用4详细讲了点云配准的算法,比如PPF方法,这可能和标定有关联。但标定通常指的是相机和机械臂之间的坐标系对齐,所以需要区分标定和配准的不同。 用户的问题可能包含两个部分:一是如何标定相机和机械臂的关系,是如何处理3D点云进行无序抓取。首先,Halcon的标定方法通常包括相机内参标定和外参标定,即手眼标定。手眼标定分眼在手外(Eye-to-Hand)和眼在手上(Eye-in-Hand)两种,这在引用3中提到了相关的函数,比如refine_surface_model_pose,可能用于优化位姿。 接下来,我需要整理Halcon中用于标定的工具和步骤。例如,使用calibrate_hand_eye函数进行手眼标定,需要标定板数据,采集多个位姿的图像和机器人位姿数据。标定完成后,将点云数据转换到机器人坐标系,这样机械臂才能正确抓取。 然后,关于无序抓取实现方案,引用4提到的PPF算法可能用于物体识别和位姿估计,结合表面匹配(surface model)技术。可能需要创建表面模型,然后通过find_surface_model函数进行匹配,获取物体的位姿。 用户可能需要具体的步骤,比如标定流程、点云处理、匹配算法应用。需要分步骤说明,并引用相关的Halcon函数,如create_surface_model、find_surface_model、apply_surface_model_calibration等。此外,标定后的验证和优化步骤也很重要,比如使用refine_surface_model_pose来优化位姿。 还要注意用户可能的深层需求,比如实际应用中的挑战,标定精度的影响因素,如何处理噪声和遮挡。需要提到点云预处理步骤,比如滤波、分割,这在引用2中有提到select_points_object_model_3d和connection_object_model_3d等函数。 最后,生成相关问题,帮助用户进一步学习,比如标定参数的影响、手眼标定的类型区别、点云配准算法等。确保回答结构清晰,步骤明确,引用正确的函数和流程,并结合Halcon的文档或示例代码。</think>### Halcon在3D无序抓取中的标定方法与实现方案 #### 一、标定的核心目标 在3D无序抓取中,标定主要解决**相机坐标系与机械臂坐标系的空间对齐**问题,确保点云数据能准确映射到机器人操作空间。Halcon通过以下步骤实现标定与抓取流程: --- #### 、标定流程与关键步骤 1. **相机内参标定** - 使用标定板(如棋盘格)采集多角度图像,计算镜头畸变参数和焦距 - Halcon函数:`find_calib_object`, `calibrate_cameras` - 输出结果:相机内参矩阵$K = \begin{pmatrix}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{pmatrix}$ 2. **手眼标定(Eye-to-Hand)** - 采集机械臂在不同位姿下的标定板图像 - 输入机械臂位姿数据(TCP坐标)与相机外参 - Halcon函数:`calibrate_hand_eye`[^3] - 数学基础:求解AX=XB方程,其中$X$为相机到基座标系的变换矩阵 3. **点云坐标系对齐** - 将点云数据从相机坐标系转换到机器人基坐标系 - 代码示例: ```cpp // 读取标定结果 read_cam_par ('hand_eye_calibration.dat', CamParam) // 应用坐标变换 affine_trans_point_3d (RobotPose, X, Y, Z, TransX, TransY, TransZ) ``` --- #### 三、无序抓取实现方案 1. **点云预处理** - 降采样:`sample_object_model_3d`[^1] - 滤波:`median_object_model_3d` - 平面分割:`segment_object_model_3d` 2. **物体识别与位姿估计** - 表面匹配:`create_surface_model`创建模板,`find_surface_model`匹配目标[^3] - 特征配准:基于PPF(Point Pair Feature)的全局描述与局部匹配[^4] 3. **抓取路径规划** - 法向量计算:`get_object_model_3d_params`获取法线信息[^2] - 碰撞检测:`distance_object_model_3d`计算抓取安全距离 --- #### 四、关键代码模块 ```python * 标定结果应用 apply_surface_model_calibration (SurfaceModelID, CamParam, RobotPose, CalibratedModelID) * 在线抓取流程 while (true) * 采集点云 grab_data (Image, Data, Region, X, Y, Z) * 位姿估计 find_surface_model (SurfaceModelID, ObjectModel3D, 0.8, 0, 0.5, 'true', Pose, Score) * 位姿优化 refine_surface_model_pose (SurfaceModelID, ObjectModel3D, Pose, 0, 'false', [], [], RefinedPose, Score) * 坐标转换 pose_to_hom_mat3d (RefinedPose, HomMat3D) affine_trans_point_3d (HomMat3D, X, Y, Z, RobotX, RobotY, RobotZ) endwhile ``` --- #### 五、标定精度优化要点 1. 标定板覆盖机械臂工作空间的全范围 2. 使用高精度标定板(建议棋盘格尺寸误差<0.01mm) 3. 采集至少15组不同位姿数据 4. 标定后验证:`check_hand_eye_calibration_input`检测数据一致性 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值