当前位置:   article > 正文

R3LIVE(升级R2LIVE):编译与运行

r3live

R3LIVE相关参考:
R3LIVE(升级R2LIVE):编译与运行

https://blog.csdn.net/handily_1/article/details/122271243?spm=1001.2014.3001.5502
R3live:整体分析
https://blog.csdn.net/handily_1/article/details/122360134?spm=1001.2014.3001.5502
运行代码报错:Failed to load module “canberra-gtk-module“
https://blog.csdn.net/handily_1/article/details/122359275
R3live笔记:(图像处理)视觉-惯性里程计VIO部分
https://blog.csdn.net/handily_1/article/details/122377514

1 R3LIVE简介

之前港大的hku-mars火星实验室在R2LIVE的基础上提出了“R3Live”,
论文和视频很早就发出来了,但是代码一直没有开源(虽然作者一直强调会开源),

在一众slamer的千呼万唤之下, 在2021年的年尾,
2021.12.31 ,
终于,
能够在github下载了。

整体框架:在这里插入图片描述
R3LIVE是一种新型的激光雷达-惯性-视觉传感器融合框架,它利用激光雷达、惯性和视觉传感器的测量来实现鲁棒性和准确性的状态估计。R3LIVE是在之前R2LIVE的基础上建立起来的,包含两个子系统:雷达 -惯性里程计(LIO)视觉-惯性里程计(VIO)。LIO子系统(FAST-LIO)利用激光雷达和惯性传感器的测量,建立全局地图的几何结构(即三维点的位置)。VIO子系统利用视觉-惯性传感器的数据,呈现三维地图的纹理特征(即3D点的颜色)
这个开源框架不仅生成了纹理贴合得不错的彩色点云,甚至还重建成了mesh带入到游戏中,使人身临其境。今天是2022.01.01,我来跑这个开源代码,一边跑一边感叹NB,这是目前我看到最好的建图效果,虽然之前看他们公布的视频就已经有心理准备了,但是今天亲自跑出来的效果还是惊艳到我了,所以现在把跑通的过程记录下来,供各位参考。

参考资料:
论文:https://github.com/hku-mars/r3live/tree/master/papers
源码:https://github.com/hku-mars/r3live
视频
b站1:https://www.bilibili.com/video/BV1d341117d6?share_source=copy_web
b站2:https://www.bilibili.com/video/BV1e3411q7Di?share_source=copy_web

2 安装环境

2.1 ROS

按照ros wiki官网安装ros和ros包,R3LIVE支持Ubuntu16.04 ROS Kinetic 和 Ubuntu18.04 ROS Melodic。
我的电脑装的是Ubuntu 18.04和ROS Melodic。之前Ubuntu16.04 和 Ubuntu20.04都用过,发现还是18.04最好用。
然后安装additional pacakge:

sudo apt-get install ros-XXX-cv-bridge ros-XXX-tf ros-XXX-message-filters ros-XXX-image-transport ros-XXX-image-transport*
  • 1

NOTICE: remember to replace “XXX” on above command as your ROS distributions, for example, if your use ROS-kinetic, the command should be:

sudo apt-get install ros-kinetic-cv-bridge ros-kinetic-tf ros-kinetic-message-filters ros-kinetic-image-transport*
  • 1

说明:

(1)务必安装 ROS 完整版 (ros-distro-desktop-full);

(2)国内安装 ROS 时,由于网络环境问题,有可能安装失败或者安装错误,请耐心查找错误原因,并解决问题;

(3)ROS 安装一共有 7 到 8 个步骤,请仔细阅读安装指南;

2.2 安装livox驱动程序

运行览沃 ROS 驱动程序之前,必须安装 ROS 和 Livox-SDK。

2.2.1 Livox-SDK 安装
		github: https://github.com/Livox-SDK/Livox-SDK
  • 1
  1. Github 下载或者克隆 Livox-SDK 到本地;
  2. 参考对应的 README.md 文档安装和运行 Livox-SDK
mkdir build 
cd build && cmake ..
make
sudo make install
  • 1
  • 2
  • 3
  • 4
2.2.2 livox_ros_driver

参考官方 https://github.com/Livox-SDK/livox_ros_driver
github下载,

git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
  • 1

然后

cd ws_livox
catkin_make
//使用如下命令更新当前 ROS 包环境
source ./devel/setup.sh
  • 1
  • 2
  • 3
  • 4

注意:作者在readme中说了,因为Livox-ros-driver官方发布的LiDAR数据和IMU数据都带有LiDAR的时间戳(每次记录都从0开始),而图像的时间戳通常是用操作系统的时间戳记录的。为了使它们在相同的基于时间的情况下工作,作者修改了Livox-ros-driver的源代码,所以作者新的driver驱动包可以从livox_ros_driver_for_R2LIVE获得。
如果是为R3LIVE采集并运行自己的数据需要用它替换官方驱动程序。

2.2.3 launch文件说明

驱动程序中所有的 launch 文件都位于 “ws_livox/src/livox_ros_driver/launch” 路径下,不同的 launch 文件拥有不同的配置参数值, 应用在不同的场景中:

  1. livox_lidar.launch、livox_hub.launch :向外发布 pointcloud2 格式的点云数据
  2. livox_lidar_msg.launchlivox_hub_msg.launch:向外发布览沃自定义点云数据
  3. livox_lidar_rviz.launch、livox_hub_rviz.launch:向外发布 pointcloud2 格式的点云数据并自动加载rviz
