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

2023-05-16

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下的简单运行截图,后续会持续更新此类文章,等我慢慢熟悉后会不断更新!!!初次做记录,写的还是比较草率的,望各位小伙伴们还涵。

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

香港大学R3live:手把手教你如何编译和运行 的相关文章

  • 2.单片机开发模式【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 单片机上手思路 对于一款新单片机 xff0c 我们可以采取如下思路进行上手 xff1a 去芯片原厂官网 xff0c 下载资料 xff0c 主要是获取数据手册和参考手册
  • 3.时钟与GPIO【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 时钟系统 首先我们要知道时钟的主要作用是用来同步 xff0c 现代的计算机系统是必然有时钟的 并且 xff0c 对于高级的单片机系统 xff0c 还会存在着不同频率的时
  • 4.中断与串口【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 中断 我们先来看一下什么是中断 xff1a 其实这种就是前后台的程序设计模式 我们来看下CM3内核都有哪些中断 xff0c 如下表 xff1a 对于CM3内核的单片来说
  • APT Hash sum mismatch错误的常见解决方法总结

    APT Hash sum mismatch错误的常见解决方法总结 LINUX报这个错误的时候 xff0c 有很多的原因 xff0c 通常是出现在使用apt get update的时候 xff0c apt 的全称是Advanced Packa
  • 安装Nvidia驱动run文件

    本文系转载 xff0c 出处 xff1a https blog csdn net lhx 998 article details 76135936 下载指定NVIDIA驱动安装包 xff08 run格式 xff09 run格式文件安装有时比
  • 5.AT指令【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 ESP8266 本文要使用的wifi模块为ESP8266 xff0c 我们直接使用官方提供的固件即可 xff0c 无须单独开发 直接通过串口和wifi模块进行通信 xf
  • 6.编写初步程序【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 程序流程回顾 先来回顾下TCP连接的流程 xff1a 下面看下UDP连接的流程 xff1a 整个程序的框架如下 xff1a 2 代码实现 这里我们使用串口2来操作 xf
  • 7.进一步完善程序【七天物联网智能家居训练营】

    本文是百问网七天物联网智能家居训练营学习笔记 xff0c 官网链接 1 增加UDP发送函数 再来回顾下UDP发送的流程 xff1a 对于AT指令来说 xff0c 只是使用的具体指令不同而已 和TCP发送函数非常类似 xff0c 代码如下 x
  • ubuntu16 PL-SLAM编译 踩坑

    首先贴出pl slam readme的第一句话 xff1a 对pl slam的精度不要有太高要求 Notice that this repository is only an open source version of PL SLAM r
  • ROS kinetic 运行s_msckf和 vins_fusion

    s msckf xff1a 采用多状态约束的双目vio系统 注意 imuCallback xff1a 接收IMU数据 xff0c 将IMU数据存到imu msg buffer中 xff0c 这里只会利用开头200帧IMU数据进行静止初始化
  • 服务器查看配额限制: OSError: [Errno 122] Disk quota exceeded

    OSError Errno 122 Disk quota exceeded 是因为磁盘配额不够了 xff0c 即磁盘已满或超出了用户所能使用的配额上限 可以通过如下命令查看配额限制和已经使用的配额 xff1a quota uvs usern
  • colmap 已知pose 重建 kitti数据尝试

    Frequently Asked Questions COLMAP 3 7 documentation COLMAP已知相机内外参数重建稀疏 稠密模型 thronsbird 博客园 Colmap根据相机内外参数重建稀疏模型 m0 47677
  • Umap与 t-sne可视化CNN特征

    考虑到umap 比 t sne快 xff0c 而且全局结构更好 demo网站 Understanding UMAP doc xff1a https github com lmcinnes umap How to Use UMAP umap
  • nn.AdaptiveAvgPool2d() 与 nn.AvgPool2d() 模块的区别

    nn AdaptiveAvgPool2d 与 nn AvgPool2d 模块的区别 jinfeng2411的博客 CSDN博客 nn adaptiveavgpool
  • dataloader卡住

    pin memory 知乎 dataloader卡住 xff01 xff01 xff01 只会git clone的程序员的博客 CSDN博客 dataloader 卡死 PyTorch 训练时中遇到的卡住停住等问题 yyywxk的博客 CS
  • OpenCV单目视觉定位(测量)系统(新增 含代码)

    OpenCV单目视觉定位 xff08 测量 xff09 系统 The System of Vision Location with Signal Camera Abstract This passage mainly describes h
  • 异常检测——深度学习异常检测经典算法最终篇

    本文转载自 xff1a https blog csdn net smileyan9 article details 106587227 异常检测 从经典算法到深度学习 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3
  • Hbase2.1.0启动失败解决方案积累

    当前CentOS xff0c JDK和Hadoop版本 xff1a span class token punctuation span root 64 master span class token operator span span c
  • 7-2 求二叉树的叶子结点个数 (20分)

    以二叉链表作为二叉树的存储结构 xff0c 求二叉树的叶子结点个数 输入格式 输入二叉树的先序序列 提示 xff1a 一棵二叉树的先序序列是一个字符串 xff0c 若字符是 表示该二叉树是空树 xff0c 否则该字符是相应结点的数据元素 输
  • 7-5 IP地址转换 (20分)

    一个IP地址是用四个字节 xff08 每个字节8个位 xff09 的二进制码组 96 成 请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出 输入格式 xff1a 输入在一行中给出32位二进制字符串 输出格式 xff1a 在

随机推荐