激光slam学习笔记5---ubuntu2004部署运行fastlivo踩坑记录

news/2024/11/17 7:07:50/

背景:看看fastlivo论文,觉得挺有意思的,就本地部署跑跑看看效果。个人环境,ubuntu20.04。

一、概要

由于依赖比较多,个人构建工作空间,使用catkin_make编译

src├── FAST-LIVO├── livox_ros_driver├── livox_ros_driver-master.zip├── Livox-SDK-master├── Livox-SDK-master.zip├── rpg_vikit-master└── rpg_vikit-master.zip

主要是在livox_ros_driver、rpg_vikit-master依赖编译容易出问题,这里重点说一下。其他跟着github上面操作就行。

二、编译livox_ros_driver

朋友们或许疑惑,为啥后面包带-master啥的?因为科学上网git出问题,只能网页下载…(- _ -)

1、编译Livox-SDK-master

cd Livox-SDK-master
mkdir build && cd build
make j24

2、修改livox_ros_driver 的Cmakelists.txt

位置1

## make sure the livox_sdk_static library is installed
find_library(LIVOX_SDK_LIBRARY liblivox_sdk_static.a /home/ylh/code_ws/fastlivo/src/Livox-SDK-master/build/sdk_core)
include_directories(/home/ylh/code_ws/fastlivo/src/Livox-SDK-master/sdk_core/include)

注意,/home/ylh/code_ws/fastlivo/src/Livox-SDK-master/build/sdk_core、/home/ylh/code_ws/fastlivo/src/Livox-SDK-master/sdk_core/include是我本人livox_sdk编译生成的路径,根据自己编译Livox-SDK-master环节修改

位置2

target_link_libraries(${PROJECT_NAME}_node# livox_sdk_static.a/home/ylh/code_ws/fastlivo/src/Livox-SDK-master/build/sdk_core/liblivox_sdk_static.a

错误来源,提示找不到静态库,直接根据自己实际情况写固定路径

此时,可以编译该驱动:

catkin_make -DCATKIN_WHITELIST_PACKAGES="livox_ros_driver"

三、编译rpg_vikit-master

这里面有三个包,把后缀common和ros编译就没啥问题了。问题出在年代久远,opencv版本不兼容。

1、编译vikit_common

主要是opencv版本问题,修改一些字段就行,将之前的CV_xxx 修改成 cv::xxx即可。

修改1
src/homography.cpp

  // cv::Mat cvH = cv::findHomography(src_pts, dst_pts, CV_RANSAC, 2./error_multiplier2);cv::Mat cvH = cv::findHomography(src_pts, dst_pts, cv::RANSAC, 2./error_multiplier2);

修改2
src/pinhole_camera.cpp

cv::remap(raw, rectified, undist_map1_, undist_map2_, cv::INTER_LINEAR); //  CV_INTER_LINEAR

修改3
src/img_align.cpp

cv::namedWindow("residuals", cv::WINDOW_AUTOSIZE); // CV_WINDOW_AUTOSIZE

好几个地方修改的,这里记录下三个,各位看情况改成cv::xxx即可,注意这里是小写的cv

编译:

catkin_make -DCATKIN_WHITELIST_PACKAGES="vikit_common"

2、编译rpg_vikit-master剩余的包

编译没报错的话,直接运行:

catkin_make -DCATKIN_WHITELIST_PACKAGES="vikit_ros"
catkin_make -DCATKIN_WHITELIST_PACKAGES="vikit_py"

注意要运行通过了vikit_common再编译这两个,因为前者是他们的依赖。

四、编译Sophus

把Sophus down下来,一般编译没啥问题(至少我没有,哈哈哈)。
不过,本人有个习惯,喜欢安装在指定位置

mkdir build install
cd build
cmake .. -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/sophus路径/install
make -j36
make install

注意,自定义安装时,在引用的cmakelists.txt要指明路径,比如:

find_package(Sophus REQUIRED PATHS /home/ylh/software/Sophus/install NO_DEFAULT_PATH)

五、编译fastlivo

上述依赖没报错的话,可以编译fastlivo了

catkin_make -DCATKIN_WHITELIST_PACKAGES="fast_livo"

六、运行效果

在这里插入图片描述

不得不感慨一下他们实验室开源的ikd_tree和ieskf的厉害之处,造福多少人民!好好学习,致敬hku-mars.

###################
好记性不如烂笔头
积跬步期千里
觉得不错的话,记得点赞收藏


http://www.ppmy.cn/news/1547667.html

相关文章

RabbitMQ教程:工作队列(Work Queues)(二)

RabbitMQ教程:工作队列(Work Queues)(二) 一、引言 在快节奏的软件开发世界中,我们经常面临需要异步处理任务的场景,比如在Web应用中处理耗时的图片处理或数据分析任务。这些任务如果直接在用…

大模型时代,呼叫中心的呼入机器人系统如何建设?

大模型时代,呼叫中心的呼入机器人系统如何建设? 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 呼叫中心呼入机器人系统的建设是一个涉及多个环节和领域的综合性工程。以下是一个详…

Flask和Python实现在线课堂学生疲劳检测系统设计与实现

基于FlaskOpenCVPython的在线课堂学生疲劳检测系统应用程序含GUI界面使用说明 🚀项目下载链接👉:毕设新项目基于FlaskOpenCVPython得在线课堂学生疲劳检测系统应用程序含GUI界面使用说明.zip 引言 随着在线教育的普及,学生的注…

图像深度与像素深度的辨析

图像深度与像素深度的辨析 图像深度 (Image Depth) 定义:每个像素在图像中存储颜色信息所需的总位数,综合了所有通道的位深度。特点: 与通道数有关(单通道、多通道)。表示的是每个像素整体的存储位数。 常见示例&#…

鸿蒙NEXT开发案例:光强仪

【引言】 本文将介绍如何使用鸿蒙NEXT框架开发一个简单的光强仪应用,该应用能够实时监测环境光强度,并给出相应的场景描述和活动建议。 【环境准备】 电脑系统:windows 10 开发工具:DevEco Studio NEXT Beta1 Build Version: …

hive中数据的粒度级别有哪些?

hive中的数据粒度级别大致分三类:table、partition、bucket 一、表级粒度(Table) 定义:表级粒度是将整个表作为一个数据单元来考虑。这包括表的整体属性,如存储位置、表的格式(如文本格式、ORC 格式、Parqu…

鲸鱼机器人和乐高机器人的比较

鲸鱼机器人和乐高机器人各有其独特的优势和特点,家长在选择时可以根据孩子的年龄、兴趣、经济能力等因素进行综合考虑,选择最适合孩子的教育机器人产品。 优势 鲸鱼机器人 1)价格亲民:鲸鱼机器人的产品价格相对乐高更为亲民&…

常见区块链公链的TPS是多少

公链的TPS一直是影响该链能否成为世界级平台的重要参考指标之一,Web2世界里的高并发、高负载已经有很好的解决方案,但至今区块链领域的TPS一直在缓慢前行,这也是阻碍区块链应用快速铺开的重要原因之一。 下面罗列一些常见公链的TPS&#xf…