前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Fast-Lio SLAM.上篇

Fast-Lio SLAM.上篇

作者头像
云深无际
发布于 2022-11-29 06:56:36
发布于 2022-11-29 06:56:36
90200
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

我很早以前就想把公众号的广告关了,我虽然粉丝少,但是却注重体验。

应该大家看不到什么广告了,我还是很爱我滴粉丝们的

另外也感谢俊哥把他的显示器给我用,虽然有些光线,但是不重要了:

终于有了外置的屏幕

但是可能立着看代码是好的,但是实在是太长了,有点受不了~

工友在机器上面编译了好几天也失败了,后面又换了MAC(笑死M1的片子,开虚拟机编译)又是报错的一天。

没啥办法了,现在就是这样接外面搞

相当于雷达和计算平台,就处理回传的点云数据,然后,这里使用一个Ubuntu的桌面版本来运行建图的包。

先安装PCL库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get update  
$ sudo apt-get install git build-essential linux-libc-dev
$ sudo apt-get install cmake cmake-gui
$ sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
$ sudo apt-get install mpi-default-dev openmpi-bin openmpi-common 
$ sudo apt-get install libflann1.9 libflann-dev
$ sudo apt-get install libeigen3-dev 这个需要自己下载正确版本安装,我的是3.3.7
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install libvtk7.1p-qt
$ sudo apt-get install libvtk7.1p 
$ sudo apt-get install libvtk7-qt-dev(按照错误提示一步一步安装所需要的东西)
$ sudo apt-get install libqhull* libgtest-dev
$ sudo apt-get install freeglut3-dev pkg-config
$ sudo apt-get install libxmu-dev libxi-dev
$ sudo apt-get install mono-complete
$ sudo apt-get install openjdk-8-jdk openjdk-8-jre

遇到错误自己研究

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git clone https://github.com/PointCloudLibrary/pcl.git 

PCL的库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd pcl 
$ mkdir release 
$ cd release
$ cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr .. 
$ make  
$ sudo make install

然后安装,这里我就不验证了,应该我是安装上了,如果没有安装好,寄了

在/usr/include,/usr/lib, /usr/bin d等目录下可以看到于pcl有关的头文件、库、和可执行程序等文件。

继续安装数值计算的模板库:

Eigen 是C++语言里的一个开源模版库,支持线性代数运算,矩阵和矢量运算,数值分析及其相关的算法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install libeigen3-dev

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/eigenteam/eigen-git-mirror

#安装

cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install

#安装后,头文件安装在/usr/local/include/eigen3/
#移动头文件

 sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 

后面这个移动的命令我没有执行

Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。使用ceres库必须先安装eigen库,ceres库是基于eigen的。

这个库需要在Git里面下载解压一下,然后安装的时候不要按照官方的安装命令来,有很多的错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

安装这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ceres-solver-2.0.0
mkdir build
cd build
cmake ..
make -j4

执行这个命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo make install

我的ROS安装了这么多

激光雷达的SDK安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install cmake

这个不用执行,不然你以为上面是这么编译的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install

按照顺序一条一条的执行,笑死了,有的人一股脑的全复制执行,我喂你吃饭好不好。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/Livox-SDK/Livox-SDK/blob/master/README_CN.md

SDK的位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/Livox-SDK/livox_ros_driver

这个就是我们要安装的雷达的ROS驱动,相当于比SDK更加高一层的包装。不愧是中国人做的东西,真长脸,有中文的doc。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src

执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ws_livox
catkin_make

这个执行的时候,注意要把ros的环境激活一下,不然就报错了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source ./devel/setup.sh

记得安装好以后搞一下这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
roslaunch livox_ros_driver [launch file] [param]

这个是使用雷达的命令

  1. 如果 [param] 参数项为空,则览沃 ROS 驱动程序会根据配置文件中的具体配置来连接对应的设备,具体连接规则如下:

    当配置文件中指定的设备连接状态配置为使能连接时 (true) ,览沃 ROS 驱动程序只会连接该配置文件中指定的设备;

说明

    (1)该配置文件位于 "ws_livox/src/livox_ros_driver/config" 目录下;

    (2)当配置文件中指定的设备连接状态全部配置为禁止连接 (false) 时,览沃 ROS 驱动程序会自动连接扫描到的所有设备;

  1. 如果 [param] 参数为 LiDAR 的广播码,以 LiDAR( 广播码为 0TFDG3B006H2Z11 ) 和 LiDAR ( 广播码为 1HDDG8M00100191 ) 为例,使用的具体命令如下 :
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
roslaunch livox_ros_driver livox_lidar_rviz.launch bd_list:="0TFDG3B006H2Z11&1HDDG8M00100191"

