fast lio 运行mid360采集的数据,并保存每一帧的点云PCD和位姿

首先我们看到在map_incremental中存在一个保存每一帧PCD文件的代码,因此想利用改代码。

如何修改呢?

一. 改每一帧无畸变点云的PCD的保存代码

    /**************** save map ****************//* 1. make sure you have enough memories/* 2. noted that pcd save will influence the real-time performences **/if (pcd_save_en){int size = feats_undistort->points.size();PointCloudXYZI::Ptr laserCloudWorld( \new PointCloudXYZI(size, 1));for (int i = 0; i < size; i++){// 原来的程序,直接变换到世界坐标系下//RGBpointBodyToWorld(&feats_undistort->points[i], \//                   &laserCloudWorld->points[i]);// 现在改的程序,直接变换到世界坐标系下RGBpointBodyLidarToIMU(&feats_undistort->points[i], \&laserCloudWorld->points[i]);}*pcl_wait_save += *laserCloudWorld;static int scan_wait_num = 0;scan_wait_num ++;if (pcl_wait_save->size() > 0 && pcd_save_interval > 0  && scan_wait_num >= pcd_save_interval){pcd_index ++;string all_points_dir(string(string(ROOT_DIR) + "PCD1/scans_src_") + to_string(pcd_index) + string(".pcd"));pcl::PCDWriter pcd_writer;cout << "current scan saved to /PCD1/" << all_points_dir << endl;pcd_writer.writeBinary(all_points_dir, *pcl_wait_save);pcl_wait_save->clear();scan_wait_num = 0;}}

需要设置的内容为三项,前两项需要在fast-lio/config/mid360.yaml中设置:

1)pcd_save_en 是需要设置为true的;

2)pcd_save_interval需要设置为1(设置为1,表示每一帧保存一次,如果设置为2,就表示每两帧合并成一个pcd文件保存一次),为了和pose对应上,这里就设置为1.

3)由于不需要让点云到IMU世界坐标系下,只需要让点云变换到IMU当前IMU坐标系下,因此:

改为:

            // 原来的程序,直接变换到世界坐标系下//RGBpointBodyToWorld(&feats_undistort->points[i], \//                   &laserCloudWorld->points[i]);// 现在改的程序,直接变换到对应帧的IMU坐标系下RGBpointBodyLidarToIMU(&feats_undistort->points[i], \&laserCloudWorld->points[i]);

RGBpointBodyLidarToIMU(&feats_undistort->points[i], &laserCloudWorld->points[i]);表示通过激光雷达和IMU之间的变换矩阵,把当前激光雷达帧数据变换到 当前IMU位姿下。

而RGBpointBodyToWorld(&feats_undistort->points[i],  &laserCloudWorld->points[i]);表示首先把当前激光点云变换到当前IMU坐标系下,再变换到IMU世界坐标系下。

因此需要把 原来的 RGBpointBodyToWorld 改为 RGBpointBodyLidarToIMU

二.改pose的保存

1.写一个函数

void saveOdometryAndFrame()
{FILE *fp_odometry;string pose_dir = root_dir + "/PCD1/pose_src.txt";fp_odometry = fopen(pose_dir.c_str(),"a");fprintf(fp_odometry, "%d  %lf  %lf  %lf  %lf  %lf  %lf  %lf \n",pcd_index, state_point.pos(0),  state_point.pos(1),state_point.pos(2), geoQuat.w, geoQuat.x,  geoQuat.y,  geoQuat.z);fclose(fp_odometry);}

按照 tx ty tz qw qx qy qz保存数据。

2.把该函数调用写在geoQuat和 state_point赋值之后就可以了,在这里我写到map_incremental()函数之后。

这样就可以得到无畸变的PCD文件和位姿了。为什么是无畸变的呢?因为feats_undistort是经过IMU补偿之后的点呀,所以保存的PCD是无畸变的鸭。

