首页 > 编程知识 正文

v-ray安装教程,激光切割

时间:2023-05-04 12:39:37 阅读:147757 作者:1360

 

最近由于在做3D激光slam的相关工作,在网上看见 BLAM 的效果不错,就下载了相关的代码跑了一下,在编译安装过程中遇到了一些问题,在这里记录一下,供有需要的同学看一下。

具体的安装过程这里就不在赘述了,如果你不知道,自行百度参考其他的教程或者GitHub上的官方教程。第一次报错是

fatal error:ros/ros.h:No such file or directory

 这个错误是 geometry_utils 模块的中错误,主要是package.xml 和 CMakeLists.txt中的错误,其他教程都有修改的方法,这里不列举了,参考 : 

https://blog.csdn.net/xmy306538517/article/details/81122663

接下来的这个错误是大概编译到80%的时候报的错误:

仔细查看是回环检测模块中的 LaserLoopClosure.h 文件中用到了#include<gstam/baseVector.h> ,再定位到 /usr/local/include/gtsam/base/Vector.h 中,发现这两句话

static_assert( GTSAM_EIGEN_VERSION_WORLD==EIGEN_WORLD_VERSION && GTSAM_EIGEN_VERSION_MAJOR==EIGEN_MAJOR_VERSION, "Error:GTSAM ................... of Eigen");

这句 断言 主要是判断系统安装的 eigen 版本与 gtsam 中包含的版本是否相同,我系统安装的是3.2.9的,而 gtsam 中包含的则是3.3.7的,所以这里会报错。

我的解决办法是将这个断言语句给注释掉,然后在编译就没有问题了。 但是!!!!在后面运行出现问题,具体问题及解决办法接着往下看。 更新:2019年11月27日

另外一种方法:

在编译 gtsam 时,cmake显示的信息会出现:find eigen version:3.3.7,这说明gtsam编译时使用的是 eigen 3.3.7,打开CMakeLists.txt 定位到 270:300 这段,这段的主要作用是 选择是否使用 MKL 模块,需要使用 MKL 则eigen 的版本要使用gtsam包含的版本,如果不使用 MKL 则使用系统自带的版本,这里我们可以修改这句话, 

option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" OFF) 将最后的OFF 改为 ON 即可。

这里改过之后会调用系统自带的版本的 eigen 库,编译过程中可能出现一堆 warning,看起来非常的难受,但是编译可以通过。

但是编译完成之后我在运行 “roslaunch blam_example test_online.launch” 时出现这种情况:

推测可能是GTSAM版本的问题,我用的是最新的4.0.2版本的gtsam,后来修改为 4.0.0 版本(更换为4.0.0版本的gtsam后,即使系统eigen库版本与gtsam安装包中的版本不同,也不会出现上面的断言判断),重新编译一下,就可以成功的运行 roslaunch了。

如果!!!!你要使用使用MKL 模块,那么请跳过这种方法,你可以参考第一种方法,或者修改系统安装的 Eigen 版本。

博文如有问题,欢迎留言指正,在此谢过。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。