admin管理员组文章数量:1579901
R3LIVE相关参考:
R3LIVE(升级R2LIVE):编译与运行https://blog.csdn/handily_1/article/details/122271243?spm=1001.2014.3001.5502
R3live:整体分析
https://blog.csdn/handily_1/article/details/122360134?spm=1001.2014.3001.5502
运行代码报错:Failed to load module “canberra-gtk-module“
https://blog.csdn/handily_1/article/details/122359275
R3live笔记:(图像处理)视觉-惯性里程计VIO部分
https://blog.csdn/handily_1/article/details/122377514
阅读索引
- 1 R3LIVE简介
- 2 安装环境
- 2.1 ROS
- 2.2 安装livox驱动程序
- 2.2.1 Livox-SDK 安装
- 2.2.2 livox_ros_driver
- 2.2.3 launch文件说明
- 2.2.4 livox_ros驱动程序内部主要参数配置说明
- 2.3 CGAL and pcl_viewer (选择性安装)
- 2.4 OpenCV >= 3.3
- 2.5 安装PCL
- 2.6 安装eigen3
- 2.7 安装Ceres
- 3 编译R3LIVE
- 4 编译报错汇总
- 1. 报错Could not find a package configuration file provided by “livox_ros_driver“
- 2. 我用的是ubuntu18.04,用20.04也按照这样编译就可以了,注意库的编译;比较建议18.04
- 3. 编译遇到lz4声明冲突问题:
- 4. 在arm的板子上编译过了,一运行就报错的情况
- 5.fatal error: zbar.h: 没有那个文件或目录
- 6.error: LZ4相关报错
- 7.lkpyramid.cpp:803:10: error: invalid initialization of reference of type ‘const cv::ParallelLoopBody&’
- 5 运行
- 5.1 下载作者公布的R3LIVE数据集
- 5.2 运行代码
- 5.3 运行结果
- 5.4 mesh重建和纹理贴图
- 5.5 3D游戏应用
- 6 参考
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/hku-mars/r3live/tree/master/papers
源码:https://github/hku-mars/r3live
视频
b站1:https://www.bilibili/video/BV1d341117d6?share_source=copy_web
b站2:https://www.bilibili/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/Livox-SDK/Livox-SDK
- 从 Github 下载或者克隆 Livox-SDK 到本地;
- 参考对应的 README.md 文档安装和运行 Livox-SDK
mkdir build
cd build && cmake ..
make
sudo make install
2.2.2 livox_ros_driver
参考官方 https://github/Livox-SDK/livox_ros_driver
github下载,
git clone https://github/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 文件拥有不同的配置参数值, 应用在不同的场景中:
- livox_lidar.launch、livox_hub.launch :向外发布 pointcloud2 格式的点云数据
- livox_lidar_msg.launchlivox_hub_msg.launch:向外发布览沃自定义点云数据
- 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_topic | LiDAR 设备是否拥有独立的 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/handily_1/article/details/122181399
2.6 安装eigen3
注意:安装ceres之前一定首先安装eigen库,否则编译的时候会报错
可以使用以下命令进行安装:
sudo apt-get install libeigen3-dev
如果出现了ceres和eigen3.3版本冲突的问题,
是因为eigen库最新的版本与ceres-solver版本不兼容,
所以需要去下载相应的版本进行安装
可以安装EIGEN3.3.7和CERES-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/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/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/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/ziv-lin/r3live_dataset
附R3LIVE百度网盘:
https://pan.baidu/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/hku-mars/r3live/tree/master/papers
https://github/hku-mars/r3live
https://github/Livox-SDK/Livox-SDK
https://blog.csdn/handily_1/article/details/121743218
版权声明:本文标题:R3LIVE(升级R2LIVE):编译与运行 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727863176a1134200.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论