每台览沃 LiDAR 设备拥有一个唯一的广播码。广播码由14位字符长度的序列号和一个额外的字符组成( 1、2或者 3),一共 15 位字符长度,上述序列号位于 LiDAR 机身外壳的二维码下面(见下图)。广播码被用来指定要连接的 LiDAR 设备,详细组成格式如下:

我的小工友数了一晚上然后笃定的告诉我,这个东西上面是14位和doc上面写的15不一样,我也数量,确实是14,然后15是需要末尾+1,哥哥,我吐了。

上图中 X ,在 MID-100_Left/MID-40/Horizon/Tele 产品中对应为 1 ,在 MID-100_Middle 中对应为 2,在MID-100_Right 中对应为 3 。

这个是驱动可以跑起来的任务

三个参数是具体任务跑起来可以设置的一些参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

float32 x               # X axis, unit:m
float32 y               # Y axis, unit:m
float32 z               # Z axis, unit:m
float32 intensity       # the value is reflectivity, 0.0~255.0
uint8 tag               # livox tag
uint8 line              # laser number in lidar

雷达的点云格式

直接连接 LiDAR 时,使用 livox_lidar_config.json 来配置 LiDAR 参数,文件内容示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
   "lidar_config": [
      {
         "broadcast_code": "0TFDG3B006H2Z11",
         "enable_connect": true,
         "return_mode": 0,
         "coordinate": 0,
         "imu_rate": 1,
         "extrinsic_parameter_source": 0
      }
    ]
}

格式

