R3LIVE项目实战(5) — R3LIVE数据采集与时间同步

news2024/11/16 22:57:13

目录

1 R3LIVE数据采集运行步骤

1.1 录制数据集

1.2 修改config下对应的配置文件

1.3 启动相机和雷达节点

1.4 运行R3LIVE与播包

2 R3LIVE在线运行


1 R3LIVE数据采集运行步骤

1.1 录制数据集

采集数据需要注意的一点是,不同传感器之间的时间同步问题,因为LIVOX默认是从开始启动激光雷达开始算时间的并不是ROS系统时间,如果直接记录数据,是跑不起来的。下面给出对应的解决方案。可以通过如下的命令录制数据:

rosbag record -O test.bag 节点1 节点2 ...

录制好数据集后,通过如下命令查看bag的详细信息,包括时间戳是否对齐

rqt_bag test.bag

接着在节点名右键鼠标 -> View -> Raw查看时间戳信息,发现时间戳没有对齐,可以通过下面的方法解决。

方法1:直接用R3LIVE作者提供的LIVOX驱动
https://github.com/ziv-lin/livox_ros_driver_for_R2LIVE

作者之间将时间戳再源码中更改了,所以用这个驱动启动直接记录数据是可行的。再记录之前需要打开livox_lidar_config.json文件中的时间同步功能。并选择一个接口名称,我这里选择的是相机的接口。

方法2: PTP时间同步的方法

下面是PTP时间同步的方法,是相对容易的一种。

首先ifconfig确认一下网卡情况:

通过下面的指令来检查网卡是否支持软件/硬件时间戳功能(本机有线网卡“eth0”)。

ethtool -T eth0

以下情况说明是可以通过软件同步的方法来实现的。

出现下面的则不能通过PTP进行时间同步

然后安装PTP时间同步工具。

 sudo apt install ptpd

执行时间同步命令

sudo ptpd -M -i enp3s0 -C

输出:Now in state: PTP_MASTER, Best master说明同步成功。最后重新录制数据集,检查是否对齐。

1.2 修改config下对应的配置文件

具体修改标定的内参和外参、图像的尺寸。在R3LIVE中设置外参时,要对此处的得到的外参结果求逆,不然得不到最后的点云着色效果。具体操作是将R按对角线反转,T取负号。

1.3 启动相机和雷达节点

roslaunch zed_wrapper zed2i.launch #启动相机
roslaunch livox_ros_driver livox_lidar_msg.launch # 启动雷达
sudo ptpd -M -i enp3s0 -C #启动时间同步

1.4 运行R3LIVE与播包

修改并运行R3LIVE的r3live_bag.launch节点,修改对应的话题名

robag play录制的数据集,最后得到正确的结果,如果没有时间戳同步,则接受不到对应的图像,激光点云也没有颜色。

2 R3LIVE在线运行

在线运行时,与提前录制数据集方法相同,修改相应的雷达和相机的话题名称,启动相机和雷达的节点,同时要注意启动时间同步的功能。

总结:

  1. 因为LIVOX默认是从开始启动激光雷达开始算时间的并不是系统时间,而相机是基于系统时间,要做时间同步。
  2. 修改标定的内参和外参,之前标定的是相机到雷达的,R3live下面配置的雷达到相机的,所以要把得到外参旋转矩阵求逆,再填入,平移矩阵则取负。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言练习】C语言如何操作内存(重中之重!!!)

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

Android 之 GPS 初涉

本节引言: 说到GPS这个名词,相信大家都不陌生,GPS全球定位技术嘛,嗯,Android中定位的方式 一般有这四种:GPS定位,WIFI定准,基站定位,AGPS定位(基站GPS); 本…

Linux的内存理解

建议 Mysql机器 尽量不要硬swap,如果是ssd磁盘还好。Free命令 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存 输出简介: Mem 行(第二行)是内存的使用情况。Swap 行(第三行)是交换空间的使用情况。total 列显示系统总的可用物理内存和交换…

【高阶产品策略】策略产品数据与行为分析方法

文章目录 1、策略产品数据与用户行为数据分析概述2、埋点、策略数据收集核心技能3、用户行为数据分析应用4、数据平台实施 1、策略产品数据与用户行为数据分析概述 2、埋点、策略数据收集核心技能 3、用户行为数据分析应用 4、数据平台实施

亲测有效!Win7中如何安装高版本的NodeJS

正常情况下,Win7支持的Node.js最高版本是V13.14,但在开发过程中,有不少Vue项目或其他需要依赖Node环境的项目,对Node版本要求都比较高。对此,我们要么重装操作系统到Win8以上,要么就得想办法在Win7中安装高…

平衡二叉树AVLTree的实现与应用(难度5/10)

这是目前难度最高的一个作业,主要难点在于树的平衡,树的平衡依赖于调试输出的图形化,也就是输出二叉树的实现,二叉树的输出技巧性比较强,一般人很难直接想到控制台可以打印二叉树。后面的测试结果显示本文实现的AVLTre…

