LIO-SAM ouster_libmetis.so-程序员宅基地

技术标签: mavros  

1 ROS tested with Melodic

sudo apt-get install -y ros-melodic-navigation
sudo apt-get install -y ros-melodic-robot-localization
sudo apt-get install -y ros-melodic-robot-state-publisher

2 gtsam (Georgia Tech Smoothing and Mapping library)

wget -O ~/Downloads/gtsam.zip https://ghproxy.com/https://github.com/borglab/gtsam/archive/4.0.2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.2/
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j8

or

sudo add-apt-repository ppa:borglab/gtsam-release-4.0
sudo apt update
sudo apt install libgtsam-dev libgtsam-unstable-dev

3 下载和编译LIO-SAM

mkdir -p catkin_ws/src
cd ~/catkin_ws/src
git clone https://ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

Error: GTSAM was built against a different version of Eigen。
这个问题是GTSAM自带的eigen库和之前安装的eigen库的版本不同导致的。
解决办法:
修改gtsam下的CMakeLists.txt文件中的内容,在if(GTSAM_USE_SYSTEM_EIGEN)前面加上set(GTSAM_USE_SYSTEM_EIGEN ON),使得gtsam使用自己安装的eigen而不是它自带的eigen。然后重新编译gtsam,之后再编译LIO-SAM,问题解决。

运行LIO-SAM

roslaunch lio_sam run.launch
rosbag play park.bag

在这里插入图片描述
4下载和编译ouster_example
Ouster激光雷达的驱动程序安装过程

https://ouster.atlassian.net/wiki/spaces/SUPPORT/pages/928120883/Ouster+ROS
sudo apt install build-essential cmake libglfw3-dev libglew-dev libeigen3-dev   libjsoncpp-dev libtclap-dev
sudo apt install ros-melodic-ros-core ros-melodic-pcl-ros ros-melodic-tf2-geometry-msgs ros-melodic-rviz
cd ~/catkin_ws/src
git clone https://github.com/ouster-lidar/ouster_example.git
cd ..
catkin_make -DCMAKE_BUILD_TYPE=Release

运行ouster

roslaunch ouster_ros ouster.launch

5 报错实例

[lio_sam_imuPreintegration-2] process has died [pid 18568, exit code 127, cmd /home/uav/MappingSrc/devel/lib/lio_sam/lio_sam_imuPreintegration __name:=lio_sam_imuPreintegration __log:=/home/uav/.ros/log/a65082e4-a798-11ec-b3d5-02428e571c30/lio_sam_imuPreintegration-2.log].

在这里插入图片描述

实际问题是库文件libmetis.so 的位置。它是一个运行时库,但是当应用程序查找它时,它的位置不在预期的目录中。在通过运行命令sudo make install -j8安装库gtsam 时,文件libmetis.so安装在/usr/local/lib/的默认位置,但是当我们启动 ros 工作区时,运行时库查看位置/opt/ros/melodic/库/

cd /usr/local/lib/
sudo cp libmetis.so /opt/ros/melodic/lib/

再次运行,一切正常。

