Ubuntu 20.04使用Livox Mid-360

参考文章:

Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO-CSDN博客

一:Livox mid 360驱动安装与测试

前言:

Livox mid360需要使用Livox-SDK2,而非Livox-SDK,以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部分代码。

1. 安装Livox-SDK2

参照官方教程:GitHub - Livox-SDK/Livox-SDK2: Drivers for receiving LiDAR data and controlling lidar, support Lidar HAP and Mid-360.

2.在ROS空间下编译安装FAST_LIO源码

2.1. 创建ROS1工程

mkdir livox_ws/src 

2.2 在src文件夹中下载livox_ros_driver2源码

git clone https://github.com/Livox-SDK/livox_ros_driver2.git

3.编译工程

在工程目录的livox_ws/src/livox_ros_driver2使用下面指令编译,不要直接使用catkin_make.

cd src/livox_ros_driver2
./build.sh ROS1

4. 修改Livox mid360的配置

4.1. 修改电脑IP地址
  建议电脑ip修改为192.168.1.5,否则需要修改下面的配置文件中对应的电脑ip,DNS地址写不写无所谓。(这里是网络有线那里的ip地址)

4.2. 修改Livox mid360 IP
获取Livox mid360 IP的方式有两种;
4.2.1 通过出厂编号获取  
打开文件livox_ws/src/livox_ros_driver2/config/MID360_config.json。Livox mid360的IP是出厂后已经固定下来的,看它上面的二维码下面的 SN 码 ,后两个数字前面再加一个1,便是其对应的ip。(例如 SN 码后两位数字为26,那它对应的ip就是192.168.1.126)。
4.2.2 通过wireshark工具读取雷达端口ip

查看接受雷达数据的网口:

ifconfig

使用以下命令安装wireshark

sudo apt-get install wireshark

运行wireshark工具

sudo wireshark

修改配置文件,打开打开文件livox_ws/src/livox_ros_driver2/config/MID360_config.json。

{
  "lidar_summary_info" : {
    "lidar_type": 8
  },
  "MID360": {
    "lidar_net_info" : {
      "cmd_data_port": 56100,
      "push_msg_port": 56200,
      "point_data_port": 56300,
      "imu_data_port": 56400,
      "log_data_port": 56500
    },
    "host_net_info" : {
      "cmd_data_ip" : "192.168.1.5",  	# <-这里和修改后的电脑ip一致
      "cmd_data_port": 56101,
      "push_msg_ip": "192.168.1.5",  	# <-这里和修改后的电脑ip一致
      "push_msg_port": 56201,
      "point_data_ip": "192.168.1.5",  	# <-这里和修改后的电脑ip一致
      "point_data_port": 56301,
      "imu_data_ip" : "192.168.1.5",  	# <-这里和修改后的电脑ip一致
      "imu_data_port": 56401,
      "log_data_ip" : "",
      "log_data_port": 56501
    }
  },
  "lidar_configs" : [
    {
      "ip" : "192.168.1.126",		  	# <-这里是Livox mid360的ip
      "pcl_data_type" : 1,
      "pattern_mode" : 0,
      "extrinsic_parameter" : {
        "roll": 0.0,
        "pitch": 0.0,
        "yaw": 0.0,
        "x": 0,
        "y": 0,
        "z": 0
      }
    }
  ]
}

5.运行测试

打开两个终端,分别运行:

source devel/setup.bash
roslaunch livox_ros_driver2 rviz_MID360.launch

也可以在终端对于话题数据进行打印

rostoptic list     
rostoptic echo /livox/lidar

 运行成功截图如下:

二:使用Livox mid360 录制数据包

前言:录制rosbag包之前,需要先使各种传感器处于工作状态,例如Livox mid360需要启动先前安装好的驱动。此外还要确保每个传感器的时间戳同步。

source devel/setup.bash
roslaunch livox_ros_driver2 rviz_MID360.launch

1. 话题录制

1.1 录制所有发布出来的话题,此时默认将话题保存在一个以当时时间戳命名的文件夹中:

rosbag record -a

1.2 录制指定话题

rosbag record /topic1 /topic12 -o out.bag

2. 话题回放

2.1 基本回放

rosbag play <your bagfile name>

2.2 等待一定时间之后发布bag文件中的内容

rosbag play <your bagfile name> -d <delay time>

