宇树机器狗go2—slam建图(1)点云格式

0.前言

上一篇番外文章教大家如何在宇树机器狗go2的gazebo仿真环境中实现简单的导航运动,本期文章会教大家如何让宇树的机器狗go2在仿真环境中进行slam建图时经常会遇到的一些点云格式,在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道。宇树机器狗go2仿真会作为一个长期项目来进行不定期更新,仿真不只限于在gazebo上实现,后面还会在isaac sim等仿真平台上教大家如何搭建,其目的还是帮助各位都能以较低的成本加入到宇树机器狗go2的学习中。gazebo的仿真对电脑的需求会低于isaac sim等仿真平台,这对实验条件要求会低很多,更很适合学校小实验室或个人进行仿真实验。

同时我也希望能有更多的开发者加入近来一起完成机器狗go2的仿真实验项目的建设,如有更好的方案和建议可以私聊或申请共创作者。

1.ros PointClould点云格式

宇树机器狗go2配上livox的mid360进行gazebo仿真使用的就是ros PointClould点云格式(livox官方gazebo仿真功能包给的是ros PointClould点云格式,但可通过修改点云属性文件livox_points_plugin.cpp来将PointCloud点云):

image.png

使用rostopic命令会在终端中打印出话题的消息类型、发布者和接收者。

rostopic info /scan 

image.png

ros PointClould的点云消息格式如下:sensor_msgs /PointCloud Message

std_msgs/Header header
geometry_msgs/Point32[] points
sensor_msgs/ChannelFloat32[] channels
  1. header:类型为 Header,包含了消息的元数据,如时间戳(stamp)、坐标系(frame_id)等。时间戳可用于确定数据采集的时间,坐标系则表明这些点云数据所在的参考系。
  2. points:类型为 geometry_msgs/Point32[],是一个三维点的数组。每个 Point32 包含三个浮点型字段 x、y、z,分别表示点在三维空间中的坐标。
  3. channels:类型为 sensor_msgs/ChannelFloat32[],用于存储额外的属性信息。每个 ChannelFloat32 包含一个字符串 name 用于标识该通道的含义,以及一个浮点型数组 values 存储对应的值。例如,可以用一个通道存储点的强度信息,另一个通道存储点的颜色信息等。

2.ros PointClould2点云格式

宇树机器狗go2配上velodyne的vlp16进行gazebo仿真使用的就是ros PointClould2点云格式:

image.png

使用rostopic命令会在终端中打印出话题的消息类型、发布者和接收者。

rostopic info /velodyne_points

image.png

ros PointClould2的点云消息格式如下:sensor_msgs /PointCloud2 Message

std_msgs/Header header
uint32 height
uint32 width
sensor_msgs/PointField[] fields
bool is_bigendian
uint32 point_step
uint32 row_step
uint8[] data
bool is_dense
  1. header: Header 类型,包含时间戳和坐标系等元数据。
  2. height 和 width:height 和 width 用于描述点云的二维结构。如果点云是无序的,height 通常为 1,width 表示点的数量;如果点云是有序的(如立体相机采集的深度图),则 height 和 width 分别表示点云的行数和列数。
  3. fields:类型为sensor_msgs/PointField[],描述了点云中每个点的字段信息。每个 PointField 包含字段的名称(如 xyzintensity 等)、偏移量(表示该字段在数据中的起始位置)、数据类型(如 FLOAT32UINT8 等)和计数(通常为 1)。
  4. is_bigendian:布尔类型,指示数据是否采用大端字节序。
  5. point_step:无符号 32 位整数,表示每个点在数据缓冲区中占用的字节数。
  6. row_step:无符号 32 位整数,表示每行点在数据缓冲区中占用的字节数。
  7. data:无符号 8 位整数数组,存储了实际的点云数据。数据按照 fields 中定义的字段顺序和 point_steprow_step 的规则排列。
  8. is_dense:布尔类型,指示点云中是否包含无效点(如 NaN 或 Inf)。如果为 true,则表示点云中所有点都是有效的。

3.ros PointClould点云格式与ros PointClould2点云格式的区别

点击宇树机器狗go2—slam建图(1)点云格式 查看全文

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

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

相关文章

linux socket编程之udp(实现客户端和服务端消息的发送和接收)

目录 一.创建socket套接字(服务器端) 二.bind将prot与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.直接通信(服务器端) 3.1接收客户端发送的消息 3.2给客户端发送消息 四.客户端通信 4.1创建socket套接字 4.2客户端bind问题 4.3直接通信即可…

第1期:Python基础语法入门

1.1 Python简介 Python是一种解释型、面向对象、动态数据类型的高级编程语言。它设计简洁,易于学习,适合初学者。Python广泛应用于数据科学、人工智能、Web开发、自动化脚本等领域。它的语法简洁易懂,强调代码的可读性。 1.2 安装Python与配…

使用EXCEL绘制平滑曲线

播主播主,你都多少天没更新了!!!泥在干什么?你还做这个账号麻?!!! 做的做的(哭唧唧),就是最近有些忙,以及…… 前言&…

当算力遇上马拉松:一场科技与肉身的极限碰撞

目录 一、从"肉身苦修"到"科技修仙" 二、马拉松的"新大陆战争" 三、肉身会被算法"优化"吗? 马拉松的下一站是"人机共生"时代 当AI能预测你的马拉松成绩,算法能规划最佳补给方案,智能装备让训练效率翻倍——你还会用传…

MLLMs for TSAD ?

