栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LEGO-LOAM + ROS Noetic的坑

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LEGO-LOAM + ROS Noetic的坑

LEGO-LOAM + ROS Noetic的坑 环境说明 ROS

Ubuntu20.04+ROS Noetic(debian full desktop ver)

相关依赖

pcl, opencv都是默认apt装上的版本,分别是1.10.x和4.x,本例编译运行成功无需更换版本。
gtsam通过github编译安装
https://github.com/borglab/gtsam

LeGO-LOAM实现

以下两个实现版本参考后文步骤基本都可以正常运行
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM
https://github.com/facontidavide/LeGO-LOAM-BOR

编译错误

按照自带md走完并不能成功编译
一个是opencv4的头文件变化
将#include改成#include
另一个是pcl只能c++14以上,所以需要把功能包下cmakelist的C++标准改掉

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")

然后接着编译到pcl的voxel_grid.h头文件时报错Eigen::Index找不到,git上LEGO-loam有这个Issue

https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/215

这个里面说把Eigen::Index换成int即可,但是我之前编译别的用pcl的库不存在这个问题,所以我认为不应该在库文件修改。

改项目代码的方法:
我设法覆盖掉了Eigen::Index的定义,在utility.h中引用pcl前添加

// #include  实测引用了Eigen也找不到还有新bug,这里用typedef糊弄一下,可通过
namespace Eigen{
  typedef int Index;
}; // 这里因为Eigen::Index找不到
#include 

接下来编译末尾还会报Boost的链接错误:/usr/ld:找不到 -lBoost::serialization等
在cmakelist中添加

find_package(Boost REQUIRED thread serialization timer chrono)

以及

target_link_libraries(lego_loam_bor ...  ${Boost_LIBRARIES} ...)

到此编译错误结束

运行错误:
  • 需要在https://github.com/TixiaoShan/Stevens-VLP16-Dataset 下载rosbag文件,区别是需要imu等话题的数据,这个比loam所需要录制的topic更多(另外readme里面漏说了,run.launch还写了一个参数imu_topic

  • tf出warning,找不到变换,rviz黑屏:将代码的/camera和/camera_init的/去掉

  • [lego_loam_bor-5] process has died [pid 8451, exit code 127 …]错误

没看明白具体log是啥, 但是参照这个issue莫名其妙地解决了问题
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/issues/160

安装这个,然后bug就magically disappeared了

sudo apt-get install libparmetis-dev
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/384339.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号