2.3按一定频率回放,-r选项用来设定消息发布速率,如下面命令则表示以3倍原始速率发布话题

rosbag play -r 3 <your bagfile name>

2.4 回放指定话题

rosbag play <your bagfile name> --topics <topics>

2.5 创建一个除了/tf消息的新包

rosbag filter file.bag file-no-tf.bag "topic != '/tf'"

2.6 重映射topic信息(将out.bag中point_cloud转为velodyne_points)

rosbag play out.bag  /point_cloud:=/velodyne_points

2.7 播放bag并重新生成一个新包

rosbag record -O mahao_1.bag /velodyne_points

2.8 查看bag中对应topic的frame_id

rostopic echo /topic | grep frame_id

注:当播放rosbag包,想要在rviz中查看时,需要将rviz中的Fixed Frame换成bag中对应topic的frame_id

3.数据包截取

在使用rosbag录包的时候,我们有时候只需包中的某一段时间,因此就有必要按时间截取rosbag包。

3.1 在rosbag包目录下启动终端

3.2 按时间截取

rosbag filter 原始包名.bag 截取后的包名.bag  "t.to_sec() > 开始时间 and t.to_sec() < 结束时间"

Exemple:

rosbag filter lidar_zed4.bag lidar_zed4_filter.bag "t.to_sec() > 1641196460.608130 and t.to_sec() < 1641196485.7"

注意:时间是Bag Time,可以在回放rosbag包的时候看到。
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在windows系统中,如何用命令行查看服务的状态

在Windows系统中&#xff0c;您可以使用命令行来查看服务的状态。请按照以下步骤操作&#xff1a; 打开命令提示符窗口。您可以通过按下Win键并输入"cmd"来找到并打开命令提示符。 在命令提示符窗口中&#xff0c;输入以下命令查看所有服务的状态&#xff1a; sc …

基于FPGA的图像Robert变换实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 fpga的结果导入到matlab显示&#xff1a; 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 ..................................…

1 手写第一个Win32窗口程序

1 基础概念 什么是窗口&#xff1f; 答&#xff1a;窗口就是屏幕上的一片区域&#xff0c;接受用户的输入&#xff0c;显示程序的输出。可以包含标题栏、菜单栏、工具栏以及控件等。什么是句柄&#xff1f; 答&#xff1a; 作为一种管理和操作系统资源的机制&#xff0c;提供了…

2048小游戏

以下运算核心 local lbrt{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,13,9,5,1,14,10,6,2,15,11,7,3,16,12,8,4,4,3,2,1,8,7,6,5,12,11,10,9,16,15,14,13,1,5,9,13,2,6,10,14,3,7,11,15,4,8,12,16,} local num{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} --当前方向、是否正在进行、是否…

基于鸢尾花数据集的逻辑回归分类实践

基于鸢尾花数据集的逻辑回归分类实践 重要知识点 逻辑回归 原理简介&#xff1a; Logistic回归虽然名字里带“回归”&#xff0c;但是它实际上是一种分类方法&#xff0c;主要用于两分类问题&#xff08;即输出只有两种&#xff0c;分别代表两个类别&#xff09;&#xff0c…

Gaussian-Splatting 训练并导入Unity中

这个周末玩点啥~&#x1f41e; &#x1f354;资源下载&#x1f365;环境安装&#x1f4a1;安装C编译工具&#x1f4a1;安装Python&#x1f4a1;安装CUDA&#x1f4a1;添加ffmpeg到环境变量Path&#x1f4a1;pytorch安装&#x1f4a1;tqdm 安装&#x1f4a1;diff-gaussian-raste…

Kubernetes(K8S)快速入门

概述 在本门课程中&#xff0c;我们将会学习K8S一些非常重要和核心概念&#xff0c;已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署&#xff0c;Pod容器&#xff0c;调度器&#xff0c;Service服务&#xff0c;Node集群节点&#xff0c;Helm包管理器等等。 在…

学习C语言可以从以下几个方面入手

学习C语言可以从以下几个方面入手&#xff1a; 了解基础知识&#xff1a;首先&#xff0c;你需要了解C语言的基本语法和规则&#xff0c;包括变量、数据类型、运算符、控制结构等。可以通过阅读相关的教材或在线教程来学习这些基础知识。动手实践&#xff1a;理论知识的学习是…