2.2.4 livox_ros驱动程序内部主要参数配置说明

览沃 ROS 驱动程序中的所有内部参数都位于 launch 文件中,这是经常用到的三个参数:

参数名详细说明默认值
publish_freq设置点云发布频率
浮点数据类型,推荐值 5.0,10.0,20.0,50.0 等。
10.0
multi_topicLiDAR 设备是否拥有独立的 topic 发布点云数据
0 – 所有 LiDAR 设备共同使用同一个 topic 发送点云数据
1 – 每个 LiDAR 设备各自拥有独立的 topic 发布点云数据
0
xfer_format设置点云格式
0 – 览沃 pointcloud2(PointXYZRTL) 点云格式
1 – 览沃自定义点云数据格式
2 – PCL库中标准 pointcloud2(pcl::PointXYZI) 点云格式
0

2.3 CGAL and pcl_viewer (选择性安装)

sudo apt-get install libcgal-dev pcl-tools
  • 1

2.4 OpenCV >= 3.3

opencv应该都装好了的,R3LIVE支持多种版本的opencv,包括3.3.1, 3.4.15,3.4.16, 4.2.1 以及 4.5.3。可以使用以下命令检查您的OpenCV版本,

pkg-config --modversion opencv
  • 1

如果你的OpenCV版本低于OpenCV-3.3,建议遇到错误时更新OpenCV版本。

2.5 安装PCL

安装PCL可以参考这篇文章:UBUNTU18.04编译安装PCL-1.8和VTK-7.1.1
https://blog.csdn.net/handily_1/article/details/122181399

2.6 安装eigen3

注意:安装ceres之前一定首先安装eigen库,否则编译的时候会报错
可以使用以下命令进行安装:

sudo apt-get install libeigen3-dev
  • 1

如果出现了ceres和eigen3.3版本冲突的问题,
是因为eigen库最新的版本与ceres-solver版本不兼容,
所以需要去下载相应的版本进行安装
可以安装EIGEN3.3.7CERES-2.0.0,在我电脑上是可以通过的。
安装完执行:

cp -r /usr/local/include/eigen3/ /usr/include/eigen3/
  • 1
 ln -s /usr/local/include/eigen3/Eigen/ /usr/include/Eigen
  • 1

查看Eigen版本号:
Eigen库版本的定义在 /usr/include/eigen3/Eigen/src/Core/util/Macros.h 里面,所以

cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h
  • 1

2.7 安装Ceres

官网下载链接:https://github.com/ceres-solver/ceres-solver
安装依赖:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
  • 1

然后:

cd ceres-solver
mkdir build
cd build
cmake ..
make
sudo make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

安装完后查看Ceres版本:
因为Ceres库版本的定义在 /usr/local/include/ceres/version.h 里面,所以

sudo cat /usr/local/include/ceres/version.h 
  • 1

3 编译R3LIVE

创建ros工作空间:

mkdir -p r3live_ws/src 
  • 1

克隆代码:

cd r3live_ws/src
git clone https://github.com/hku-mars/r3live.git
  • 1
  • 2

添加 livox_driver 环境变量:

cd ../
source livox_driver_for_r2live/devel/setup.bash 
  • 1
  • 2

编译:

catkin_make
source ~/catkin_ws/devel/setup.bash
  • 1
  • 2

4 编译报错汇总

1. 报错Could not find a package configuration file provided by “livox_ros_driver“

解决办法:点这里https://blog.csdn.net/handily_1/article/details/121743218

2. 我用的是ubuntu18.04,用20.04也按照这样编译就可以了,注意库的编译;比较建议18.04

3. 编译遇到lz4声明冲突问题:

`error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’`
  • 1

解决:

	sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
	sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
	sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
	sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h
  • 1
  • 2
  • 3
  • 4
4. 在arm的板子上编译过了,一运行就报错的情况

在这里插入图片描述
我用的板载计算机是英伟达,官方目前对于英伟达还没有适应版本

5.fatal error: zbar.h: 没有那个文件或目录

首先安装sudo apt install libzbar-dev再catkin_make

6.error: LZ4相关报错

终端输入:

sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h
  • 1
  • 2
  • 3
  • 4
7.lkpyramid.cpp:803:10: error: invalid initialization of reference of type ‘const cv::ParallelLoopBody&’

opencv版本问题

5 运行

5.1 下载作者公布的R3LIVE数据集

数据集地址:https://github.com/ziv-lin/r3live_dataset
附R3LIVE百度网盘:
https://pan.baidu.com/s/1zmVxkcwOSul8oTBwaHfuFg#list/path=%2F
提取码: wwxw

5.2 运行代码

roslaunch r3live r3live_bag.launch
rosbag play YOUR_DOWNLOADED.bag
  • 1
  • 2

5.3 运行结果

在这里插入图片描述
R3LIVE可以在任何时候保存你创建的地图。你只需要把鼠标移动到Control panel那个图标上,点击并按“S”键即可保存pcd地图,离线地图会保存在${HOME}/r3live_output文件夹下,在launch 文件中可以修改地图保存路径。

可以看出,R3LIVE的纹理效果非常好,地图也很稠密,随着地图越建越大,电脑内存也越占越大,我的电脑配置cpu是r7 3700x,gpu是1080TI,内存是16G。刚开始跑内存占50%左右,跑到最后内存会占用90%左右,但我swap空间分配了100个G,不知道是不是这个原因反正运行起来一点也不卡,很丝滑(狗头

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/420980
推荐阅读
相关标签