一、问题描述
正在学习poinclouds 根据官方的教程调试,正常的学习,是根据下面的教程,安步就班的创建文件random_sample_consensus.cpp, 创建CMakeLists.txt 文件,创建mkdir build cmake .. 再make,然后就各种报错,本来就不懂,一堆搜索,最后还是没有解决,痛苦...... 怎么解决
如:
如何使用随机样本共识模型 — 点云库 0.0 文档 (pcl.readthedocs.io)
报的错!
Scanning dependencies of target random_sample_consensus
[ 50%] Building CXX object CMakeFiles/random_sample_consensus.dir/random_sample_consensus.cpp.o
/home/dltc/workspace/pcl-test/random_sample_consensus.cpp: In function ‘int main(int, char**)’:
/home/dltc/workspace/pcl-test/random_sample_consensus.cpp:42:14: error: ‘index_t’ is not a member of ‘pcl’
42 | for (pcl::index_t i = 0; i < static_cast<pcl::index_t>(cloud->size ()); ++i)
| ^~~~~~~
/home/dltc/workspace/pcl-test/random_sample_consensus.cpp:42:29: error: ‘i’ was not declared in this scope
42 | for (pcl::index_t i = 0; i < static_cast<pcl::index_t>(cloud->size ()); ++i)
| ^
/home/dltc/workspace/pcl-test/random_sample_consensus.cpp:42:50: error: ‘index_t’ in namespace ‘pcl’ does not name a type
42 | for (pcl::index_t i = 0; i < static_cast<pcl::index_t>(cloud->size ()); ++i)
| ^~~~~~~
make[2]: *** [CMakeFiles/random_sample_consensus.dir/build.make:63: CMakeFiles/random_sample_consensus.dir/random_sample_consensus.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/random_sample_consensus.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
dltc@dltc-ros-dev:~/workspace/pcl-test/build$ cmake --version
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
dltc@dltc-ros-dev:~/workspace/pcl-test/build$
二、问题分析
经过分析发现最官网上复制下来的,一般是最新的pcl sdk ,如果您本地测试的时候用的是命令直接安装的版本,理论是可以的,(但是我们一般在正式环境尤其找到别的源代码时都是比较老,至少是次新版本的pcl sdk ,)总之你的pcl版本不是新的版本,所以你的demo在 cmake .. 后 ,make 时就总是不会通过,
有什么别的搞头吗?没有,运行poinclouds demo 就三个动作
1.mkdir build
cd build
2.cmake ..
3. make
所以,我们我们经过思考就明白了,如果您的环境不最新的,就不要复制官方的代码了?
大家可能不信,我们来对比一下,个人环境和最新demo代码的截图
我的环境 pcl 1.7.2
从第一个对比就可以看出,两个版本连类库头文件都不一样?
所以上面报错的error: ‘index_t’ is not a member of ‘pcl’, ‘i’ was not declared in this scope 等自然而然就明白是什么原因了
拖动对比
三、问题解决
所以我们在官网查看时, 要么切到对应版本查看,要么只看官网的目录,代码调试找到我们调试环境pcl sdk目录下找
3.1.demo源代码目录
pcl-pcl-1.x.x\doc\tutorials\content\sources
如我的 是1.7.2
pcl-pcl-1.7.2\doc\tutorials\content\sources
3.2 demo源代码用的资源文件如点云pcd等
资源文件到pcl-pcl-1.x.x\test 目录下找,如我的是1.7.2
如:pcl-pcl-1.7.2\test
四、总结
经过探索后,我们对点云官方demo如何学习,如何调试,如何避过报错,如何快速找到demo中用到的资源文件都轻松解决了,大家可以快速把点云demo每一个运行一下,尽快入门和熟悉点云类库 ,在此备忘,并且希望能帮大家节约一点时间
正确的方式,才是避开各种报错的方法。