算法通关第二十关-青铜挑战认识图结构

大家好我是苏麟 , 今天来聊聊图结构 . 我们平时在工作、学习中会大量使用图结构&#xff0c;不过呢在使用代码进行具体实现的时候极少使用图&#xff0c;主要是图里容易产生环&#xff0c;难以处理。 在算法里&#xff0c;考察图也不是很多&#xff0c;主要是图的表示非常复杂&…

Linux的进程概念、进程标识符、进程状态

一、上期回顾 在我们上周简单了解完冯诺伊曼体系结构和操作系统&#xff0c;知道了外设和CPU之间的数据交流必须要通过内存&#xff0c;操作系统是一个对软硬件资源做管理的软件&#xff0c;本质是对数据做管理&#xff0c;在语言层面就是对数据结构做管理&#xff0c;进行增删…

基于STM32的DS1302实时时钟模块应用

DS1302是一款低功耗的实时时钟芯片&#xff0c;被广泛应用于各种电子产品中。它具有准确计时、多种时间格式表示、定时报警等功能&#xff0c;适用于记录时间、日期和闹钟。在本文中&#xff0c;我们将介绍如何在基于STM32的开发环境中使用DS1302实时时钟模块&#xff0c;并给出…

傻瓜式教学Docker 使用docker compose部署 php nginx mysql

首先你可以准备这个三个服务,也可以在docker compose 文件中 直接拉去指定镜像,这里演示的是镜像服务已经在本地安装好了,提供如下: PHP # 设置基础镜像 FROM php:8.2-fpm# install dependencies RUN apt-get update && apt-get install -y \vim \libzip-dev \libpng…

基于稀疏表示的小波变换多光谱图像融合算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 小波变换融合 PCA融合 基于稀疏表示的小波变换多光谱图像融合算法 性能指标对比 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........…

java八股 spring + mybatis

Spring常用注解&#xff08;绝对经典&#xff09;_spring注解-CSDN博客 框架篇-02-Spring-单例bean是线程安全的吗_哔哩哔哩_bilibili 1.spring.bean 单例 线程不安全 2.AOP 项目里可以说记录用户登录日志&#xff0c;利用request去获取姓名、ip、、请求方式、url&#xff0…

ros2中gazebo安装的注意事项

Install From source&#xff08;推荐安装Fortress版本&#xff0c;好像很方便&#xff09; ROS Be sure youve installed ROS Humble (at least ROS-Base). More ROS dependencies will be installed below. Gazebo Install either Edifice, Fortress, or Garden.(没有har…

MFC 运行时类信息机制

目录 运行时类信息机制概述 测试 宏代换分析 结构体 CRuntimeclass 函数 GetRuntimeClass() 总结 执行过程分析 运行时类信息机制概述 在程序运行过程中可以获知对象的类的相关信息&#xff08;例如∶对象是否属于某个类) 如何使用&#xff1f; 类必须派生自CObject类…

MFC 动态创建机制

目录 动态创建机制概述 代码测试分析 执行过程 总结 动态创建机制概述 MFC 动态创建机制是 MFC 中的一项重要功能&#xff0c;它允许开发者在运行时动态创建和管理窗口控件。通过动态创建机制&#xff0c;开发者可以根据需要在程序运行过程中创建、显示和销毁窗口&#xf…

【K8S in Action】服务:让客户端发现pod 并与之通信(2)

一 通过Ingress暴露服务 Ingress (名词&#xff09; 一一进入或进入的行为&#xff1b;进入的权利&#xff1b;进入的手段或地点&#xff1b;入口。一个重要的原因是每个 LoadBalancer 服务都需要自己的负载均衡器&#xff0c; 以及 独有的公有 IP 地址&#xff0c; 而 Ingres…

基于STM32的DS1302实时时钟模块应用及原理介绍

在嵌入式系统中&#xff0c;实时时钟模块是一个常见的功能模块&#xff0c;用于记录和管理系统的时间信息。DS1302是一款低功耗、具有多种功能的实时时钟芯片&#xff0c;被广泛应用于各种电子产品中。本文将介绍基于STM32微控制器的DS1302实时时钟模块的应用及原理&#xff0c…

案例163:基于微信小程序的校园二手交易平台系统设计与开发

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…