Ubuntu 20.04 下编译 Lego Loam 踩过的一些坑

简介

Lego LOAM 在 Ubuntu 20.04 (ROS Noetic)遇到一些问题,这里作为记录方便以后参考。

错误以及解决方法

fatal error: opencv/cv.h: No such file or directory

Ubuntu20.04 默认安装 opencv 4.2.0,opencv4 对头文件名作出了一点修改,因此需要对 Lego LOAM 中 include opencv 头文件的部分做出修改,将 Utility.h 中的 #include <opencv/cv.h> 改成 #include <opencv2/opencv.hpp>

/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above

PCL 1.10 要求使用 c++14 及以上版本,将 LEGO LOAM 中的 CMakeLists.txt 中的编译选项 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3") 改为 -std=c++14 即可

error: ‘Index’ is not a member of ‘Eigen’

这个错误是因为 Lego LOAM 中原作者建议使用的 gtsam 版本为 4.0.0-alpha2,gtsam 是自带了一个 eigen 库的,而这个版本的 gtsam 中使用的是较低版本的 Eigen,还没有 Eigen::Index 这个定义。比较简单的做法是将 PCL 中用到的 Eigen::Index 改为 int 即可。不过使用 gtsam 中低版本的 Eigen 可能也会在别的库造成问题,所以建议的做法是不使用 gtsam 带的第三方库,具体方法为按照作者的方法编译 gtsam 时在 cmake 阶段设置使用系统自带的 Eigen,此外 gtsam 编译时会默认进行 SSE 加速,而如 PCL 等其他库大多数情况不会打开,因此如果一起使用的话会造成节点崩溃,因此一般将其关闭,如下所示:

mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON ..
sudo make install

在安装完 gtsam 之后,需要运行一次 sudo ldconfig 来更新链接设置

Failed to transform from frame [/camera] to frame [map]

rviz 中出现上述错误提示,因为 tf2 开始已经不会在 frame_id 前面加 /,所以只需要将代码中所有涉及 frame_id 的部分将 / 去掉即可。

/usr/bin/ld: 找不到 -lBoost::timer

在 CmakeLists.txt 中添加

 find_package(Boost REQUIRED COMPONENTS timer)
  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值