当前位置: 首页 > news >正文

宇树机器狗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)点云格式 查看全文

相关文章:

  • MLLMs for TSAD ?
  • 单例模式:懒汉式的两种优化写法
  • 编译报错 宏 _IOC_SIZEBITS,而这个宏在编译时未定义
  • Bash 中的数学运算详解
  • 【每天一个知识点】模式识别
  • 自动驾驶---决策规划之导航增强端到端
  • Jinja2模板引擎SSTI漏洞
  • 加密壳(二)将shellcode写入PE
  • STL——红黑树的封装及map/set的模拟实现
  • 数字孪生火星探测车,星际探索可视化
  • 泛目录二级目录【实用指南】,无极站群系统2025升级版
  • leetcode125.验证回文串
  • java蓝桥杯b组
  • 20-算法打卡-哈希表-赎金信-leetcode(383)-第二十天
  • 用sed替换文本 笔记250419
  • Linux 进程间通信详解
  • 鼠标移动操作
  • C++原码、反码和补码
  • YuE本地部署完整教程,可用于ai生成音乐,歌曲
  • 6. 话题通信 ---- 使用自定义msg,发布方和订阅方cpp,python文件编写
  • 西安旅游:2024年营业收入约5.82亿元,同比增长5.88%
  • 遭遇FIFA三个转会窗禁令,申花有苦难言将选择赔偿
  • 轻流科技薄智元:AI时代,打造“工业智造”需要“共生式进化”
  • 外交部回应美新任驻日大使涉华言论:外交官的职责不应是抹黑别国、煽动对抗
  • 纪念沈渭滨︱初五沈大大  浓浓师生情
  • 台积电一季度净利增长六成,预计今年AI芯片营收增长一倍