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

ROS导航相关消息

一、地图消息

地图相关的消息主要有两个:

nav_msgs/MapMetaData 地图元数据,包括地图的宽度、高度、分辨率等。

nav_msgs/OccupancyGrid 地图栅格数据,一般会在rviz中以图形化的方式显示。

调用rosmsg info nav_msgs/MapMetaData显示消息内容如下:

time map_load_time
float32 resolution #地图分辨率
uint32 width #地图宽度
uint32 height #地图高度
geometry_msgs/Pose origin #地图位姿数据
  geometry_msgs/Point position
    float64 x
    float64 y
    float64 z
  geometry_msgs/Quaternion orientation
    float64 x
    float64 y
    float64 z
    float64 w

调用 rosmsg info nav_msgs/OccupancyGrid显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
#--- 地图元数据
nav_msgs/MapMetaData info
  time map_load_time
  float32 resolution
  uint32 width
  uint32 height
  geometry_msgs/Pose origin
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
#--- 地图内容数据,数组长度 = width * height
int8[] data

二、里程计消息

里程计相关消息是:nav_msgs/Odometry,调用rosmsg info nav_msgs/Odometry 显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
  geometry_msgs/Pose pose #里程计位姿
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w
  float64[36] covariance
geometry_msgs/TwistWithCovariance twist
  geometry_msgs/Twist twist #速度
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z    
  # 协方差矩阵
  float64[36] covariance

三、坐标变换消息

坐标变换相关消息是: tf/tfMessage,调用rosmsg info tf/tfMessage 显示消息内容如下:

geometry_msgs/TransformStamped[] transforms #包含了多个坐标系相对关系数据的数组
  std_msgs/Header header
    uint32 seq
    time stamp
    string frame_id
  string child_frame_id
  geometry_msgs/Transform transform
    geometry_msgs/Vector3 translation
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion rotation
      float64 x
      float64 y
      float64 z
      float64 w

四、定位消息

定位相关消息是:geometry_msgs/PoseArray,调用rosmsg info geometry_msgs/PoseArray显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/Pose[] poses #预估的点位姿组成的数组
  geometry_msgs/Point position
    float64 x
    float64 y
    float64 z
  geometry_msgs/Quaternion orientation
    float64 x
    float64 y
    float64 z
    float64 w

五、目标点与路劲规划消息

目标点相关消息是:move_base_msgs/MoveBaseActionGoal,调用rosmsg info move_base_msgs/MoveBaseActionGoal显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
actionlib_msgs/GoalID goal_id
  time stamp
  string id
move_base_msgs/MoveBaseGoal goal
  geometry_msgs/PoseStamped target_pose
    std_msgs/Header header
      uint32 seq
      time stamp
      string frame_id
    geometry_msgs/Pose pose #目标点位姿
      geometry_msgs/Point position
        float64 x
        float64 y
        float64 z
      geometry_msgs/Quaternion orientation
        float64 x
        float64 y
        float64 z
        float64 w

路径规划相关消息是:nav_msgs/Path,调用rosmsg info nav_msgs/Path显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
geometry_msgs/PoseStamped[] poses #由一系列点组成的数组
  std_msgs/Header header
    uint32 seq
    time stamp
    string frame_id
  geometry_msgs/Pose pose
    geometry_msgs/Point position
      float64 x
      float64 y
      float64 z
    geometry_msgs/Quaternion orientation
      float64 x
      float64 y
      float64 z
      float64 w

六、激光雷达消息

激光雷达相关消息是:sensor_msgs/LaserScan,调用rosmsg info sensor_msgs/LaserScan显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
float32 angle_min #起始扫描角度(rad)
float32 angle_max #终止扫描角度(rad)
float32 angle_increment #测量值之间的角距离(rad)
float32 time_increment #测量间隔时间(s)
float32 scan_time #扫描间隔时间(s)
float32 range_min #最小有效距离值(m)
float32 range_max #最大有效距离值(m)
float32[] ranges #一个周期的扫描数据
float32[] intensities #扫描强度数据,如果设备不支持强度数据,该数组为空

七、相机消息

深度相机相关消息有:sensor_msgs/Image、sensor_msgs/CompressedImage、sensor_msgs/PointCloud2

sensor_msgs/Image 对应的一般的图像数据,sensor_msgs/CompressedImage 对应压缩后的图像数据,sensor_msgs/PointCloud2 对应的是点云数据(带有深度信息的图像数据)。

调用rosmsg info sensor_msgs/Image显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
uint32 height #高度
uint32 width  #宽度
string encoding #编码格式:RGB、YUV等
uint8 is_bigendian #图像大小端存储模式
uint32 step #一行图像数据的字节数,作为步进参数
uint8[] data #图像数据,长度等于 step * height

调用rosmsg info sensor_msgs/CompressedImage显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
string format #压缩编码格式(jpeg、png、bmp)
uint8[] data #压缩后的数据

调用rosmsg info sensor_msgs/PointCloud2显示消息内容如下:

