香港大学R3live:手把手教你如何编译和运行

R3live是香港大学MARS实验做的有关Livox雷达的相关成果,于2021年12月31日开源,其主要目标是以Livox雷达为核心做多传感器融合方案。以下是个人的Ubuntu系统下环境配置和简单运行记录。

R3live的环境配置前后分为:ROS安装—>livox的ros驱动安装—>CGAL和pcl_viewer的安装—>opencv的安装。在所有安装编译前,确认电脑上已安装CMake3.0.0+,若是没有安装,执行以下命令:

sudo apt install cmake

第一步,ROS安装

        如果有小伙伴电脑上已经安装了ROS,可以忽略这一步,跳到下一步。

        安装命令格式如下:

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

        以安装ROS-kinetic为例则是:

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

第二步,livox的ros驱动安装

        (1)首先下载livox-SDK到本地进行安装编译。

        livox-SDK的地址:https://github.com/Livox-SDK/Livox-SDK

        放上地址的目的是为了方便大家,也可以采用git clone的方式进行:

git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install

        建议在编译安装完成后进行简答的测试,以确定是否成功安装。在build文件夹下,进入sample/lidar或者进入sample/hub文件夹下,运行相应程序进行测试。

        命令如下:

cd sample/lidar
./lidar_sample

        或者

cd sample/hub
./hub_sample

        (2)下载编译安装livox的ros驱动程序

        这里可能很多小伙伴会问,我不用livox激光,只是想用数据集跑一下,还需要安装livox的ros驱动程序吗?我当时也是不想进行这一步,但是当编译R3live程序时,你会发现,编译是不会通过并且明确告诉你缺少livox的ros驱动程序,所以,没办法,被迫营业(手动狗头),安装吧!

        github地址如下:https://github.com/Livox-SDK/livox_ros_driver.git

        也可以采用官方说明中的终端命令行git clone的方式:

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

        注意:这里是默认创建了ws_livox/src的文件夹,编译安装要在ws_livox文件夹下,当然,也可以改下后面的命令(指“ws_livox/src”)将代码放在自己的文件夹下以便管理。

        然后就是在ws_livox文件夹(要是自己放在不同的文件夹下记得更改终端下的当前路径信息)下编译:

cd ws_livox
catkin_make

        最后是刷新当前ROS包的环境:

source ./devel/setup.sh

        有兴趣的小伙伴可以尝试运行相应launch文件进行简单的测试是否成功,我是没有这个livox激光,也就没有运行过。

        (3)CGAL和pcl_viewer安装

        官方说明中是一行命令就可以解决了:

sudo apt-get install libcgal-dev pcl-tools

        但是可能是我电脑环境的原因,编译时依旧报缺失CGAL的错误,无奈,只能把CGAL的依赖全部安装一遍(最笨的办法可能是有效的,手动狗头),如果小伙伴用上面一行命令能够解决的话,就忽略接下来的一步吧。

sudo apt-get install build-essential

sudo apt-get install libpcl-dev pcl-tools    

sudo apt-get install libglu1-mesa-dev

sudo apt-get install libglut-dev

sudo apt-get install libopencv-dev python-opencv

sudo apt-get install qttools5-dev-tools

sudo apt-get install qt5-default libcgal11v5 libcgal-qt5-11 libcgal-qt5-dev libcgal-ipelets

sudo apt-get install geomview
 
sudo apt-get install libgmp-dev libmpfr-dev

sudo apt-get install libcgal-dev  # CGAL库

        (4)opencv的安装

        opencv比较常用,可能小伙伴们电脑中都已有配置,官方要求opencv在3.3版本以上就行,官方是测试了 3.3.1,3.4.16,4.2.1和4.5.3都可以用,在我电脑环境下版本3.4.11也是可行的。

        附上查看opencv版本的命令:

pkg-config opencv --modversion

        若是没有安装opencv的小伙伴可以在网上搜下教程,有很多,这里就不赘述了。

        走到最后就是R3live的编译了:

cd ~/catkin_ws/src
git clone https://github.com/hku-mars/r3live.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

        如果小伙伴们能够顺利编译通过,恭喜你们啦,都是天选之子,so lucky。像我平常不多扶老奶奶过马路的就没这么幸运啦,卡在eigen版本的问题上卡了一天,都快自暴自弃了!!!具体报错内容是在lib_sophus下的各类hpp文件下,咱们只需要关注首行错误:

error: ‘ScalarBinaryOpTraits’ in namespace ‘Eigen’ does not name a template type
   using ReturnScalar = typename Eigen::ScalarBinaryOpTraits< 

        解决某个问题的思想是先定位问题所在,然后考虑解决的方法论。这类问题的关键在于eigen库的版本过低,找不到sophus库的原因或者eigen库版本符合要求,但是路径不对,经过我“血”的教训,eigen库的版本要求是在3.3以上,版本不符合要求的小伙伴赶紧升级吧。

        我个人是记得之前配置过eigen版本到3.4以上了的,不知道后面做别的项目是否有调整过,导致最后发现是版本不对,因为环境当中有多个eigen版本,调整起来相当麻烦。这里建议小伙伴们一定要做好平时项目的安装运行记录或者更动记录,人的记忆是有限的,别像我一样,过于懒惰,导致做了太多无用功,希望今后能够做好记录,从这个R3live项目开始,后面会做持续更新!

        下面是具体解决方法介绍:

        首先查看eigen的版本,一定要是/usr/include/eigen3/Eigen/src/Core/util/文件夹下的Macros.h文件,查看开始的几行获知版本信息,如下为版本3.4.0:

#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 4
#define EIGEN_MINOR_VERSION 0

        当你的EIGEN_MAJOR_VERSION为2时,也就是版本为3.2时,建议小伙伴下载安装eigen3.3版本及以上进行编译安装,安装完成后就是处理路径问题,因为默认安装是在/usr/local/include下,所以要进行如下处理:

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

        按照上述方式解决后重新编译就可以解决lib_sophus下的各类报错。

        胜利只属于坚持到最后的人!!!

        最后的最后就是跑数据集的程序了。

source devel/setup.bash
roslaunch r3live r3live_bag.launch
rosbag play YOUR_DOWNLOADED.bag

        这里的“YOUR_DOWNLOADED.bag”采用官方提供的数据集名称。可以从网址下载,也可以通过网盘分享链接(网盘链接,提取码: wwxw)进行下载。

        以下是在degenerate_seq_00.bag下的简单运行截图,后续会持续更新此类文章,等我慢慢熟悉后会不断更新!!!初次做记录,写的还是比较草率的,望各位小伙伴们还涵。

香港大学R3live:手把手教你如何编译和运行_第1张图片

        

你可能感兴趣的:(c++,slam)