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

10 篇文章 25 订阅

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*

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)务必安装 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. Github 下载或者克隆 Livox-SDK 到本地;
  2. 参考对应的 README.md 文档安装和运行 Livox-SDK
mkdir build 
cd build && cmake ..
make
sudo make install
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

然后

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

注意:作者在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

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

如果你的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

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

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

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

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

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

然后:

cd ceres-solver
mkdir build
cd build
cmake ..
make
sudo make install

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

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

3 编译R3LIVE

创建ros工作空间:

mkdir -p r3live_ws/src 

克隆代码:

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

添加 livox_driver 环境变量:

cd ../
source livox_driver_for_r2live/devel/setup.bash 

编译:

catkin_make
source ~/catkin_ws/devel/setup.bash

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’`

解决:

	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
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
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

5.3 运行结果

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

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

其他数据集运行效果图:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
做的是真的好!!!

5.4 mesh重建和纹理贴图

作者最后还提供了一个很好的工具,用于mesh化和贴图的工具,可以导出一些通用格式的文件,如“pcd”, “ply”, “obj”等。当把离线地图保存在磁盘上后(默认保存在目录:${HOME}/r3live output),可以启动作者提供的工具来重建和纹理mesh。

roslaunch r3live r3live_reconstruct_mesh.launch

在这里插入图片描述

5.5 3D游戏应用

在视频中可以看到作者使用AirSim模拟器以及R3LIVE重建的mesh图搭建了两款游戏。在这里插入图片描述
如论文中图14,作者使用R3LIVE重建的地图,用AirSim模拟器制作了汽车(a)和无人机(b)。绿色和蓝色框中的视角分别是深度和从airsim的API查询的RGB图像。
论文图15,作者使用R3live制作的地图开发了手机平台和桌面PC平台的电子游戏 。在(a)中,游戏玩家控制角色香港大学校园中进行探索。(b)中,游戏角色在港科大校园内与龙搏斗。

6 参考

https://github.com/hku-mars/r3live/tree/master/papers
https://github.com/hku-mars/r3live
https://github.com/Livox-SDK/Livox-SDK
https://blog.csdn.net/handily_1/article/details/121743218

  • 28
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 42
    评论
R3LIVE是一种激光-惯性-视觉结合的SLAM算法,被认为是非常经典的文章\[1\]。该算法使用了IMU、相机和激光雷达三个传感器,每个传感器都有不同的作用。R3LIVE的代码流程可以概括为以下几个部分。 首先是前言部分,其中介绍了R3LIVE算法的结构和各个传感器的作用\[1\]。 接下来是节点与话题的绘图部分,通过绘制节点和话题的图形,可以清晰地看到R3LIVE中的两个节点:/r3live_LiDAR_front_end和/r3live_mapping\[2\]。 然后是主函数部分,该部分在FAST-LIO2中已经详细介绍过,所以在R3LIVE中不再过多介绍\[3\]。 最后是重点部分,即VIO部分。在这部分中,R3LIVE算法进行了详细的操作,但由于篇幅限制,无法在这里进行详细介绍。建议参考相关文献或代码来深入了解R3LIVE的VIO部分\[3\]。 总之,R3LIVE是一种激光-惯性-视觉结合的SLAM算法,其代码包括前言部分、节点与话题的绘图部分、主函数部分和VIO部分。详细的代码解析可以参考相关文献或代码资源。 #### 引用[.reference_title] - *1* *2* [R3LIVE代码详解(一)](https://blog.csdn.net/lovely_yoshino/article/details/126572997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [R3LIVE代码详解(三)](https://blog.csdn.net/lovely_yoshino/article/details/126676059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值