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
之前港大的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
按照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 个步骤,请仔细阅读安装指南;
运行览沃 ROS 驱动程序之前,必须安装 ROS 和 Livox-SDK。
github: https://github.com/Livox-SDK/Livox-SDK
mkdir build
cd build && cmake ..
make
sudo make install
参考官方 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采集并运行自己的数据需要用它替换官方驱动程序。
驱动程序中所有的 launch 文件都位于 “ws_livox/src/livox_ros_driver/launch” 路径下,不同的 launch 文件拥有不同的配置参数值, 应用在不同的场景中:
览沃 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 |
sudo apt-get install libcgal-dev pcl-tools
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版本。
安装PCL可以参考这篇文章:UBUNTU18.04编译安装PCL-1.8和VTK-7.1.1
https://blog.csdn.net/handily_1/article/details/122181399
注意:安装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
官网下载链接: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
创建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
解决办法:点这里https://blog.csdn.net/handily_1/article/details/121743218
`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
首先安装sudo apt install libzbar-dev再catkin_make
终端输入:
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
opencv版本问题
数据集地址:https://github.com/ziv-lin/r3live_dataset
附R3LIVE百度网盘:
https://pan.baidu.com/s/1zmVxkcwOSul8oTBwaHfuFg#list/path=%2F
提取码: wwxw
roslaunch r3live r3live_bag.launch
rosbag play YOUR_DOWNLOADED.bag
R3LIVE可以在任何时候保存你创建的地图。你只需要把鼠标移动到Control panel那个图标上,点击并按“S”键即可保存pcd地图,离线地图会保存在${HOME}/r3live_output文件夹下,在launch 文件中可以修改地图保存路径。
可以看出,R3LIVE的纹理效果非常好,地图也很稠密,随着地图越建越大,电脑内存也越占越大,我的电脑配置cpu是r7 3700x,gpu是1080TI,内存是16G。刚开始跑内存占50%左右,跑到最后内存会占用90%左右,但我swap空间分配了100个G,不知道是不是这个原因反正运行起来一点也不卡,很丝滑(狗头)。
其他数据集运行效果图:
做的是真的好!!!
作者最后还提供了一个很好的工具,用于mesh化和贴图的工具,可以导出一些通用格式的文件,如“pcd”, “ply”, “obj”等。当把离线地图保存在磁盘上后(默认保存在目录:${HOME}/r3live output),可以启动作者提供的工具来重建和纹理mesh。
roslaunch r3live r3live_reconstruct_mesh.launch
在视频中可以看到作者使用AirSim模拟器以及R3LIVE重建的mesh图搭建了两款游戏。
如论文中图14,作者使用R3LIVE重建的地图,用AirSim模拟器制作了汽车(a)和无人机(b)。绿色和蓝色框中的视角分别是深度和从airsim的API查询的RGB图像。
论文图15,作者使用R3live制作的地图开发了手机平台和桌面PC平台的电子游戏 。在(a)中,游戏玩家控制角色香港大学校园中进行探索。(b)中,游戏角色在港科大校园内与龙搏斗。
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