建设手机网站经验分享,贵阳网站关键字优化,做外汇网站代理商,用html表格做的网站0.前言
上一篇番外文章教大家如何在宇树机器狗go2的gazebo仿真环境中实现简单的导航运动#xff0c;本期文章会教大家如何让宇树的机器狗go2在仿真环境中进行slam建图时经常会遇到的一些点云格式#xff0c;在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道…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点云 使用rostopic命令会在终端中打印出话题的消息类型、发布者和接收者。
rostopic info /scan ros PointClould的点云消息格式如下sensor_msgs /PointCloud Message
std_msgs/Header header
geometry_msgs/Point32[] points
sensor_msgs/ChannelFloat32[] channelsheader类型为 Header包含了消息的元数据如时间戳stamp、坐标系frame_id等。时间戳可用于确定数据采集的时间坐标系则表明这些点云数据所在的参考系。points类型为 geometry_msgs/Point32[]是一个三维点的数组。每个 Point32 包含三个浮点型字段 x、y、z分别表示点在三维空间中的坐标。channels类型为 sensor_msgs/ChannelFloat32[]用于存储额外的属性信息。每个 ChannelFloat32 包含一个字符串 name 用于标识该通道的含义以及一个浮点型数组 values 存储对应的值。例如可以用一个通道存储点的强度信息另一个通道存储点的颜色信息等。
2.ros PointClould2点云格式
宇树机器狗go2配上velodyne的vlp16进行gazebo仿真使用的就是ros PointClould2点云格式 使用rostopic命令会在终端中打印出话题的消息类型、发布者和接收者。
rostopic info /velodyne_pointsros 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_denseheader Header 类型包含时间戳和坐标系等元数据。height 和 widthheight 和 width 用于描述点云的二维结构。如果点云是无序的height 通常为 1width 表示点的数量如果点云是有序的如立体相机采集的深度图则 height 和 width 分别表示点云的行数和列数。fields类型为sensor_msgs/PointField[]描述了点云中每个点的字段信息。每个 PointField 包含字段的名称如 x、y、z、intensity 等、偏移量表示该字段在数据中的起始位置、数据类型如 FLOAT32、UINT8 等和计数通常为 1。is_bigendian布尔类型指示数据是否采用大端字节序。point_step无符号 32 位整数表示每个点在数据缓冲区中占用的字节数。row_step无符号 32 位整数表示每行点在数据缓冲区中占用的字节数。data无符号 8 位整数数组存储了实际的点云数据。数据按照 fields 中定义的字段顺序和 point_step、row_step 的规则排列。is_dense布尔类型指示点云中是否包含无效点如 NaN 或 Inf。如果为 true则表示点云中所有点都是有效的。
3.ros PointClould点云格式与ros PointClould2点云格式的区别
点击宇树机器狗go2—slam建图(1)点云格式 查看全文