使用Livox-Mid360激光雷达,复现FAST_LIO(保姆级教程)

前面我已经完成了mid360激光雷达的驱动安装,octomap的复现,昨天我去把这俩在正式环境中实测了一下,效果不好,走廊转角没建出来,我查了一下,应该是TF的原因,但这部分我还不太懂,看到有的教程里说可以用SLAM建图完成TF变换,加上我之前就想要先做建图,再用Octomap转为栅格地图,于是就有了这次尝试。

要完成我这篇里实现的东西,你需要先具备这些条件:

1.完成了mid3620的驱动安装,保证激光雷达有数据,包括了SDK安装和driver安装,参考以下链接:

Livox_Mid-360激光雷达使用教程_ubuntu 20.04 mid 360 csdn-CSDN博客

2.我使用的是ubuntu18.04,ROS1 noetic。供参考

不想看废话的可以跳过这几段:

假设我们现在都装好了雷达,并且雷达能够正常工作,那么要复现FAST_LIO的思路是什么呢?我觉得在重现一个项目前,应该要有大致的思路,不能说按照网上的教程一通走,极有可能会出错,而且不知道错在哪。(呜呜呜,我踩的坑,泪奔~)。

大致思路:激光雷达运行,FAST_LIO接收到数据开始建图。其实很简单。那么对应的就是,我们应该先编译激光雷达的包,再去编译建图的包,不要走回头路。一起放进src就得走回头路。

————————————————————————————

下面附上一个保姆级教程:

一、安装激光雷达驱动

上面已经给了链接了,不重复。

我的雷达驱动工作空间名称为:catkin_livox_ros_driver2

二、安装编译FAST_LIO

官方链接(建议看看):GitHub - hku-mars/FAST_LIO: A computationally efficient and robust LiDAR-inertial odometry (LIO) package

我用的教程:

GitHub - 66Lau/NEXTE_Sentry_Nav: The navigation system of "sentry" for Next-E team in RoboMaster2023Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO_ubuntu mid360 fastliono configured subnet or ip-ra-CSDN博客

——————————————————————————————

先说说别的问题,我先尝试了第一个链接里的教程,因为这个教程很符合我的要求,可以把整条路径规划的线都走通,但一直失败,编译时报错找不到雷达驱动的包,试了很多方法,单独编译驱动可行,把下载的源码放进去编译就报错。最后放弃了,还是从简单的来吧。不过后面我还是会再次尝试这个链接里的方法。

——————————————————————————

1.下载源码

我是那个永远git clone不下来的人,所以选择直接到官方下载.zip

下载之后注意修改文件夹名称为:FAST_LIO

2.创建一个工作空间

    cd ~/$A_ROS_DIR$/srcgit clone https://github.com/hku-mars/FAST_LIO.gitcd FAST_LIOgit submodule update --initcd ../..catkin_makesource devel/setup.bash

这里只是给一个创建工作空间的参考。更方便的是,直接把源码放到已经编译好的雷达驱动工作空间里,也就是:把FAST_LIO放到catkin_livox_ros_driver2的src里,如图所示:

2.修改FAST_LIO源码

为了使其与mid360适配,必须修改代码,因为mid360用的是driver2。

大家直接用vscode打开工作空间,搜索:livox_ros_driver

直接选择全部替换为:livox_ros_driver2

不要一个个去改了。容易出错。改完之后记得保存。

3.编译

可以看到,官方给了这样一句指令

git submodule update --init

 但我们目前没有使用,而且我用这句指令会报错,最开始我没理解啥意思,就没有管,直接编译了,然而,会报错!找不到include/ikd-Tree/ikd_Tree.cpp 这个玩意儿。

于是我就去下载的源码里看,真没有这玩意,又去官网看了下,原来他把这个放在了子仓库里。直接从子仓库里下载.zip复制里面的文件放在include/ikd-Tree里就行了:

GitHub - hku-mars/ikd-Tree at e2e3f4e9d3b95a9e66b1ba83dc98d4a05ed8a3c4

 ————————————————————

接下来,正式开始编译!!!!

首先,要进入工作空间编译,我用的是:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

如果你的环境没问题,直接用catkin_make也可以的。我的是因为曾经出了一些问题,不这样会报错。

激动人心!!终于成功了!!!纪念!!

4.运行

如果你前面都成功了,那就运行看结果吧!!

首先,确认你的雷达连线没有问题,ip已经配置成功,能够看到数据进来。

其次,没有其次了。。。哈哈哈

————————

开始运行:

启动雷达:

#进入工作空间source devel/setup.bash
roslaunch livox_ros_driver2 msg_MID360.launch

重开一个终端,启动FAST_LIO:

source devel/setup.bash
roslaunch fast_lio mapping_mid360.launch

没有问题的话,你就可以看到结果了:

5.结果保存

结束运行后,结果会自动保存到PCD文件夹,这个scans就是我今天跑的:

然后,如果你想查看这个.pcd,需要安装pcl的一个工具包:

sudo apt install pcl-tools

最后,进入PCD文件夹:

pcl_viewer scans.pcd

就能看到结果啦:

按不同的键,它会有不同的着色哟,哈哈哈,我觉得最好玩的就是看到结果之后。上面这个是按的5。

    1 is all random2 is X values3 is Y values4 is Z values5 is intensity

——————————————————————

好了,最后来记录一下吧,后续呢我还要进行将pcd传给octomap进行栅格地图构建。目前有两种思路,一种参考链接1的教程。一种用octomap的教程中的实时显示。大差不差感觉。

最后,有空再尝试一下链接1教程的那一套,能不能走得通。

做事情之前一定要先想想大致思路,为什么要这么做。不要无脑看教程。会走弯路。

希望大家都能成功!!

——————————————————————

更新,我马不停蹄的去试了一下用跑出来的pcd文件生成octomap的栅格地图

1.直接上链接吧

OctoMap-基于八叉树的地图 - 智学无人小车平台

这个实测可以成功。

(奇怪,之前跑的那个octomap居然跑不出来了),会报错:

用上面那个跑,结果是这样的,有点奇怪诶,感觉是不是分辨率的问题,也有可能是这个mid360的点云。。。:

怎么和人家的pcd跑出来的不一样,他这个效果这么好。。。呜呜呜呜

这个图是用官方的工具打开的,没染色,仔细看看还是能看出来中间是空的嘿嘿。

暂时性的成功吧。加油喽!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/370951.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于CentOS Stream 9平台搭建RabbitMQ3.13.4以及开机自启

1. erlang与RabbitMQ对应版本参考:https://www.rabbitmq.com/which-erlang.html 2. 安装erlang 官网:https://www.erlang.org/downloads GitHub: https://github.com/rabbitmq/erlang-rpm/releases 2.1 安装依赖: yum -y install gcc glib…

中英双语介绍美国苹果公司(Apple Inc.)

中文版 苹果公司简介 苹果公司(Apple Inc.)是一家美国跨国科技公司,总部位于加利福尼亚州库比蒂诺。作为全球最有影响力的科技公司之一,苹果以其创新的产品和设计引领了多个科技领域的变革。以下是对苹果公司发展历史、主要产品…

Go源码--channel源码解读

简介 channel顾名思义就是channel的意思,主要用来在协程之间传递数据,所以是并发安全的。其实现原理,其实就是一个共享内存再加上锁,底层阻塞机制使用的是GMP模型。可见 GMP模型就是那个道,道生一,一生二,二生三,三生…

[数据结构] 基于选择的排序 选择排序堆排序

标题:[数据结构] 基于选择的排序 选择排序&&堆排序 水墨不写bug (图片来源于网络) 目录 (一)选择排序 实现:(默认从小到大排序) 优化后实现方法: (二)堆排序…

UNIAPP_顶部导航栏右侧添加uni-icons图标,并绑定点击事件,自定义导航栏右侧图标

效果 1、导入插件 uni-icons插件:https://ext.dcloud.net.cn/plugin?nameuni-icons 复制 uniicons.ttf 文件到 static/fonts/ 下 仅需要那个uniicons.ttf文件,不引入插件、单独把那个文件下载到本地也是可以的 2、配置页面 "app-plus":…

1.Python学习笔记

一、环境配置 1.Python解释器 把程序员用编程语言编写的程序,翻译成计算机可以执行的机器语言 安装: 双击Python3.7.0-选择自定义安装【Customize installation】-勾选配置环境变量 如果没有勾选配置环境变量,输入python就会提示找不到命令…

论文略读:Large Language Models Relearn Removed Concepts

通过神经元修剪在模型编辑方面取得的进展为从大型语言模型中去除不良概念提供了希望。 然而,目前尚不清楚在编辑后模型是否具有重新学习修剪概念的能力——>论文通过在重新训练期间跟踪修剪神经元中的概念显著性和相似性来评估模型中的概念重新学习 研究结果表明…

vue3+electron项目搭建,遇到的坑