运行时报错 [lio_sam_mapOptmization-5] process has died [pid 260348, exit code -11

解决: gtsam编译时带上这个参数,cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
  1. 运行时报错 error while loading shared libraries: libmetis-gtsam.so: cannot open shared object file: No such file or directory
解决: sudo ln -s /usr/local/lib/libmetis-gtsam.so /usr/lib/libmetis-gtsam.so
  1. 保存地图数据

savePCDDirectory: “/Downloads/LOAM/”
注意!!代码会删除这个路径重新创建,不要用已有的路径哦,最好改一下代码把删除路径的逻辑去掉。

修改_TIMEOUT_SIGINT值,默认15s,改为60s。

sudo gedit /opt/ros/noetic/lib/python3/dist-packages/roslaunch/nodeprocess.py
4. Rviz展示

如果点云的点很大,窗口缩小一下试试。

出现报错 boost was not found需要重新安装boost

CMake Error at /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:48 (message):
  common is required but boost was not found
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:687 (pcl_report_not_found)
  /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:850 (find_external_library)
LIO-SAM/CMakeLists.txt:25 (find_package)

这是因为系统中存在多个boost版本引起冲突造成的
在安装系统时自动在x86_64-linux-gun中安装了boost
在安装ros系统时又在opt/ros/melodic中安装了boost
在这里插入图片描述
查看boost版本

dpkg -S /usr/include/boost/version.hpp

常规版操作
在LIO-SAM/CMakeLists.txt文件中加上这一句话,去明确引导到一个系统就可以解决问题:

set(Boost_LIBRARY_DIR /usr/lib/x86_64-linux-gnu/)

然后删除build和devel文件夹,重新编译就没问题了

升级版操作
解决boost多版本问题
在这里插入图片描述
默认使用的时1.65版本的boost,删除其余版本删除库和头文件

 sudo rm -f /opt/ros/melodic/lib/libboost_*

############################################################
卸载旧版本Boost库并安装新版本
查看本机现boost版本

dpkg -S /usr/include/boost/version.hpp

删除/usr/include/boost文件夹,删除/usr/local/lib中和boost有关的文件

sudo rm -rf /usr/include/boost
sudo rm -rf /usr/lib/x86_64-linux-gnu/libboost*

到此boost 1.65.1就已经成功被卸载了
安装
到boost官网下载1.65.1(或其他版本)的tar.gz文件
https://www.boost.org/users/history/
解压安装

tar -xzvf boost_1_65_0.tar.gz
sudo ./bootstrap.sh

在执行下面的命令,这样头文件就被默认安装在/usr/local/include头文件下,库文件就被默认安装在/usr/local/lib下

sudo ./b2 install

设置环境变量sudo gedit /etc/profile

#在文件末尾添加
export CPLUS_INCLUDE_PATH=/usr/local/include/boost:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z1872385/article/details/123602383

智能推荐

企业微信私有部署服务器连接失败,企业微信-私有部署-程序员宅基地

文章浏览阅读1.1k次。权限列表【企业微信-私有部署】 ● 获取定位允许应用通过网络或卫星对设备进行定位● 获取额外的位置信息提供程序命令获取额外的位置信息提供程序命令。恶意应用程序可借此干扰 GPS 或其他位置源的正常工作。● 使用模拟地点来源进行测试创建模拟地点来源进行测试。恶意应用程序可能利用此选项覆盖由真实地点来源(如 GPS 或网络提供商)传回的地点和/或状态。● 查看网络状态允许应用程序查看所有网络的状态。●..._not basic server, exit 1

基恩士光纤传感器怎么恢复出厂设置_数据中心机房高温事故分析,元芳,你怎么看?...-程序员宅基地

文章浏览阅读1.5k次。事件简述2018年1月19日下午14:25分,某机房设施运行人员在进行水系统二次泵例行轮换时,发生因“被停止运行二次泵出口侧止回阀失效,导致被运行二次泵与被停止二次泵之间管段形成短循环,致使末端机房精密空调失去循环冷冻水,且因检测供水温度过高导致空调水阀自保护关闭,最终导致对应机房发生高温事故”。此次高温事故的发现至恢复过程共持续了1个小时,且由于当值运维人员存在些许不恰当的处置方法,对机房客户设..._基恩士光电传感器怎么初始化

excel常用函数公式及技巧_含金量超高的5个Excel函数公式实用技巧解读!-程序员宅基地

文章浏览阅读637次。一、Datedif:计算年龄。作用:按照指定的类型计算两个日期之间的差值。语法:=Datedif(开始日期,结束日期,统计类型)。统计类型有:示例:方法:在目标单元格中输入公式:=DATEDIF(D3,TODAY(),"y")。解读:利用Today()函数获取当前的系统日期,计算相差的年份(y),即可计算出年龄。二、提取出生年月。方法:在目标单元格中输入公式:=TEXT(MID(C3,7,8),"..._excel中的5个常用公式以及他们的作用

gazebo安装_手把手教你用Gazebo仿真UUV水下机器人-程序员宅基地

文章浏览阅读3.1k次,点赞5次,收藏54次。前言本节教程演示UUV的一些玩法,基于开源项目UUV,官方介绍文档uuvsimulatorhttps://uuvsimulator.github.io/packages/uuv_simulator/intro/仿真环境系统:ubuntu16.04软件:ROS – kinetic仿真:gazebo7安装仿真软件官网介绍目前支持的版本有三个:kunetic、lunar、melodic安装..._gazebo uuv水下环境怎么调整

java 模拟async await_[完结篇] - 理解异步之美 --- promise与async await (三)-程序员宅基地

文章浏览阅读98次。天下没有不散的宴席这个系列到这里应该就是最后一节了,前两章着重讲了promise,为什么着重讲promise呢?因为在用法上promise要比async await难一些,而且promise本身又不是一个语法糖。没有掌握的时候用起来就会有很多顾虑,async await却没有这种顾虑,用法简单、语义清晰。下面就要开始学习async await了不讲讲迭代器模式总觉得怪怪的对于java语言来说,迭代..._java 实现async await

北京航空航天大学计算机学院保研,北京航空航天大学计算机学院(专业学位)计算机技术保研...-程序员宅基地

文章浏览阅读452次。考研真题资料优惠价原价选择北京航空航天大学计算机学院(专业学位)计算机技术保研信息,是考研之前需要获取相应的考研信息,比如考试大纲、招考专业、招考目录等等基本信息,这些内容是进行考研前期工作的必要准备。考生可以从各院校的研招网进行查询,每年的9月左右就会公布下一年度的招生计划。考生应当仔细阅读相关文件的要求和信息,部分专业的名称相近,内容也比较繁杂,容易混淆或遗漏,考生要仔细区分。另外各大考研网站..._北航保研机考

随便推点

loading动画_从Loading动画示例学习CSS3动画基础-程序员宅基地

文章浏览阅读326次。前言以前说页面是动态,基本都是说数据是从数据库查询的,不是写死在html代码里面的。现在的说页面动态,一般会问:你是说数据,还是效果动态?好的前端动画效果,能给用户带来非常舒适的体验效果,更甚者,有用户觉的你这个动画效果非常nice,反复操作,就为看你这个动画。停留时间,预览量上了,带来的收益也不是一丁点吧。当然也不用为了动画,而额外的来制作动画效果。比如一个弹框,可以直接渐变出现的,你还加了飞了..._loading动画

北大计算机陈鹏,陈鹏-北京语言大学人事处-程序员宅基地

文章浏览阅读280次。陈鹏,计算机软件理论专业,工学博士。中国社会科学院哲学所访问学者和博士后,逻辑和信息哲学方向。信息科学学院讲师,主讲课程《C语言程序设计》、《操作系统》、《数理逻辑》。主要研究方向:计算机软件、形式逻辑、计算与信息哲学近期的研究成果:[1]陈鹏【译】,蔡汀.证明达尔文[M].人民邮电出版社.2014.12. ISBN: 9787115374233.[2]陈鹏,刘钢【译】, 弗洛里德.信息哲学的抽象..._北京大学软件工程陈鹏简历

Jmeter 压力测试 - Http2.0使用-【教学篇】_jmeter使用http2-程序员宅基地

文章浏览阅读2.6k次。Apache JMeter Apache组织开发的压力测试工具。目前通过HTTP和FTP服务器用于对软件做压力测试,它最早被设计用于Web应用测试。一些小白在使用过程可能感觉上手有点困难。文章帮助小白快速理解压力测试~..._jmeter使用http2

滴滴云服务器怎么重装系统,基于滴滴云主机搭建 FTP 文件共享服务器(一)-程序员宅基地

文章浏览阅读204次。FTP 简单介绍什么是 FTP 服务器?FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件共享存储和访问服务的计算机,它们依照 FTP 协议提供服务。FTP(File Transfer Protocol: 文件传输协议)是一种 Internet 上用来传送文件的协议,支持这种协议的服务器就是 FTP 服务器。常见 FTP 服务器如下:Windows:S..._用主机搭建共享服务器

纯css按钮动画_css动画按钮-程序员宅基地

文章浏览阅读4.5w次。一些炫酷的css按钮动画_css动画按钮

QQ语音和视频怎么在电脑上录制音频?_如何制作qq的音频-程序员宅基地

文章浏览阅读6k次。平时我们一般都会在手机上登陆QQ,但是在工作的时候也会在电脑上登陆,以免不能及时接收消息,对于在电脑上的语音聊天内容想录制下来需要怎么办呢? 方法/步骤:1、在电脑上录制QQ语音内容,相当于在线录音,除了有些手机不能支持外,当然就需要第三方录音软件的辅助了; 2、在电脑上运行录音工具,操作一目了然,把录音的格式,声音来源等都修改好,就可以准备录制了; 3、打..._如何制作qq的音频

推荐文章

热门文章

相关标签