首页 > 其他分享 >20.04复现LeGo-LOAM

20.04复现LeGo-LOAM

时间:2024-08-22 09:54:30浏览次数:14  
标签:LeGO LOAM LeGo LIBRARY 报错 gtsam Boost 20.04

首先恭喜你看到这篇博客,我已经把弯路走遍了,你可以直接少走30年弯路

目录

一、安装依赖

二、安装编译gtsam

三、安装编译LeGo-LOAM

​​​​​​​四、LeGo-LOAM复现

1.安装依赖项

(我把过程中出现的报错整理放最后了,红色数字对应,请移步后面对应解决“报错问题”

(不记得报错 3 opencv 和报错 4 pcl在那个地方运行报错了,先写在这里,后续知道或者告知我再改)

sudo apt-get install libboost-all-dev
sudo apt-get install cmake
sudo apt-get install libtbb-dev
sudo apt-get install libparmetis-dev
Boost >= 1.43 
gcc >= 4.7.3
CMake >= 3.0 

​​​​​​​​​​​​​​2.安装编译gtsam

1.压缩包下载

压缩包下载连接(解压压缩包安装):

https://research.cc.gatech.edu/borg/download?destination=node%2F299

2.git安装(gtsam出现debug报错0)(我进行make check出现报错1

cd gtsam/
mkdir build &&cd build
cmake ..
make check 
sudo make install
check和install很慢,根据情况加入多线程(-j12)或其他线程报错2
make check -j12
sudo make install -j12

3.安装编译LeGo-LOAM

参考:

LeGO-LOAM:Ubuntu20.04下的编译与运行_lego loam ubuntu 20.04 yuanma-CSDN博客

cd ~/legoloam_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1  

单独编译ROS包

catkin_make -DCATKIN_WHITELIST_PACKAGES="lego_loam;cloud_msgs" 

第一次编译代码时,需要在“catkin_make”后面加上“-j1”来生成一些消息类型。以后的编译不需要“-j1”。

4.LeGo-SLAM数据集复现

4.1数据集下载

LeGO-LOAM:Ubuntu20.04下的编译与运行_lego loam ubuntu 20.04 yuanma-CSDN博客

直接参考上面链接博主(NSH indoor outdoor 数据集,云盘失效可以去评论区看或者官网)

4.2在legoloam_ws文件下source并代码运行

roslaunch lego_loam run.launch

4.3在LeGo-Loam文件夹下运行运行数据包

rosbag play *.bag --clock --topic /velodyne_points /imu/data
​​​​​​​4.3在LeGo-Loam文件夹下运行运行数据包
4.4rviz设置(save config)

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

找到~/legoloam_ws/src/LeGO-LOAM/LeGO-LOAM/src下的.cpp文件(ctrl+F查找)

/registered_cloud对应的发布者pubRegisteredCloud的 / 删除

例如:

cloudMsgTemp.header.frame_id = "/camera_init";
pubRegisteredCloud.publish(cloudMsgTemp);

改为

cloudMsgTemp.header.frame_id = "camera_init";
pubRegisteredCloud.publish(cloudMsgTemp);
运行结果:(还有部分点云未调好)

我rviz设置如下(可根据自己需要设置)

报错问题汇总

(报错1)出现了(行数可能不一样):

CMake Warning (dev) at gtsam/CMakeLists.txt:105 (target_link_libraries):
Link library type specifier "debug" is followed by specifier "optimized"
instead of a library name.  The first specifier will be ignored.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at gtsam/CMakeLists.txt:105 (target_link_libraries):
The "debug" argument must be followed by a library.


-- Configuring incomplete, errors occurred!
See also "/home/hawkbot/gtsam/build/CMakeFiles/CMakeOutput.log".
See also "/home/hawkbot/gtsam/build/CMakeFiles/CMakeError.log".

解决:将debug注释掉

1.找到(gtsam/CMakeLists.txt)如下:

if (GTSAM_DISABLE_NEW_TIMERS)
    message("WARNING:  GTSAM timing instrumentation manually disabled")
    list_append_cache(GTSAM_COMPILE_DEFINITIONS_PUBLIC DGTSAM_DISABLE_NEW_TIMERS)
else()
    if(Boost_TIMER_LIBRARY)
      list(APPEND GTSAM_BOOST_LIBRARIES
        optimized ${Boost_TIMER_LIBRARY_RELEASE}
        optimized ${Boost_CHRONO_LIBRARY_RELEASE}
        #debug ${Boost_TIMER_LIBRARY_DEBUG}
        #debug ${Boost_CHRONO_LIBRARY_DEBUG}
        )
    else()
      list(APPEND GTSAM_BOOST_LIBRARIES rt) # When using the header-only boost timer library, need -lrt
      message("WARNING:  GTSAM timing instrumentation will use the older, less accurate, Boost timer library because boost older than 1.48 was found.")
    endif()
endif()

2.找到(gtsam/wrap/CMakeLists.txt)如下:

set(WRAP_BOOST_LIBRARIES
  optimized
    ${Boost_FILESYSTEM_LIBRARY_RELEASE}
    ${Boost_SYSTEM_LIBRARY_RELEASE}
    ${Boost_THREAD_LIBRARY_RELEASE}
    #  debug
    #${Boost_FILESYSTEM_LIBRARY_DEBUG}
    #${Boost_SYSTEM_LIBRARY_DEBUG}
    #${Boost_THREAD_LIBRARY_DEBUG}

完成后重新之前的操作

(报错1)在check中出现(不知啥问题,别人博客中同样存在,出现没有影响后续的install)

参考:ubuntu18.04安装gtsam过程及报错error: invalid initialization of reference of type ‘const std::vector<bool>&’-CSDN博客

error: invalid initialization of reference of type ‘const std::vector<bool>&’ from expression of type ‘const std::vector<long unsigned int>’
  124 |     const std::vector<bool>& mask() const { return  mask_; }

其中还写了一个install中出现的bug(我也是一样的问题,暂时没出现影响)

(报错2)我用的虚拟机,出现这个,内存不足的问题,减少线程数

c++: fatal error: 已杀死 signal terminated program cc1plus
compilation terminated.

(报错3)出现opencv报错

参考:

LeGO-LOAM:Ubuntu20.04下的编译与运行_lego loam ubuntu 20.04 yuanma-CSDN博客

/home/hawkbot/legoloam_ws/src/LeGO-LOAM/LeGO-LOAM/include/utility.h:13:10: fatal error: opencv/cv.h: 没有那个文件或目录
   13 | #include <opencv/cv.h>
      |          ^~~~~~~~~~~~~
fatal error: opencv/cv.h: 没有那个文件或目录    13 | #include <opencv/cv.h>

报错原因:这是由于20.04自带的是OpenCV4。

~/legoloam_ws/src/LeGO-LOAM/LeGO-LOAM/includ下的utility.h文件

#include<opencv/cv.h>

修改为

#include<opencv2/imgproc.hpp>

(报错4)继续编译又出现关于点云pcl库的问题

POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::CPPFSignature,
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/pcl-1.10/pcl/point_types.h:574:1: error: ‘minusscalar’ is not a member of ‘pcl::traits’

报错原因:这是由于用的C++11,但是需要支持C++14,解决如下:

将legoloam_ws/src/LeGO-LOAM/LeGO-LOAM下的CMakeLists.txt文件:

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

改为如下

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

还有报错:‘Index’ is not a member of ‘Eigen’等其他请看这篇博客(我没遇到就没加上了)

LeGO-LOAM:Ubuntu20.04下的编译与运行_lego loam ubuntu 20.04 yuanma-CSDN博客

标签:LeGO,LOAM,LeGo,LIBRARY,报错,gtsam,Boost,20.04
From: https://blog.csdn.net/qq_53004665/article/details/141346191

相关文章

  • Ubuntu20.04 安装 libevent
    https://blog.csdn.net/qq_62381297/article/details/136151148Ubuntu20.04安装libevent文章目录libevent源码下载libevent安装libevent使用echo服务器:echo客户端:运行结果libevent源码下载https://libevent.orglibevent安装$tar-zxvflibevent-2.1.12-stable.tar.gz......
  • Ubuntu20.04环境配置(自用)
    一、Windows11安装WSL21.1启用Windows子系统及虚拟化1.打开设置—— 控制面板2.程序—— 程序和功能中的【启用或关闭Windows功能】3.勾选【适用于Linux的Windows子系统】和【虚拟机平台】4.重启电脑1.2下载Ubuntu20.041.打开MicrosoftStore,商店内搜索Ubun......
  • legoEV3机器人场地赛如何按照规定路线运行(巡线)
    legoEV3机器人场地赛如何按照规定路线运行(巡线)在机器人场地赛中,巡线指让机器人按照固定线路(一般为白底黑线)运行的任务。而巡线也可以被称为“机器人场地赛的‘基本功’”,它既可以单独成为一类比赛项目也可以成为完成其他任务的“地基”。在这里我来给大家介绍两种颜色传感器巡线......
  • Ubuntu20.04搭建eclipse for C++环境
    【转载说明】适用于Ubuntu20.04上的C/C++开发人员的EclipseIDE。文章分为三部分。如何安装EclipseIDE先决条件如何下载面向C/C++开发人员的EclipseIDE如何提取EclipseIDEforC/C++Developers包EclipseIDE需要JavaJRE作为先决条件。因此,我们的第......
  • ubuntu20.04 解决第一次(或U盘安装)时黑屏问题
    前言环境电脑:thinkbook142024i5-13500HRTX3050网卡:IntelAX211Wi-Fi6系统内核:5.15问题原因由于ubuntu系统和显卡驱动之间的冲突,导致电脑不支持Nvidia系列显卡,所以开机黑屏。解决方法方法一、显卡设置为集显模式进入电脑的bios,将显卡模式设置为集显模式。保存重......
  • ubuntu20.04中文界面设置
    1,进入ubuntu界面,首先要做的是更换下载源。打开Software&Updates,选择UbuntuSoftware菜单,在Downloadfrom处选择“阿里云”下载源(xxxx.aliyun.com)2,然后更新系统中可用软件包的信息,以便后续包含中文语言包的信息。3.打开设置,找到地区和语言(Region&Language),选择"Manageinsta......
  • Ubuntu20.04 安装 NVIDIA 显卡驱动
    1.禁用Nouveau驱动“nouveau”是NVIDIA显卡的开源驱动程序。查看驱动状态,若什么都没显示则是禁用了。lsmod|grepnouveau下面有显示信息,则说明在用着nouveau。开始设置禁用:#修改前先备份(防止出问题)sudocp/etc/modprobe.d/blacklist.conf/etc/modprobe.d/bl......
  • Ubuntu20.04 + Mysql8.0安装
    1.安装MySQL8.0sudoaptupdatesudoapt-getinstallsoftware-properties-commonsudoapt-getinstallwgetwget-chttps://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.debsudodpkg-imysql-apt-config_0.8.22-1_all.debsudoapt-getinstallmysql-server......
  • CentOS 8 和 Ubuntu 20.04.2 LTS 中,您可以通过不同的方法实现在系统启动时自动运行特
    在CentOS8和Ubuntu20.04.2LTS中,您可以通过不同的方法实现在系统启动时自动运行特定指令或脚本。这里是关于两种方法的解释和区别:###方法一:使用`rc-local.service`**CentOS8示例:** $cat/etc/rc.local_my.sh#!/bin/bash/bin/bash-c"ip-6routeadddefaultvi......
  • Ubuntu20.04LTS环境docker+cephadm方式部署Ceph 17.2.5
    简述什么是ecph​ceph是一个开放、自我修复和自我管理的统一分布式存储系统。具有高扩展性、高新能、高可靠性的优点。​ceph分布式存储优势​高扩展性:使用普通X86服务器,支持10~1000台服务器,支持TB到EB级的扩展。​高可靠性:没有单点故障,多数据副本,自动管理,自动修复。​高......