MYSQL 高级SQL语句

1、按关键字排序: order by 语句用来实现 ,前面可以使用where字句使查询结果进一步过滤 asc 是按照升序排序 , 默认的 desc 是按照降序排序 order by的语法结构 例:select name,score from ku order by score desc; 表示将数…

飞书接入ChatGPT,实现智能化问答助手功能,提供高效的解答服务

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…

【源码分析】zeebe actor模型源码解读

zeebe actor 模型🙋‍♂️ 如果有阅读过zeebe 源码的朋友一定能够经常看到actor.run() 之类的语法,那么这篇文章就围绕actor.run 方法,说说zeebe actor 的模型。 环境⛅ zeebe release-8.1.14 actor.run() 是怎么开始的🌈 Lon…

APP出海推广前要做哪些事?

一个移动应用APP从开发完成到成功出海,中间要经历哪些过程?上架应用商店、数据对接、各渠道推广要做些什么? 1、上架应用市场 对于想要出海的APP开发商来说,谷歌应用商店Google Play和苹果应用商店Apple APP Store是主要的发行渠…

QT 插件化图像算法研究平台

因工作和生活需要,做了一个插件化的图像算法研究平台。 相关技术如下: 一、插件化 实现了基本的插件框架,能载入插件、加载菜单。 主程序只有插件载入功能。 主窗体、其它任何功能及窗体均由各种插件提供。 二、Opencv相关插件&#xf…

JVM的故事——虚拟机类加载机制

虚拟机类加载机制 文章目录 虚拟机类加载机制一、概述二、类加载的时机三、类加载的过程四、类加载器 一、概述 本章将要讲解class文件如何进入虚拟机以及虚拟机如何处理这些class文件。Java虚拟机把class文件加载到内存,并对数据进行校验、转换解析和初始化&#…

Qt+C++桌面计算器源码

程序示例精选 QtC桌面计算器源码 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC桌面计算器源码>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与…

素数之谜揭秘:一文详解试除法判断素数

这是我非常喜欢的一道编程题目。不要小看这道题&#xff0c;它看似简单&#xff0c;实则奥妙无穷。由于这是C语言的入门篇&#xff0c;只介绍最简单&#xff0c;也最容易想到的方法&#xff1a;试除法。但哪怕是试除法&#xff0c;也有不少变化。 要想了解试除法&#xff0c;首…

Flowable7 设计器

1、flowable7 已经在主版本上移除了Flowable UI相关的包&#xff0c;包含bpm-json相关的所有包和流程设计器相关前端文件。 2、flowable7 版本目前只保留了xml运行相关的包&#xff0c;ui modeler已经移除 3、目前官方给的回复是只能在 flowable 云产品上使用设计器&#xff…

进程的组成:PCB、程序段、数据段

进程的组成:PCB、程序段、数据段 什么是进程 在操作系统中,进程是资源分配和程序执行的基本单位,它是操作系统动态执行的一个程序。 进程是一个动态的概念,当一个程序运行时,它就是一个进程,进程需要相应的系统资源:内存、CPU、文件等等,以保证其能够正确运行。对于同一个程…

短线炒股必杀技

一、短线交易入门基础 1.什么是短线 短线交易博取的是短期差价收益&#xff0c;一般不太关心股票的业绩和潜质&#xff0c;只关心个股近期是否会上涨&#xff0c;具体涨多少。短线投资者以技术派为主&#xff0c;主要依据技术图表进行分析。一般短线投资者的通常持股周期是以几…

设计师都去哪些网站找样机素材

在当今的设计领域&#xff0c;3D样机素材已经成为一个重要的领域。3D样机素材可以让设计师更好地展示他们的设计理念和概念&#xff0c;也可以帮助客户更好地理解设计。为了帮助设计师更容易地创建3D样机素材&#xff0c;以下是我推荐的10个易于使用的3D样机素材网站。 即时设…

那个学C++不没有点大病?一点点癫狂的语法混乱版note和有一点点长的无语的标题,让人怀疑精神状态尼奥

类型转换 切勿混用无符号类型和有符号类型 表达式中两者都有时&#xff0c;有符号类型会转化为无符号类型&#xff0c;当该值为负时会出现非预期结果&#xff1b; unsigned a 1; int b -1; cout<<a*b;//输出 4294967295 //详解: b的源码&#xff1a;100...1 负数转补…

PL端DDR4读写测试实验(未完成)

文章目录 DDR4介绍实验过程编写XDC使用IP核上板验证TODO 参考 DDR4介绍 开发板PL有一颗16bit的DDR4。 先说明硬件信号&#xff08;按该芯片&#xff09;&#xff1a; 信号名说明DQData input/output&#xff0c;双向数据线&#xff08;这个芯片是x16的&#xff0c;使用DQ[15…