全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

目录

一、前言

二、依赖的环境

三、 安装Livox-SDK2,fast_lio2 和 livox_ros_driver2 

(1) 安装Livox-SDK2

(2) 安装 fast_lio2 和 livox_ros_driver2 

四、mid-360 设备硬件设置

五、运行设备

六、topic信息查看


一、前言

  • Livox mid-360需要使用Livox-SDK2,而非Livox-SDK,以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部分代码。
  •  地址为:Faster—LIO;高博的介绍为:Faster-LIO:快速激光IMU里程计。论文地址为:Faster-LIO:快速激光IMU里程计PDF。
  • 大部分Lidar SLAM都是基于loam进行改造的,基本上是通过线特征edge和面特征(面点)分割进行配准得到里程计的,而fast-lio2是通过一个迭代扩展卡尔曼滤波器去优化帧内位姿,然后通过输入点云与地图进行配准得到里程计,精度和鲁棒性都不错。

二、依赖的环境

PCL >= 1.8, Follow PCL Installation.

Eigen >= 3.3.4, Follow Eigen Installation.

  • ROS (melodic or noetic)
  • glog: sudo apt-get install libgoogle-glog-dev
  • Eigen: sudo apt-get install libeigen3-dev
  • pcl: sudo apt-get install libpcl-dev
  • yaml-cpp: sudo apt-get install libyaml-cpp-dev

三、 安装Livox-SDK2,fast_lio2 和 livox_ros_driver2 

新建一个文件夹: Livox-SDK2_ROS_driver/src

(1) 安装Livox-SDK2

  • cd Livox-SDK2_ROS_driver/src
  • git clone https://github.com/Livox-SDK/Livox-SDK2.git
  • cd ./Livox-SDK2/
  • mkdir build && cd build
  • cmake .. && make -j
  • sudo make install

编译完成后,效果图如下:  

(2) 安装 fast_lio2livox_ros_driver2 

步骤一: 下载 FAST_LIO代码

  • cd Livox-SDK2_ROS_driver/src         // 也是安装这个目录下
  • git clone https://github.com/hku-mars/FAST_LIO.git  
  • cd FAST_LIO
  • git submodule update --init
  • cd ../..

步骤二: 下载 livox_ros_driver2

  • cd Livox-SDK2_ROS_driver/src         // 也是安装这个目录下
  • git clone https://github.com/Livox-SDK/livox_ros_driver2.git

步骤三: 修改FAST_LIO代码

3.1. 修改FAST_LIO的CMakelists.txt
修改前:

find_package(catkin REQUIRED COMPONENTSgeometry_msgsnav_msgssensor_msgsroscpprospystd_msgspcl_rostflivox_ros_driver		# <-修改这里message_generationeigen_conversions
)

修改后:

find_package(catkin REQUIRED COMPONENTSgeometry_msgsnav_msgssensor_msgsroscpprospystd_msgspcl_rostflivox_ros_driver2		# <-修改这里message_generationeigen_conversions
)

3.2. 修改FAST_LIO的package.xml
修改前:

<build_depend>livox_ros_driver</build_depend>
<run_depend>livox_ros_driver</run_depend>

修改后:

<build_depend>livox_ros_driver2</build_depend>
<run_depend>livox_ros_driver2</run_depend>

3.3. 修改FAST_LIO的头文件引用
分别打开FAST_LIO/src/preprocess.hFAST_LIO/src/laserMapping.cpp
修改前:

#include <livox_ros_driver/CustomMsg.h>

修改后:

#include <livox_ros_driver2/CustomMsg.h>

3.4. 修改FAST_LIO的命名空间
分别打开FAST_LIO/src/preprocess.hFAST_LIO/src/preprocess.cppFAST_LIO/src/laserMapping.cpp中的命名空间,有多处需要修改
修改前: livox_ros_driver

修改后: livox_ros_driver2

注意拉:代码中, livox_ros_driver::全部改成livox_ros_driver2::

步骤四:编译工程

注意啦:在工程目录的fast_lio/src/livox_ros_driver2使用下面指令编译,不要直接使用catkin_make

  • cd livox_ros_driver2
  • source /opt/ros/melodic/setup.sh   //ubuntu18.04 用 melodic,其他选择相应的版本
  • ./build.sh ROS1

编译后的结果如下:

  

 

四、mid-360 设备硬件设置

(1)修改电脑IP地址

  • 建议电脑ip修改为192.168.1.5,否则需要修改下面的配置文件中对应的电脑ip,DNS地址写不写无所谓。
  • 雷达的IP是192.168.1.1** 最后两位为雷达S/N码最后两位数字 mid360 iP应该192.168.1.125
  • 再把Ubuntu的有线IP改为静态IP,我这里改为192.168.1.25,在一个局域网内就行,可以Ping通mid360的IP就行。

ping通了!!!

(2)修改Livox mid360 IP

  • 打开文件fast_lio/src/livox_ros_driver2/config/MID360_config.json。Livox mid360的IP是出厂后已经固定下来的,看它上面的二维码下面的 SN 码 ,后两个数字前面再加一个1,便是其对应的ip。(例如 SN 码后两位数字为12,那它对应的ip就是192.168.1.125)。
  • 改这个文件里的IP,前面几个改为Ubuntu端静态IP,最后一个改为mid360的静态IP。