std_msgs/Header header
  uint32 seq
  time stamp
  string frame_id
uint32 height #高度
uint32 width  #宽度
sensor_msgs/PointField[] fields #每个点的数据类型
  uint8 INT8=1
  uint8 UINT8=2
  uint8 INT16=3
  uint8 UINT16=4
  uint8 INT32=5
  uint8 UINT32=6
  uint8 FLOAT32=7
  uint8 FLOAT64=8
  string name
  uint32 offset
  uint8 datatype
  uint32 count
bool is_bigendian #图像大小端存储模式
uint32 point_step #单点的数据字节步长
uint32 row_step   #一行数据的字节步长
uint8[] data      #存储点云的数组,总长度为 row_step * height
bool is_dense     #是否有无效点

八、深度图像转激光数据

8.1、优缺点

**优点:**深度相机的成本一般低于激光雷达,可以降低硬件成本;

缺点: 深度相机较之于激光雷达无论是检测范围还是精度都有不小的差距,SLAM效果可能不如激光雷达理想。

8.2、安装

sudo apt-get install ros-melodic-depthimage-to-laserscan

8.3、节点说明

depthimage_to_laserscan 功能包的核心节点是:depthimage_to_laserscan ,为了方便调用,需要先了解该节点订阅的话题、发布的话题以及相关参数。

8.3.1订阅的Topic

image(sensor_msgs/Image) 输入图像信息。

camera_info(sensor_msgs/CameraInfo) 关联图像的相机信息。通常不需要重新映射,因为camera_info将从与image相同的命名空间中进行订阅。

8.3.2发布的Topic

scan(sensor_msgs/LaserScan) 发布转换成的激光雷达类型数据。

8.3.3参数

该节点参数较少,只有如下几个,一般需要设置的是: output_frame_id。

scan_height(int, default: 1 pixel) 设置用于生成激光雷达信息的象素行数。

scan_time(double, default: 1/30.0Hz (0.033s)) 两次扫描的时间间隔。

range_min(double, default: 0.45m) 返回的最小范围。结合range_max使用,只会获取 range_min 与 range_max 之间的数据。

range_max(double, default: 10.0m) 返回的最大范围。结合range_min使用,只会获取 range_min 与 range_max 之间的数据。

output_frame_id(str, default: camera_depth_frame) 激光信息的ID。

8.4、测试

编写launch文件执行,将深度信息转换成雷达信息

<launch>
    <node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depthimage_to_laserscan">
        <remap from="image" to="/camera/depth/image_raw" />
        <param name="output_frame_id" value="camera"  />
    </node>
</launch>
Copy

订阅的话题需要根据深度相机发布的话题设置,output_frame_id需要与深度相机的坐标系一致。

经过信息转换之后,深度相机也将发布雷达数据,为了不产生混淆,可以注释掉 xacro 文件中的关于激光雷达的部分内容。

启动gazebo仿真环境,如下:

在这里插入图片描述
在这里插入图片描述

相关文章:

  • lombok注解介绍
  • 猿创征文|final的细节,你知多少
  • SCM供应链具体有哪些优越性?智能供应链管理系统助力汽车服务企业数字化转型
  • 百数标准应用——一站式实现疫情流调管理数字化
  • 优盘格式化了怎么恢复里面的数据
  • vue-element-upload 文件上传打开选择文件弹框前进行操作
  • 【毕业设计】基于RNN的金融预测系统 - 大数据 深度学习
  • Python安装教程-手把手教你安装python
  • Element VUE实现前端本地下载Excel模板
  • LLVM + Clang 基础介绍
  • 即时模拟仿真的低代码UI设计工具【Witools-Lvgl】设计一套LVGL UI界面
  • 5分钟用 docker 创建nodered
  • 基于微信小程序和安卓的婚恋相亲app
  • Node安装及配置
  • 时间序列的数据分析(六):指数平滑预测法
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Consul Config 使用Git做版本控制的实现
  • Effective Java 笔记(一)
  • interface和setter,getter
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java面向对象及其三大特征
  • Linux后台研发超实用命令总结
  • mysql 数据库四种事务隔离级别
  • MySQL主从复制读写分离及奇怪的问题
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 初识 beanstalkd
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 后端_ThinkPHP5
  • 码农张的Bug人生 - 见面之礼
  • 扑朔迷离的属性和特性【彻底弄清】
  • 深入浅出Node.js
  • 使用docker-compose进行多节点部署
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 写给高年级小学生看的《Bash 指南》
  • 正则与JS中的正则
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #微信小程序(布局、渲染层基础知识)
  • $forceUpdate()函数
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (bean配置类的注解开发)学习Spring的第十三天
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .NET 分布式技术比较
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET连接MongoDB数据库实例教程
  • .NET文档生成工具ADB使用图文教程
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /proc/vmstat 详解
  • ?
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @GlobalLock注解作用与原理解析
  • [AX]AX2012 AIF(四):文档服务应用实例