项目链接:Multimodal LLMs Advance Time Series Analysis 代码链接:https://github.com/mllm-ts/VisualTimeAnomaly 出处:ICLR 2025 一 文章动机 多模态 LLM (MLLM) 通过 “视觉” 方式处理时序的潜力仍未充分探索; 人类检测 “时序异常” 的自然方式:可视化、文本描…

开发基于python的商品推荐系统,前端框架和后端框架的选择比较

开发一个基于Python的商品推荐系统时,前端和后端框架的选择需要综合考虑项目需求、开发效率、团队熟悉度以及系统的可扩展性等因素。 以下是一些推荐的框架和建议: 后端框架 Flask 优点: 轻量级:Flask的核心非常简洁,…

chili3d调试笔记2+添加web ui按钮

onclick 查找 打个断点看看 挺可疑的,打个断点看看 挺可疑的,打个断点看看 打到事件监听上了 加ui了 加入成功 新建弹窗-------------------------------------- 可以模仿这个文件,写弹窗 然后在这里注册一下,外部就能调用了 对了…

【重学Android】1.关于@Composer注解的一点知识笔记

最新因为一些原因,开始重新学习Android及kotlin编程,也觉得可以顺带记录下这个过程中的一些知识点,也可以用作日后自己查找复习。 Composable 注解在 Android 开发中的使用 Composable 是 Jetpack Compose(Android 的现代声明式…

qt+mingw64+cmake+libqrencode项目编译和搭建成功记录

最近要使用高拍仪拍照获取照片,然后识别照片中的二维码数据、使用QZxing只能识别出一个条码、另外一个条码准备测试用其他的开源项目(如libqrencode-4.1.1)来进行测试,故进行本文的项目环境搭建测试,最后成功。 本机开…

【今日三题】判断是不是平衡二叉树(递归) / 最大子矩阵(二维前缀和) / 小葱的01串(滑动窗口)

⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 判断是不是平衡二叉树(递归)最大子矩阵(二维前缀和)小葱的01串(滑动窗口) 判断是不是平衡二叉树(递归) 判断是不是平衡二叉…

【Linux】线程ID、线程管理、与线程互斥

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章: 【Linux】线程:从原理到实战,全面掌握多线程编程!-CSDN博客 下…

定制一款国密浏览器(10):移植SM2算法前,解决错误码的定义问题

上一章中,我给大家介绍了 SM4 在 BoringSSL 上的移植要点,本来计划本章介绍 SM2 算法的移植要点。在移植 SM2 过程中,遇到了一个拦路虎,所以先扫除这个拦路虎,这就是错误码的定义问题。 在铜锁中,引入了几个错误码和错误字符串,在文件 sm2_err.c 中: static const ER…

JDOM处理XML:Java程序员的“乐高积木2.0版“

各位代码建筑师们!今天我们要玩一款比原生DOM更"Java友好"的XML积木套装——JDOM!它像乐高得宝系列(Duplo)一样简单易用,却能让你的XML工程稳如霍格沃茨城堡!(温馨提示:别…

【后端开发】Spring日志

文章目录 Spring日志日志作用日志测试日志信息日志级别日志配置配置日志级别日志持久化日志文件分割 注解的使用 Spring日志 日志作用 系统监控:可以通过日志记录这个系统的运行状态,对数据进行分析,设置不同的规则,超过阈值时进…

探索大语言模型(LLM):Transformer 与 BERT从原理到实践

Transformer 与 BERT:从原理到实践 前言一、背景介绍二、核心公式推导1. 注意力机制(Attention Mechanism)2. 多头注意力机制(Multi-Head Attention)3. Transformer 编码器(Transformer Encoder&#xff09…

计算机网络八股——HTTP协议与HTTPS协议

目录 HTTP1.1简述与特性 1. 报文清晰易读 2. 灵活和易于扩展 3. ⽆状态 Cookie和Session 4. 明⽂传输、不安全 HTTP协议发展过程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS协议 HTTP协议和HTTPS协议的区别 HTTPS中的加密方式 HTTPS中建立连接的方式 前言&#xff…

QML中的3D功能--入门开发

Qt Quick 提供了强大的 3D 功能支持,主要通过 Qt 3D 模块实现。以下是 QML 中开发 3D 应用的全面指南。 1. 基本配置 环境要求 Qt 5.10 或更高版本(推荐 Qt 6.x) 启用 Qt 3D 模块 支持 OpenGL 的硬件 项目配置 在 .pro 文件中添加: QT += 3dcore 3drender 3dinput 3dex…

Git合并分支的两种常用方式`git merge`和`git cherry-pick`

Git合并分支的两种常用方式git merge和git cherry-pick 写在前面1. git merge用途工作方式使用git命令方式合并使用idea工具方式合并 2. git cherry-pick用途工作方式使用git命令方式合并使用idea工具方式合并 3. 区别总结 写在前面 一般我们使用git合并分支常用的就是git mer…

Web三漏洞学习(其三:rce漏洞)

靶场:NSSCTF 三、RCE漏洞 1、概述 在Web应用开发中会让应用调用代码执行函数或系统命令执行函数处理,若应用对用户的输入过滤不严,容易产生远程代码执行漏洞或系统命令执行漏洞 所以常见的RCE漏洞函数又分为代码执行函数和系统命令执行函数…

从零开始:Python运行环境之VSCode与Anaconda安装配置全攻略 (1)

从零开始:Python 运行环境之 VSCode 与 Anaconda 安装配置全攻略 在当今数字化时代,Python 作为一种功能强大且易于学习的编程语言,被广泛应用于数据科学、人工智能、Web 开发等众多领域。为了顺利开启 Python 编程之旅,搭建一个稳…