五、运行设备

前提:设备连接,前面三步骤没有出现问题

打开两个终端,分别运行

  • cd Livox-SDK2_ROS_driver
  • source devel/setup.bash

  • roslaunch livox_ros_driver2 msg_MID360.launch

结果如下:

 
另外打开一个终端

  • cd Livox-SDK2_ROS_driver
  • source devel/setup.bash
  • roslaunch fast_lio mapping_mid360.launch

六、topic信息查看

  • rostopic list                         // 看一下发布的topic
  • rostopic echo "topic"    // 看一下发布的topic具体信息
  • rostopic hz "topic"         // 看一下发布的topic的频率

 

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

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

相关文章

我们常用Linux命令总结

Linux作为一种自由和开放源代码的操作系统&#xff0c;广泛应用于各种计算机系统中&#xff0c;尤其是服务器环境。在Linux系统中&#xff0c;命令行是管理和操作系统的主要方式之一&#xff0c;熟练掌握常用的Linux命令对于系统管理员、开发人员和其他使用者来说都是至关重要的…

算法6.4-6.6DFS

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.03.27 Last edited: 2024.03.27 目录 算法6.4-6.6DFS 第1关&#xff1a;算法6.5采用邻接矩阵表示图的深搜 任务描述 相关知识 编程要求…

阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中

文章目录 阿里CICD流水线Docker部署&#xff0c;将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务&#xff0c;进行Docker部署&#xff0c;创建一个阿里的试用主机1、选择主机部署&#xff0c;并添加服务主机2、创建免费体…

OpenHarmony之媒体组件模块简介

源码 本文基于OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;3.2 Release源码foundation目录下的player_framework&#xff0c;在OpenHarmony 2.0 Release版本当中&#xff0c;这个模块的名字叫媒体组件模块&#xff0c;为了方便理解我们在本文中仍旧延…

Python Flask-Mail实现邮件发送

一、邮件发送的扩展 关于如何找到flask发送邮件的插件&#xff1f;&#xff0c;上一篇已经分享了如何找到第三方插件&#xff0c;也找到了插件flask-mail的使用文档&#xff0c;那我们就来实战吧 二、根据文档&#xff0c;总结发送邮件的流程 从文档中可以总结出发送邮件的步…

Java Web-Tomcat

Web服务器 Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。 Tomcat&#xff0c;是一个 HTTP 服务器。我们只需要在服务器中安装一个Web服务器如Tomcat&#xff0c;然后就可以将…

2024年3月GESP等级认证C++编程五级真题

2024年3月GESP认证C编程五级真题试卷 题目总数&#xff1a;27 总分数&#xff1a;100 选择题 第 1 题 单选题 唯⼀分解定理描述的内容是 ( ) ? A.任意整数都可以分解为素数的乘积 B.每个合数都可以唯⼀分解为⼀系列素数的乘积 C.两个不同的整数可以分解为相同…

3BUS213621-001通讯模块3BUS213621001

3BUS213621-001通讯模块3BUS213621001 3BUS213621-001通讯模块3BUS213621001 3BUS213621-001通讯模块3BUS213621001 产品编号&#xff1a;3BUS213621-001 ABB 型号名称&#xff1a;HKQCS PARTS ON LINE 目录描述&#xff1a;SBC 组件 ABB 型号名称&#xff1a;HKQCS PARTS …

28位驻华大使、公使参访苏州金龙 点赞刚刚全球发布的新V系大巴

3月26日下午&#xff0c;由外交部组织的“驻华使节团参访江苏”活动走进苏州金龙。来自28个国家和国际组织的驻华大使、公使参观了苏州金龙展厅&#xff0c;并试乘体验了苏州金龙全新V系大巴。外交部中国政府欧洲事务特别代表吴红波&#xff0c;外交部礼宾司、翻译司、非洲司、…

RXMA1 RK211 075 AC220V中间继电器 柜内安装板前接线 JOSEF约瑟

系列型号 RXMA1 RK 211 063中间继电器&#xff1b;RXMA1 RK 211 064中间继电器; RXMA1 RK 211 066中间继电器&#xff1b;RXMA1 RK 211 072中间继电器; RXMA1 RK 211 073中间继电器&#xff1b;RXMA1 RK 211 074中间继电器&#xff1b; RXMA1 RK 211 025中间继电器&#xff1b;…

智慧公厕的技术融合策略

智慧公厕是迎合现代城市发展需要的一项重要基础设施&#xff0c;其设计的技术融合策略在实现公共厕所泛在感知、互通互联、协同构筑智慧城市等方面起到了关键作用。本文将以智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案例现场实景实图实例&#xff0c;从物…

当数据不是概率分布,而是两个样本集合,并且想计算它们之间的Earth Mover‘s Distance (EMD),简单写了一个程序,后续还可以对权值进行改进

[TOC](Earth Mover’s Distance (EMD)) 1. 程序代码 import numpy as np import ot# 生成两个样本集合 sample_set1 np.random.rand(100, 2) # 假设第一个样本集合是二维空间中的100个点 sample_set2 np.random.rand(80, 2) # 假设第二个样本集合是二维空间中的80个点# …