实际测试的过程中,发现:

1.把保存目录PCD改成PCD1,竟然自动生成了PCD1文件夹。

2.保存之前以为保存会影响计算速度,最后发现不影响计算速度,计算帧率还是9/10帧。

经过这两步,我们就得到了每一帧无畸变的点云和位姿。无缝衔接HBA。

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

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

相关文章

数字化物资管理系统的未来:RFID技术的创新应用

在信息化和智能化不断发展的背景下&#xff0c;物资管理系统的数字化转型已成为各行各业关注的焦点。RFID技术作为一种先进的物联网技术&#xff0c;通过全面数字化实现物资信息的实时追踪和高效管理&#xff0c;为企业的物资管理提供了强有力的支持。 首先&#xff0c;RFID技…

linux中DNS域名解析服务(后续补充)

分离解析简介&#xff1a; 分离解析的域名服务器实际也是主域名服务器&#xff0c;这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址的客户机请求解析同一域名时&#xff0c;为其提供不同的解析结果。 实验要求&#xff1a;防火墙要么关…

国内算力真的紧缺么?

苹果WWDC证实了一点&#xff1a;AI推理算力将长期处于“云端为主”的状态&#xff0c;这个“长期”至少是三到五年。对&#xff0c;苹果和OpenAI搞了一场大合作&#xff0c;打算把下一代iOS系统和ChatGPT混在一起。 这意味着未来三到五年&#xff0c;AI的推理大部分还得靠云端…

如何基于项目人力和管线方案选择FGUI和UGUI

1&#xff09;如何基于项目人力和管线方案选择FGUI和UGUI 2&#xff09;TMP字体出包丢失字体描边 3&#xff09;如何将一张贴图经过Shader处理后的结果输出给另外一个Shader使用 4&#xff09;为什么我的水这么干净&#xff0c;和UE教程里的有差别 这是第390篇UWA技术知识分享的…

Javase.认识异常

认识异常 【本章目标】1. 异常的概念与体系结构1.1 异常的概念1.2 异常的体系结构1.3 异常的分类 2. 异常的处理2.1 防御式编程2.2 异常的抛出2.3 异常的捕获2.3.2 try-catch捕获并处理2.3.3 finally2.4 异常的处理流程 3. 自定义异常类 【本章目标】 异常概念与体系结构异常的…

c++删除容器的第一个元素

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

技术实践:基于百数低代码平台的学生档案管理系统搭建

在数字化时代&#xff0c;信息技术的应用已经渗透到社会的各个角落&#xff0c;教育领域也不例外。学生档案管理作为学校日常运作的重要一环&#xff0c;其信息化、智能化的需求日益凸显。特别是在拥有多个校区的大型学校中&#xff0c;如何高效、准确地管理学生档案&#xff0…

高可用-LNMP平台(keepalived、linux、nginx、mysql|mariadb、php、nfs)--持续创作中

网络架构搭建组建 load balance&#xff08;负载均衡组&#xff09; lb1:192.168.8.5 lb2:192.168.8.6 web&#xff08;nginx组&#xff09; web1:192.168.8.7 web2:192.168.8.8 php&#xff08;动态解析服务器&#xff09; php&#xff1a;192.168.8.9 mysql&#xff08;数据…

el-input-number 限制输入正整数

vue 页面 限制输入最小值为0 :min"0" <el-input-number v-model"scope.row.num" change"handleNumChange(scope)" keydown.enter.prevent style"width: 200px; " :min"0" />methods 里面限制输入的数字不为小数 使…

Junit4测试基本应用(白盒测试)

Junit4测试基本应用&#xff08;白盒测试&#xff09; 一、实验目的 掌握Junit的基本操作&#xff0c;进行较简单的单元测试。 二、Junit4测试的使用 1. 创建java项目JUnitText 我使用的Eclipse&#xff0c;在左侧Package Explorer(包资源管理器)右键&#xff0c;新建Java …

