ROS第三梯:ROS+C++实现速腾Bag包的解析

news2024/9/22 13:45:45

解决问题:速腾Bag包利用bag_to_pcd生成的pcd文件字段名称存在问题,多了几个异常的"_",导致强度属性无法在Intensity中显示。

解决方案:利用sensor_msgs库进行数据读取和转换成sensor_msgs::PointCloud格式,再通过遍历该数据结构获得坐标和属性信息,具体代码如下:

/*
依赖库:
roscpp
rosbag
std_msgs
sensor_msgs
*/
#include <ros/ros.h>
#include <sensor_msgs/PointCloud2.h>
#include <sensor_msgs/PointCloud.h>
#include <sensor_msgs/point_cloud_conversion.h>
#include <string>
#include <stdlib.h>
#include <rosbag/bag.h>
#include <rosbag/view.h>
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
#include <fstream>

rosbag::Bag bag;
bag.open(path, rosbag::bagmode::Read); //open *.bag
//set topics which you want to read
std::vector<std::string> topics; 
 //这个是我指定要读取的消息topic
topics.push_back(std::string("/bp1/rslidar_points"));
//read defined topics
rosbag::View view(bag, rosbag::TopicQuery(topics));; 
for (rosbag::MessageInstance const m : view) 
{
        sensor_msgs::PointCloud2::ConstPtr input = m.instantiate<sensor_msgs::PointCloud2>();
        if (input == NULL) {
            continue;
        }

        sensor_msgs::PointCloud clouddata;
        sensor_msgs::convertPointCloud2ToPointCloud(*input, clouddata);

        for(int i = 0;i<clouddata.points.size();i++)
        {
            PtType point;
            point.x = clouddata.points[i].x;
            if(isnan(point.x)) continue;
            point.y = clouddata.points[i].y;
            point.z = clouddata.points[i].z;
            //设置反射强度
            point.intensity = clouddata.channels[0].values[i];  
            //设置ring  
            point.ring = clouddata.channels[1].values[i];    
            //设置timestamp
            point.timestamp = clouddata.channels[2].values[i];    
            std::cout<<i<<" "<<point.x<<" "<<point.y<<" "<<point.z<<" "<<point.intensity
                    <<" "<<point.ring<<" "<<std::to_string(clouddata.channels[2].values[i])<<std::endl;
}

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

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

相关文章

避免17个最常见的电子邮件营销错误

我们都曾在电子邮件营销中犯过错。你点击发送&#xff0c;随后那种沉重的感觉袭来。你搞砸了&#xff0c;现在所有人都能看到。就像把信息放入瓶子丢进互联网的浩瀚海洋中&#xff0c;无法收回。 有些电子邮件营销错误显而易见&#xff0c;可能会破坏你投入了大量心血的营销活…

多窗口联系

使用信号和槽实现多个界面的跳转 准备好两个界面 一个界面准备好信号 一个界面准备好槽 连接两个界面的信号和槽 主界面的头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Wi…

俄罗斯电商没有技巧,OZON换季相关爆品

Top1 加热器 Обогреватель кварцевый напольный ИЖЭКО М 800 вт СВ01 энергосберегающий электрообогреватель 商品id&#xff1a;1352359815 月销量&#xff1a;781 OZON选品分析工具&#…

Xilinx系FPGA学习笔记(六)RAM的IP核学习

系列文章目录 文章目录 系列文章目录块RAM生成 块RAM生成 对于RAM来说&#xff0c;也有两种: 在 Memories & Storage Elements 下&#xff0c;一个是 Distributed Memory Generator&#xff0c;另一个是 BlockMemory Generator&#xff0c;这与ROM是类似的 这里的常规接口…

CSP-CCF★★★201812-2小明放学★★★

目录 一、问题描述 二、解答 &#xff08;1&#xff09;注意&#xff1a; &#xff08;2&#xff09;80分版&#xff1a; &#xff08;3&#xff09;100分版&#xff1a; 三、总结 一、问题描述 二、解答 &#xff08;1&#xff09;注意&#xff1a; 题目的n小于等于10的…

9月10(信息差)

&#x1f30d;华为最便宜小折叠&#xff01;华为nova Flip今晚发布&#xff1a;搭载麒麟8000芯片 从曝光的跑分信息来看&#xff0c;nova Flip将搭载麒麟8000处理器&#xff0c;也就是nova 12 Pro/Ultra的同款&#xff0c;采用8核心的134组合&#xff0c;大核是1颗2.4GHz的Cort…

怎么画实体关系图E-R?用这款在线绘图工具简单又好用!

ER图(Entity-Relationship Diagram&#xff0c;即实体-关系图)是一种用于数据库设计的图形化工具&#xff0c;用于描述现实世界的概念模型。它由Peter Chen于1976年首次提出&#xff0c;现已成为数据库建模和系统分析设计中最常用的工具之一。 ER图通过图形化的方式&#xff0…

Mamba模型学习笔记

笔记来源&#xff1a;bilibili Transformer 的死穴 Transformer 结构的核心是自注意力机制层&#xff0c;无论是 encoder 还是 decoder&#xff0c;序列数据都先经过位置编码后喂给这个模块。 但是自注意力机制的计算范围仅限于窗口内&#xff0c;而无法直接处理窗口外的元素…

支持iPhone 16新品预售,饿了么同步上线专人配送等特色服务

9月10日凌晨&#xff0c;2024年 Apple 秋季新品发布会上正式揭晓iPhone 16新机。9月10日一早&#xff0c;饿了么同步宣布&#xff1a;今年将携手近4000家Apple 授权专营店&#xff0c;支持iPhone 16新品预售及现货的同步开售。新机现货首发当日&#xff0c;饿了么消费者最快半小…

Mysql | 知识 | 事务隔离级别

转账案例缘起 我的钱包&#xff0c;共有 100 元。 今天我心情好&#xff0c;我决定给你的转账99元&#xff0c;最后的结果肯定是我的余额变为 1元&#xff0c;你的余额多了99元。 转账这一动作在程序里会涉及到一系列的操作&#xff0c;假设我向你转账 99元 的过程是有下面这…

哪些原因导致ERP成功率这么低?

哪些原因导致ERP成功率这么低&#xff1f; 有一句名言是“幸福的家庭都是相似的&#xff0c;不幸的家庭却各有各的不幸。”&#xff0c;这句名言应用到企业数字化的实施落地中也是适用的&#xff0c;数字化成功实施的企业也都是相似的&#xff0c;数字化实施失败的企业却有各种…

安卓玩机工具-----适合安卓机型的“搞机工具箱” 功能齐全 玩机推荐

搞机工具箱最新版是一款相当出色的电脑端手机工具箱软件&#xff0c;搞机工具箱正式版功能强劲&#xff0c;可以帮助用户不需要root就能够直接对手机进行调节&#xff0c;方便对手机进行更加全面的掌控&#xff0c;搞机工具箱便捷好用&#xff0c;只需要根据文字提示及自己的需…

开源的 Windows 12 网页体验版!精美的 UI 设计、丰富流畅的动画

大家周二好呀&#xff01;博主今天给小伙伴们分享一款炫酷的 Windows 12 体验版&#xff0c;网页效果拉满&#xff0c;非常值得我们去尝试&#xff01; 如果你对未来的Windows操作系统充满期待&#xff0c;那么这款开源的Windows 12 网页体验版绝对不容错过&#xff01;这不仅…

如何编辑pdf文件?金舟PDF编辑器解决PDF编辑、转换问题!

如何编辑pdf文件&#xff1f;pdf是电脑上便携的文档格式之一&#xff0c;不管是阅读&#xff0c;还是打印&#xff0c;都不会出现排版错乱的问题&#xff0c;并且在任意系统上都能“正常”展示&#xff0c;不受影响。这也是pdf文件运用较为广泛的原因之一。 不少用户在接触到pd…

【数据结构与算法 | 灵神题单 | 前后指针(链表)篇】力扣19, 61,1721

1. 力扣19&#xff1a;删除链表的倒数第N个节点 1.1 题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; …

cache miss问题C++示例

原题是&#xff1a; const int LEN 64*1024*1024; int *arr new int[LEN]; for (int i 0; i < LEN; i 2) arr[i] * i; // 循环1 for (int i 0; i < LEN; i 8) arr[i] * i; // 循环2第二个循环比第一个循环少了四倍的计算量&#xff0c;理论上应该要快4倍&#xff…

深度解析RAG:你必须要了解的RAG优化方法

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合检索和生成能力的技术框架&#xff0c;旨在通过从外部知识库中检索相关信息来增强生成模型的输出。其基本思想是利用大型语言模型&#xff08;LLM&#xff09;的生成能力&#xff0c;同时通过检索机制获取…

OpenStack × OceanBase: 打造高可用可扩展的基础设施平台

OceanBase 社区资深总监封仲淹在9月3日参加 OpenInfra 亚洲峰会中&#xff0c;分享了OceanBase与OpenStack的联合解决方案。本文将介绍这一联合方案的技术亮点及其为用户带来的独特价值。 OpenStack长期以来一直是云计算领域的先行者&#xff0c;通过提供强大的开源平台&#x…

西门子博途零基础学PLC必会的100个指令

#西门子##PLC##自动化##工业自动化##编程##电工##西门子PLC##工业##制造业##数字化##电气##工程师# 工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

MATLAB求解0-1线性规划问题的详细分析

引言 0-1线性规划是整数规划中的一种特殊形式&#xff0c;它广泛应用于资源分配、工厂选址、投资组合优化、物流运输等多个领域。0-1线性规划的特点是&#xff0c;决策变量只能取0或1的离散值&#xff0c;通常用于描述“是-否”决策问题。随着计算机技术的发展&#xff0c;数学…