乱吗?确实乱,下篇文章继续写,先溜了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://blog.csdn.net/weixin_44857882/article/details/119877566
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/ceres-solver/ceres-solver/releases/tag/2.1.0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://eigen.tuxfamily.org/index.php?title=Main_Page
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://blog.csdn.net/weixin_41836738/article/details/121451965
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【DB宝60】PG12高可用之1主2从流复制环境搭建及切换测试
PostgreSQL在9.x之后引入了主从的流复制机制,所谓流复制,就是备服务器通过tcp流从主服务器中同步相应的数据,主服务器在WAL记录产生时即将它们以流式传送给备服务器,而不必等到WAL文件被填充。
AiDBA宝典
2021/07/29
3.3K0
【DB宝61】PostgreSQL使用Pgpool-II实现读写分离+负载均衡
官网:https://www.pgpool.net/mediawiki/index.php/Main_Page
AiDBA宝典
2021/07/29
2.9K0
【DB宝95】PG 14 + Pgpool-II + Watchdog 实现高可用(自动故障转移+读写分离+负载均衡)
Pgpool-II是一个在PostgreSQL服务器和PostgreSQL数据库客户端之间工作的中间件。它是根据BSD许可证授权的。它提供以下功能。
AiDBA宝典
2022/04/11
4K3
【DB宝95】PG 14 + Pgpool-II + Watchdog 实现高可用(自动故障转移+读写分离+负载均衡)
【DB宝91】PG高可用之主从流复制+keepalived 的高可用
通过keepalived 来实现 PostgreSQL 数据库的主从自动切换,以达到高可用。当主节点宕机时,从节点可自动切换为主节点,继续对外提供服务。
AiDBA宝典
2022/02/23
2.9K0
【DB宝91】PG高可用之主从流复制+keepalived 的高可用
5、pgpool-II高可用性(一)数据库的高可用性
使用 pgpool-II 软件;我们常用来实现流复制的高可用性;备库只读的,不可写;就是当主库出现问题时;需要把备库自动激活为主库;来接管服务。
huofo
2022/03/18
2K0
PG高可用之repmgr(1主2从+1witness)+Pgpool-II实现主从切换+读写分离+负载均衡
第二次执行时不再提示输入yes,并且可以成功执行命令,则表示SSH对等性配置成功。
AiDBA宝典
2022/11/07
3K0
PG高可用之repmgr(1主2从+1witness)+Pgpool-II实现主从切换+读写分离+负载均衡
【DB宝62】PG高可用之repmgr(1主2从+1witness)+Pgpool-II实现主从切换+读写分离+负载均衡
第二次执行时不再提示输入yes,并且可以成功执行命令,则表示SSH对等性配置成功。
AiDBA宝典
2021/07/29
1.8K1
pgpool-II 4.3 中文手册 - 入门教程
在本节中,我们假设您已经安装了 Pgpool-II 与 PostgreSQL 集群。
为少
2022/05/17
1.8K0
pgpool-II 4.3 中文手册 - 入门教程
原 利用pgpool实现PostgreSQL的高可用
基于流复制的方式,两节点自动切换:     1、单pgpool         a.环境: pgpool:192.168.238.129 data1:192.168.238.130 data2:192.168.238.131         b.图例         c.配置互信 ssh-copy-id ha@node1 ssh-copy-id ha@node2         d.数据库节点配置,请参照《 使用pg_basebackup搭建PostgreSQL流复制环境 》。
王果壳
2018/06/21
2.3K0
进阶数据库系列(十九):PostgreSQL 基于 Pgpool 实现读写分离
Pgpool 是一个高性能的连接池和负载均衡器,用于 PostgreSQL 数据库。Pgpool 可以作为中间层,位于客户端和 PostgreSQL 服务器之间,来管理连接请求并分配给不同的 PostgreSQL 服务器进行处理,以提高整体的系统性能和可用性。Pgpool 的一些主要功能包括:
民工哥
2023/08/22
4.1K0
进阶数据库系列(十九):PostgreSQL 基于 Pgpool 实现读写分离
PG-Pool-II 读写分离使用体验
设置连接数控制,避免过高的连接导致访问报错,当超出连接数上线后,对后续的访问进行排队等待。
腾讯云数据库 TencentDB
2021/09/03
1.8K0
PG-Pool-II 读写分离使用体验
「在 Kubernetes 上运行 Pgpool-Il」实现 PostgreSQL 查询(读)负载均衡和连接池
因为 PostgreSQL 是一个有状态的应用程序,并且管理 PostgreSQL 有非常具体的要求(例如备份、恢复、自动故障转移等),Kubernetes 的内置功能无法处理这些任务。因此,需要一个扩展 Kubernetes 功能以创建和管理 PostgreSQL 的 Operator。
为少
2022/03/31
1.8K0
「在 Kubernetes 上运行 Pgpool-Il」实现 PostgreSQL 查询(读)负载均衡和连接池
PostgreSQL体系结构
原文:https://www.enmotech.com/web/detail/1/764/1.html
数据和云01
2019/07/31
1.1K0
PostgreSQL体系结构
史上最全PostgreSQL体系结构
墨墨导读:本文主要从日志文件、参数文件、控制文件、数据文件、redo日志(WAL)、后台进程这六个方面来讨论PostgreSQL的结构。
数据和云
2019/07/22
4.1K0
史上最全PostgreSQL体系结构
使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
使用以下环境变量,可以使用 Bitnami PostgreSQL Docker 镜像 轻松设置流复制集群:
为少
2022/05/17
1.6K0
使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
使用Bucardo搭建PG的双主
https://www.xmmup.com/shiyongogg-for-pgweifuwukuaisushuangxiangtongburdsshujukushuangzhu.html
AiDBA宝典
2023/04/26
2K0
使用Bucardo搭建PG的双主
PostgreSQL主备库搭建
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
雪人
2022/10/13
2.7K0
搭建一个高可用的镜像仓库,这是我见过最详细、最简单的教程
大家好,我是小碗汤,今天分享一篇搭建一个高可用镜像仓库的教程。详细中夹杂着简单~。篇幅较长,兄弟们不妨耐心看完~
我的小碗汤
2022/01/14
1.7K0
搭建一个高可用的镜像仓库,这是我见过最详细、最简单的教程
PostgresSQL 主从搭建步骤
由于工作需要,最近开始接触各种数据库,并尝试各种数据库产品的高可用方案。今天分享的是postgresSQL的主从配置,其实还是蛮简单的,跟随本文的步骤,保证能实现PG主从的搭建。
星哥玩云
2022/08/13
2.5K0
在docker中快速使用各个版本的PostgreSQL数据库(9.4、9.6、10、11、12、13、14、15等)
PG安装方法很多,和MySQL类似,给用户提供很大的选择空间。如:RPM包安装(在线、离线)、源码编译安装、系统自带、二进制、NDB安装等。
AiDBA宝典
2023/09/08
4.8K0
在docker中快速使用各个版本的PostgreSQL数据库(9.4、9.6、10、11、12、13、14、15等)
推荐阅读
相关推荐
【DB宝60】PG12高可用之1主2从流复制环境搭建及切换测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验