lio-sam学习笔记(一)

news2025/1/12 6:54:41

前言:

对于lio-sam框架的安装配置。

每一回不同框架的配置真是要了老命了。。。

一、安装依赖

官方github:

GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

lio-sam主要有两个依赖:ROS和gtsam,两个都踩了大坑。。。

首先我安装成功catkin_make了,但不能roslaunch lio-sam run.launch,运行就报错。

1.ros

因为系统是18.04,安装的melodic,而且之前跑lego-loam的时候,ros没有出现问题。所以我当时直接忽视了readme上面对于ros部分的配置。

然后安装到后面运行时就出现了这个错误:

第一次翻看log的时候没有看全,没有看到前面的ROS pathxxx的内容,然后就一直解决下面的两个process die。结果这个错误一直都不能解决,然后才发现是官方ros中还有三个配置没有安装。

ROS (tested with Kinetic and Melodic. Refer to #206 for Noetic)

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

安装完成后关于ROS部分的报错就没有了,下面开始真正的折磨。

2.gtsam

这个的配置真的是要了命了。。。

我之前安装的是lego-loam的时候的适配版本,是gtsam-4.0.0-alpha2吧。然后运行时报错:

 然后在网上找解决方式,当时是说有如下几个解决方式:

第一个,在编译安装gtsam的时候,将SSE关闭:

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

然后还是报错。

第二个,是把 libmetis.so放到/opt/ros/melodic/lib里面或者放到usr/lib里面。

还是报错。

第三个,是说没有安装依赖:

https://github.com/TixiaoShan/LIO-SAM/issues/271

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

安装了还是报错。

最后看别人说有可能是版本问题。4.0.0、4.0.2我全部都安装了一遍,还是报错。佛了。。。

现在准备安装4.0.3试试。

wget -O ~/下载/gtsam4.0.3.zip https://github.com/borglab/gtsam/archive/4.0.3.zip
cd /下载

然后解压缩,之后在CMakeLists.txt中设置GTSAM_USE_SYSTEM_EIGEN为ON

 这样使用本地的eigen版本,避免到时候冲突。

之后安装:

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

还是报错,无解了。。。

发现了一个问题

catkin_make in ROS Noetic [Error] · Issue #206 · TixiaoShan/LIO-SAM · GitHub

在gtsam官网:

Get Started | GTSAM

 发现有两种安装方式,一种是源码安装,一种是命令行安装,如果有使用了命令行安装又使用了源码安装,会不会报错?因为命令行安装了这个是4.0.3版本,而源码不一定是这个版本,会不会冲突了?不知道为什么,准备重装系统了。

本来准备使用docker的,突然发现,折腾半天发现docker里面的不能打开rviz,打开就报这个错误:

[ INFO] [1675246715.998600346]: rviz version 1.13.17
[ INFO] [1675246715.998690442]: compiled against Qt version 5.9.5
[ INFO] [1675246715.998718169]: compiled against OGRE version 1.9.0 (Ghadamon)
[ INFO] [1675246716.007887674]: Forcing OpenGl version 0.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

找了一圈资料,别人说是没有在docker容器内安装n卡驱动,然后又根据几篇文章安装n卡驱动:
Docker实践:使用Docker搭建个人开发环境_MAVER1CK的博客-CSDN博客_docker搭建开发环境

还是报这个错误,最后在这里发现是因为一键安装ros里面没有对于docker有显卡适配。

docker安装ros后,gazebo和rviz打不开 | 鱼香ROS

是n卡驱动的问题,我佛了。准备重装系统了,适配真的要花费好多时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6.深度学习和计算

6.深度学习和计算 目录 层和块 自定义块顺序块在前向传播函数中执行代码 参数管理 参数访问 目标参数一次性访问所有参数从嵌套块收集参数 参数初始化 内置初始化自定义初始化 参数绑定 自定义层 不带参数的层带参数的层 读写文件 加载和保存张量加载和保存模型参数使用GPU 计…

JS中函数声明与函数表达式的区别

1、函数定义 JavaScript 中定义函数最常用的方式是函数声明和函数表达式。这两种技术非常相似,有时甚至难以区分,它们之间还是存在着微妙的差别。 JavaScript 定义函数的最基本方式是函数声明: 函数声明必须独立,但也能够被包含在…

REST开发

REST风格一、简介优点REST风格二、使用三、注解PathVariableResponseBody、RequestParam和PathVariable区别应用快速开发一、简介 REST(Representational State Transfer),表现形式状态转换 传统风格资源描述形式 http://localhost/user/ge…

Smartbi电子表格软件集成的优势

Smartbi电子表格软件作为国内顶尖的企业报表工具,具有“真Excel”特色,直接用Excel作为设计器,仅需安装一个插件就可以解决众多报表难题。无需增加学习成本,学习一个新的设计器,更能解决Excel的取数、性能等问题&#…

Wireless M-Bus介绍-摘自OMS

Wireless M-Bus(wM-Bus或无线M-Bus)是成熟的Wired M-Bus(有线M-Bus)标准的后续增强。2003年(这里估计是资料错误,第一个无线M-Bus的标准是2013年的),EN 13757-4首次对其进行了描述(?)。该标准为M-Bus层模型…

Python 全栈系列216 APIFunc.Database启动流程

说明 上次做了一些改进,现在关注使用的流程。 内容 1 基础概念 能大约知道大致的几个部分有助于记忆操作步骤,以后这个项目的代号就是ABD了。 1 所有启动相关的代码全部封装在镜像apifunc_database_model1:v3,基于这个镜像就可以启动一个所有对应的服务流2 在Portal上有相关…

为WEB3 的GameFi行业爆发提供全新动力

WEB3 GameFi的突破口在2022年末Octopus Network Co-founder Louis指出,GameFi要完成2023年的全新爆发需要将所有权与经营权分离,所有用户共同参与由平台成长带来的市场红利,单一的Gamefi将会更加产品化,体验化,具备整合…

详解树状数组

前言树状数组或二叉索引树(Binary Indexed Tree),又以其发明者命名为 Fenwick 树。其初衷是解决数据压缩里的累积频率的计算问题,现多用于高效计算数列的前缀和、区间和。它可以以 O(logn) 的时间得到任意前缀和。并同时支持在 O(…

JVM线上问题定位命令

概述 本文主要介绍下平常可能会使用到的命令:jps、jinfo、jmap、jstat、jstack jps jps主要是查看Java进程号,有个Java进程号后面的命令也才能发挥作用。 jps -help可以列出jps支持的参数,大家可以试一下 jinfo jinfo后面跟jps打出来的…

nvm(node版本管理)

文章目录1 安装2 配置镜像,提高下载速度3 常用命令4 vue版本与node版本的依赖关系注意事项1 nvm use 报错1 安装 官方下载地址: https://nvm.uihtm.com/ 官网同时还给出了非常详细的指令文档。 下载windows版本的安装包,按照提示点击下一步…

网络通信Socket学习记录

网络通信Socket Socket socket起源于unix,而unix/linux基本思想就是一切皆文件,也称为文件描述符socket是对“open—write/read—close”的一种实现socket是对TCP/IP协议的一种封装,socket本身不是协议,通过socket才能使用TCP/I…

一站式轻监控轻运维系统nezha(上篇)

本文软件由网友 114514 推荐; 什么是哪吒监控 ? 哪吒监控 是自托管、轻量级服务器和网站监控运维工具,属于一站式轻监控轻运维系统,分主控端和被控端,主控端提供访问的面板,被控端就是需要监控的服务器。 准…

Python的集合(set)类型、None类型.....

Day07 数据类型(下) dict,字典类型,一个容器,元素必须是键值对 Set,集合类型,一个不允许重复&可变类型(元素可哈希) float,浮点类型,常见的小数 文章目录1.集合(se…

this和super的区别

0.定义区别this:是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 super:可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最 近的一个父类。…

docker镜像lasest具体是哪个版本

拿Nginx举例: 我们安装镜像Nginx时,假设使用的下面这样: docker pull nginx:latest 执行上面的命令后,最后得到:"Status: Downloaded newer image for nginx:latest" 已经下载最新的Nginx了。 那么问题来…

JUC并发编程之ArrayBlockingQueue的底层原理

作者简介:专注于研究Linux内核、Hotspot虚拟机、汇编语言、JDK源码、各大中间件源码等等喜欢的话,可以三连关注~ArrayBlockingQueue的介绍在JUC包下关于线程安全的队列实现有很多,那么此篇文章讲解ArrayBlockingQueue的实现原理。相对于Linke…

闲置vps出售流量赚钱

原理分析最近,一直在关注着vps赚钱这点事儿,今天就是填一下以前的坑。这里所说的出售流量,可能大家都听说过,把vps流量卖给别人获得一定的报酬。但是你要知道数据中心IP的流量是很便宜的,最贵的是住宅IP和移动流量。图…

别搜了!2023年PMP备考攻略全指南看这里就够了!

一、考试时间 PMP考试是一年四次的,一般在3月、6月、9月、12月份考试(考试时间一般为周六)。 所以如果有想法一定要在这个几个时间点之间备考准备哦。 二,报名流程 一般都是中英文两个官网都报名 1.英文报名 需要在PMI官方网…

Ubuntu救援模式emergency mode笔记

如果是磁盘自检出错,进入救援模式emergency mode,可以参考如下。chatgpt给出提示:如果Ubuntu磁盘自检出错,需要进入救援模式,可以以下步骤操作:在启动画面中,按下Shift键进入Grub菜单。选择「Ad…

Android精准开发——OKHTTP中拦截器原理及实现

1.前言 提到OKHttp大家都不陌生,OKHttp中的拦截器也在大家的项目中或多或少的被使用到,通常我们的使用是这样的 OkHttpClient client new OkHttpClient.Builder() .addInterceptor(new LoggingInterceptor()) .addNetworkInterceptor(new Token…