我主要是写后端,所以对前端的vue啊vue-cli只是知其然,不知其所以然 这样也导致了我在开发前端时候遇到了很多的坑 第一个坑, vue2升级vue3始终升级不成功 第二个坑, vue add electron-builder一直卡进度,进度条走完就是不出提示succes 第一个坑的解决办法: 按照网上说的升级v…

DAMA学习笔记(四)-数据建模与设计

1.引言 数据建模是发现、分析和确定数据需求的过程,用一种称为数据模型的精确形式表示和传递这些数据需求。建模过程中要求组织发现并记录数据组合的方式。数据常见的模式: 关系模式、多维模式、面向对象模式、 事实模式、时间序列模式和NoSQL模式。按照描述详细程度…

如何用简单的html,css,js写出一个带有背景层的删除弹出框

虽然每次项目都是主要写后端,但是有时候前端的样式太丑了,也有点看不下去。弹出框是项目中用的比较多的,比如删除,修改或者添加什么的,都需要一个弹出框。 所以这里简单记录一下,应该如何实现。实现效果如…

Android TextView的属性与用法

文本控件包括TextView、EditText、AutoCompleteTextView、CheckedTextView、MultiAutoCompleteTextView、TextInputLayout等,其中TextView、EditText是最基本最重要的文本控件,是必须要掌握的文本控件。 1.TextView TextView控件用于显示文本信息&…

深度学习原理与Pytorch实战

深度学习原理与Pytorch实战 第2版 强化学习人工智能神经网络书籍 python动手学深度学习框架书 TransformerBERT图神经网络: 技术讲解 编辑推荐 1.基于PyTorch新版本,涵盖深度学习基础知识和前沿技术,由浅入深,通俗易懂&#xf…

分布式整合

一、分布式架构介绍 什么是分布式系统 分布式系统指一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 通俗的理解,分布式系统就是一个业务拆分成多个子业务,分布在不同的服务器节点&#xff0…

LabVIEW与OpenCV图像处理对比

LabVIEW和OpenCV在图像处理方面各有特点。LabVIEW擅长图形化编程、实时处理和硬件集成,而OpenCV则提供丰富的算法和多语言支持。通过DLL、Python节点等方式,OpenCV的功能可在LabVIEW中实现。本文将结合具体案例详细分析两者的特点及实现方法。 LabVIEW与…

vue3+antd 实现文件夹目录右键菜单功能

原本的目录结构&#xff1a; 右键菜单&#xff1a; 点击菜单以后会触发回调&#xff1a; 完整的前端代码&#xff1a; <template><a-directory-treev-model:expandedKeys"expandedKeys"v-model:selectedKeys"selectedKeys"multipleshow-li…

解决后端限制导致前端配置跨域仍请求失败报504的问题

文章目录 问题一、通过配置跨域方式二、直接真实接口请求三、解决方式四、后端这样做的原因 总结 问题 前端项目设置跨域proxy处理&#xff0c;接口请求不会报跨域&#xff0c;但是接口请求报了504&#xff0c;这种情况如何处理呢&#xff0c;后端又为何要这么做&#xff0c;下…

【初阶数据结构】深入解析循环队列:探索底层逻辑

&#x1f525;引言 本篇将介绍如何实现循环队列并实现过程需要注意的事项&#xff0c;虽然篇幅较小&#xff0c;但是其中逻辑还是值得引人思考的&#xff0c;循环队列可以采用数组或链表实现&#xff0c;这篇将采用数组实现循环队列 &#x1f308;个人主页&#xff1a;是店小二…

【数据结构】05.双向链表

一、双向链表的结构 注意&#xff1a;这里的“带头”跟前面我们说的“头节点”是两个概念&#xff0c;带头链表里的头节点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位节点不存储任何有效元素&#xff0c;只是站在这里“放哨的”。 “哨兵位”存在的意义&#xff1a;遍历循…

cs231n作业1——KNN

参考文章&#xff1a;assignment1——KNN KNN 测试时分别计算测试样本和训练集中的每个样本的距离&#xff0c;然后选取距离最近的k个样本的标签信息来进行分类。 方法1&#xff1a;Two Loops for i in range(num_test):for j in range(num_train):dist X[i, :] - self.X…

Python爬虫获取视频

验证电脑是否安装python 1.winr输入cmd 2.在黑窗口输入 python.exe 3.不是命令不存在就说明python环境安装完成 抓取快手视频 1.在phcharm应用中新建一个项目 3.新建一个python文件 4.选择python文件,随便起一个名字后按回车 5.安装requests pip install requests 6.寻找需要的…