使用pyside6的QWebEngineView保存和读取cookie

网上很多都没讲全&#xff0c;对于刚了解的朋友不太友好&#xff0c;自己整理下记录下pyside6的QWebEngineView如何使用并保存和读取cookie的&#xff0c;解决当程序退出后重复登录的问题&#xff1a; from PySide6.QtWidgets import QApplication, QMainWindow from PySide6.…

python socket写客户端

客户端开发流程 1、创建客户端套接字对象 2、和服务端套接字建立连接 3、发送数据 4、接收数据 5、关闭客户端套接字 注意&#xff1a;客户端是指运行在用户的设备上&#xff0c;服务端是指运行在服务器设备上的&#xff0c;专门为客户端提供数据服务 socket类的使用 1、导入so…

若依 ruoyi 排序 顺序 倒序 的实现

1. table标签新增排序相关属性 // :default-sort"defaultSort" 指定默认排序 // sort-change"handleSortChange" 指定排序点击事件 :default-sort"defaultSort" sort-change"handleSortChange" 2. 列上新增排序相关配置 自定义查询语…

mac苹果窗口辅助工具:Magnet for mac 2.14.0中文免激活版

Magnet 是一款针对 MacOS 系统的窗口管理工具软件。它能够帮助用户更加高效地管理和组织桌面上的窗口&#xff0c;通过简单的快捷键操作&#xff0c;可以将窗口自动调整到指定的位置和大小&#xff0c;实现多窗口快速布局。Magnet 还支持多显示器环境下的窗口管理&#xff0c;可…

JAVA每日总结day6.21

ok了家人们&#xff0c;今天我们学习了面向对象中关键字的使用和抽象类&#xff0c;话不多说&#xff0c;我们一起看看吧&#xff0c;&#xff08;今天终于星期五了&#xff0c;芜湖&#xff01;&#xff01;&#xff01;&#xff09; 一&#xff0c;this和super关键字 1&…

ECharts,拿来吧你!

作为一名前端程序员,在日常的项目开发中,我们会遇到各种各样的图表设计,那么,为了提高我们的开发效率,ECharts便应运而生了!它提供了丰富的图表样式和多浏览器支持的API接口,不仅能够将静态的数据转换为图表,还可以动态的请求后端传递过来的数据,将其以可视化的形式展现给用户,…

流量回放的数据隔离

流量回放的数据处理是决定流量回放的基础,流量回放中的流量都是在之前录制下来的。往往录制下来的流量并不能直接回放,这有两个原因,其一是录制下来的流量很难回放就能成功,很多有状态的数据已经被消费掉了,想要回放成功必须对流量进行处理,才能保证回放能够成功;其二是…

kakfa发版丢消息事件分析

背景 其他部门同事反馈在项目发版/重启(kill -15)的那段时间&#xff0c;经常会出现导致 C 端业务出现问题&#xff0c;从而产生资损 一听资损&#xff0c;赶紧应答下来&#xff0c;了解了下具体情况&#xff0c;然后立马去排查了 问题分析 结合同事的描述以及对业务的了解&a…

深度神经网络一

文章目录 深度神经网络 (DNN)1. 概述2. 基本概念3. 网络结构 深度神经网络的层次结构详细讲解1. 输入层&#xff08;Input Layer&#xff09;2. 隐藏层&#xff08;Hidden Layers&#xff09;3. 输出层&#xff08;Output Layer&#xff09;整体流程深度神经网络的优点深度神经…

Redis-事务-基本操作-在执行阶段出错不会回滚

文章目录 1、Redis事务控制命令2、Redis事务错误处理3、Redis事务错误处理&#xff0c;在执行阶段出错不会回滚 1、Redis事务控制命令 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> multi OK 127.0.0.1:6379(TX)> set a1 v1 QUEUED 127.0.0.1:6379(TX)>…