问题标签 [pcl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
point-cloud-library - 使用 RANSAC 校准 2 个 RGB-D 传感器之间的位姿
我正在尝试使用 RANSAC 校准 2 个 Kinect 之间的姿势。我在远处安装了 kinect,我同时记录了其中的 2 个,所以我得到了 2 个点云。
所以我为一个房间创建了两个点云,每个 Kinect 一个。之后,我处理点云并使用 RANSAC 获得云的平面,我还计算三个平面之间的交点并旋转云,使其中一个平面的法线平行于 Z 轴。
有了这个,我有一个从原点到交点的向量,还有一个旋转矩阵;如果我对来自另一个传感器(这是同一个房间,但原点移动)的第二个点云执行相同的过程,我会得到另一个从该原点到交点的向量和另一个旋转矩阵。
有了这个,我想我可以计算传感器之间的相对位姿,但结果不是很精确(可能是由于 RANSAC 的工作方式和传感器的精度)。是否有任何处理或我可以做的事情来改善结果?
c++ - ICP算法,显示点丢弃
我在 pcl 中使用 icp 算法。
我想以比一组 0.5m 的距离更远的距离显示被丢弃的点。谁能帮我?
c++ - 为什么循环和可视化点云滞后于 PCL 可视化器?
这就是问题所在。我有一个点云指针向量,我想一次可视化一个。我所拥有的是一个可视化器,它查看向量中的第一个点并等待键盘输入来改变可视化的内容。例如,“n”将为可视化器提供向量中的下一个元素,“b”将为您提供前一个元素。
这使您可以在阵列中来回走动并查看点云的某些帧。这很好用,但是我还有另一个键,'m',它可以像视频一样播放帧。它通过创建一个while循环并在其中,向前移动帧,更新可视化器并休眠以支持帧速率来实现这一点。
这是 moveForward() 和 newCloud() 函数:
这在到达终点或过早停止后按预期工作,可视化器滞后于所有其他输入以移动相机或帧,更糟糕的是,它会堆叠。您点击“m”的动作,可视化器滞后的次数越多。奇怪的是,按住 'n' 前进并不会破坏任何东西,而使用 'm' 会。任何人都知道为什么这种杀戮表现如此之多?
更新
所以事实证明,可视化器的整体滞后源于自旋循环。我正在使用 spinOnce(x) 然后休眠,这有点多余并且似乎延迟了输入,因为它正在休眠并存储输入,从而导致粘性输入。我摆脱了睡眠并将 spinOnce(x) 更改为 spin() ,这使得输入更加平滑。然而,这并没有完全解决视频播放功能。我仍然需要在该循环中使用 spinOnce() 以便 1. 在每个新帧之后实际更新可视化器和 2. 模拟帧速率。这会导致一些奇怪的效果。使用一次电影功能会显着减慢一切,但是它在停止后不会堆叠,实际上它会相反。按'm' 然后再次键将恢复一切正常并以适当的速率播放视频并停止它将使可视化器处于最佳状态。这会来回走,很奇怪。所以我会努力解决这个问题。如果您有任何想法,请告诉我。谢谢!
这里还有新的“m”按功能:
c++ - 无法弄清楚如何从点云库初始化 SampleConsensusModelNormalPlane
- 视觉工作室 2019 (MSVC2017)
- 库:PCL 1.8.1
我对编程不是很熟悉,目前我正在尝试使用 SampleConsensusModelNormalPlane,因此我可以同时利用 XYZ 坐标点和使用 PCL 的法线估计生成的法线,但我无法找到也不明白如何实现不初始化它.
我尝试了很多变体,但仍然出现错误:
根据头文件sac_model_normal_plane.h,以下应该是正确的:
但它没有用。是因为SampleConsensusModelNormalPlane不支持PointXYZRGB和PointXYZRGBNormal吗?
point-cloud-library - 在哪里更改 cmake 变量值?
我的 UBUNTU 20.04 系统中有 2 个版本的 PCL,1.9 和 1.12。在一个项目中我想使用 1.9 版本但是
include_directories(${PCL_INCLUDE_DIRS})
上面的行包括项目中的 1.12 版本。值存储在哪里PCL_INCLUDE_DIRS
以及如何更新它?
c++ - pcl 超体素聚类:无法可视化体素
我正在尝试将超体素聚类合并到我的 3D 点云应用程序中。但是,点云无法在 RVIZ 上可视化。当我尝试使用 gdb 进行调试时,我意识到即使在该行之后,我的地图对象内部仍然没有数据
std::multimap<uint32_t, uint32_t> supervoxel_adjacency; super.getSupervoxelAdjacency(supervoxel_adjacency);
我参考的教程是这个https://pointclouds.org/documentation/tutorials/supervoxel_clustering.html
问题是什么?它应该用数据填充地图结构供我迭代,但事实并非如此。
android - 使用 cmake 在 Android Studio 项目中包含 PCL
我正在运行 Ubuntu 18。我想将我编写的 c++ 脚本转换为 android 应用程序。我看到 Android 应用程序也可以运行 c++ 脚本。我的脚本依赖于 PCL(点云库)、CGAL 和 TBB。作为第一步,我想确保我可以在 android studio 中制作一个依赖于 PCL 的 c++ 脚本。我按照本教程创建了一个使用简单 c++ 脚本的 android 应用程序。接下来我想在该脚本中使用点云库。作为第一步,我修改了 CMakeList.txt,这就是问题开始的地方......
目前我的 CMakeList.txt 文件如下所示:
我已经用这个例子验证了我的 PCL 安装,一切正常。这是用于验证的 CMakeList.txt:
但在 Android Studio 中,我收到一个错误,即找不到 eigen:
我不明白为什么 pcl 可以在常规项目中找到,但不能在 android studio 项目中找到,因为我在 CMakeList.txt 中使用了相同的行?CMakeList.txt 文件在 Android Studio 中的处理方式是否存在差异?我还必须为我的 pcl 库添加一个直接路径,以便它使用 Android Studio 找到 pcl,这在常规项目中是不需要的。(我用这条线做到了set(PCL_DIR "/usr/lib/x86_64-linux-gnu/cmake/pcl")
:)
有任何想法吗?
谢谢!
丹尼尔
point-cloud-library - PCL ASCII - 读取 RGB 值?
数据存储如下:
其中大部分是浮点数,但 RGB 数据采用4294967040
某种U
格式,并且看起来有 4 个字节长。我如何将它解压成 3 个 uint8_t?
c++ - 使用 PCL 调整粒子滤波的参数
我正在使用 PCL(点云库)中的粒子过滤器进行 3D 点云对象跟踪(圆柱形对象)。该文档没有安静地解释有关它如何影响结果的参数。我已经对粒子滤波器做了一些研究,但是大多数参数粒子滤波器和相干性(我认为这里的相干性对应于似然函数)是特定于点云对象跟踪而不是机器人定位的。
此代码取自PCL 粒子过滤器示例。在 KLD Adaptive Particle Filter OMP Tracker 和 Particle filter(setMaximumParticleNum 和 setParticleNum)中有两次定义的粒子数参数。bin 大小、协方差、delta、epsilon 和所有其他关于它做什么或它如何影响结果的参数。任何解释、研究论文或任何类型的资源都会非常有帮助。谢谢 !!!!
PS:PCL问答论坛没有上线。
c++ - PCL 中是否有一种方法可以确定使用哪个模型进行分割?
软件:Visual Studio 2019 PCL 版本 1.8.1
PCL 中是否有一种方法可以确定可以/应该使用哪种分割模型,以及何时停止?
我遇到的一个问题是,当使用法线平面分割时,一个圆柱形物品或一个人将被分割为一个“平面”或几层平面(平面可以堆叠、相交或两者兼而有之),尽管明显冲突的形状和法线。
我无法为相同的环境或 PCD 量身定制算法,因为激光雷达会不断移动。
关于何时停止,我确实设置了一个 while 循环,代码将运行该循环,直到云大小低于设定的数值或百分比阈值。