ROS相关消息类型&格式介绍

1.std _ msgs

该类型是 ROS 内置的标准消息类型,是最基础的消息类型


ROS Message Types

    • Bool
    • Byte
    • ByteMultiArray
    • Char
    • ColorRGBA
    • Duration
    • Empty
    • Float32
    • Float32MultiArray
    • Float64
    • Float64MultiArray
    • Header
#高级戳记数据类型的标准元数据。
#这通常用于通信时间戳数据
#在特定的坐标系中。
uint32 seq序列号
time stamp时间戳
string frame_id参考坐标系
    • Int16
    • Int16MultiArray
    • Int32
    • Int32MultiArray
    • Int64
    • Int64MultiArray
    • Int8
    • Int8MultiArray
    • MultiArrayDimension
    • MultiArrayLayout
    • String
    • Time
    • UInt16
    • UInt16MultiArray
    • UInt32
    • UInt32MultiArray
    • UInt64
    • UInt64MultiArray
    • UInt8
    • UInt8MultiArray

2.geometry_msgs

主要包含一些与机器人运动控制和定位姿态相关的消息类型


ROS Message Types

    • Accel
    • AccelStamped
    • AccelWithCovariance
    • AccelWithCovarianceStamped
    • Inertia
    • InertiaStamped
    • Point
#这包含了一个点在自由空间中的位置
float64 x
float64 y
float64 z
//一般情况下推荐使用point类型,也就是64位的定义方式,可以促进互操作性(可能ros中大多数函数的接口是用64位定义的)
    • Point32
#这包含了一个点在自由空间中的位置(32位精度)。
#建议尽可能使用Point,而不是Point32。
#这个建议是为了促进互操作性。
#此消息的设计目的是在发送时占用更少的空间
#譬如在有许多点(大规模点云)情况下使用Point32
float32 x
float32 y
float32 z
    • PointStamped
#这表示一个有参考坐标帧和时间戳的点
std_msgs/Header header
geometry_msgs/Point point
    • Polygon
    • PolygonStamped
    • Pose
#自由空间中的姿态表示,由位置和方向组成。
geometry_msgs/Point position
geometry_msgs/Quaternion orientation
    • Pose2D
#这表示了一个2D流形上的位置和方向。
#弃用,请使用完整的3D姿势
#一般来说,我们的建议是使用所有内容的完整3D表示,对于2D特定应用程序,在平面上进行适当的投影以进行计算,但最好在处理过程中保留3D信息。(主要原因在于当使用两种接口去实现内容的时候,3D可以转2D,但2D无法转3D)
float64 x
float64 y
float64 theta
    • PoseArray
#一个带有全局引用头的姿势数组。
std_msgs/Header header
geometry_msgs/Pose[] poses
    • PoseStamped
#一个带有参考坐标帧和时间戳的位姿
std_msgs/Header header
geometry_msgs/Pose pose
    • PoseWithCovariance
#这代表了一个不确定的自由空间中的位姿。
# 6x6协方差矩阵的行主序表示
#方向参数使用固定轴表示。
#参数依次为:
# (x, y, z,绕x轴旋转,绕y轴旋转,绕z轴旋转)
geometry_msgs/Pose pose
float64[36] covariance
    • PoseWithCovarianceStamped
#这表示一个带有参考坐标帧和时间戳的估计的位姿
std_msgs/Header header
geometry_msgs/PoseWithCovariance pose
    • Quaternion
#这表示一个四元数形式的自由空间方向。
float64 x
float64 y
float64 z
float64 w
    • QuaternionStamped
#这表示一个带有参考坐标帧和时间戳的方向。
std_msgs/Header header
geometry_msgs/Quaternion quaternion
    • Transform
#这表示了自由空间中两个坐标系之间的变换。
geometry_msgs/Vector3 translation
geometry_msgs/Quaternion rotation
    • TransformStamped
#这代表了父级坐标系id到子级坐标系id之间的变换。
#此消息主要被用于tf包。
std_msgs/Header header
string child_frame_id
geometry_msgs/Transform transform
    • Twist
#这表示自由空间中的速度,分解成线性部分和角部分。
geometry_msgs/Vector3 linear
geometry_msgs/Vector3 angular
    • TwistStamped
#带有参考坐标帧和时间戳的速度
std_msgs/Header header
geometry_msgs/Twist twist
    • TwistWithCovariance
#这表示在不确定的自由空间中的速度
#6x6协方差矩阵的行主序表示
#方向参数使用固定轴表示。
#参数依次为:
# (x, y, z,绕x轴旋转,绕y轴旋转,绕z轴旋转)
geometry_msgs/Twist twist
float64[36] covariance
    • TwistWithCovarianceStamped
#这表示一个带有参考坐标帧和时间戳估计的速度。
std_msgs/Header header
geometry_msgs/TwistWithCovariance twist
    • Vector3
#表示自由空间中的向量。
#它只是代表一个方向。因此,它没有有意义的应用一个转换到它(例如,当应用一个通用刚性转换到Vector3, tf2将只应用旋转)。如果希望数据也是可转换的,请使用 geometry_msgs/Point消息代替。
float64 x
float64 y
float64 z
    • Vector3Stamped
#这表示了一个参考坐标帧和时间戳的Vector3
std_msgs/Header header
geometry_msgs/Vector3 vecto
    • Wrench
    • WrenchStamped

3.nav_msg

主要包含一些与导航相关的消息类型


ROS Message Types

    • GridCells
# 2D网格中的单元格数组
std_msgs/Header header
float32 cell_width
float32 cell_height
geometry_msgs/Point[] cells
    • MapMetaData
#这包含了关于占据网格特征的基本信息
#加载地图的时间
#地图分辨率[m/cell]
#地图的宽度
#地图的高度
#地图的起始[m, m, rad]。这是在地图中 cell (0,0)真实世界的位姿
time map_load_time
float32 resolution
uint32 width
uint32 height
geometry_msgs/Pose origin
    • OccupancyGrid
#这表示一个2D网格地图,其中每个单元格代表占据的概率
#头信息
#地图元数据
#地图数据,以行主序优先,从(0,0)开始。占据概率在[0,100]范围内。未知是-1。
std_msgs/Header header
nav_msgs/MapMetaData info
int8[] data
    • Odometry
#这表示在自由空间中的位置和速度的估计。
#这条消息中的Pose应该在header.frame_id给出的坐标帧中指定。
#该消息中的twist应该在child_frame_id给出的坐标帧中指定
std_msgs/Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist
    • Path
#一个位姿数组,表示机器人要遵循的路径
std_msgs/Header header
geometry_msgs/PoseStamped[] poses

ROS Service Types

    • GetMap
    • GetPlan
    • LoadMap
    • SetMap

ROS Action Types

    • GetMap

4.sensor_msgs

主要包含一些与传感器信息读取相关的消息类


ROS Message Types

    • BatteryState
    • CameraInfo
    • ChannelFloat32
#这个消息被PointCloud消息用来保存可选数据,与云中的每个点相关联。数组values的长度应该与点云中点的数组的长度相同,values中每个值与点云中一个点相对应。
目前常见的通道名称包括
"u", "v":图像的行列
"rgb":uint8(R, G, B),共24bits;
"intensity":激光或者像素密度
"distance":距离
通道名称应该给出通道具体的语义,如 "intensity密度" 而不是 "value值".
string name
float32[] values
    • CompressedImage
    • FluidPressure
    • Illuminance
    • Image
    • Imu
#这是一个从IMU(惯性测量单元)保存数据的消息
#加速度应该是m/s^2(不是g’s),旋转速度应该是rad/sec
#如果测量的协方差是已知的,它应该被填写(如果你所知道的只是每次测量的方差,例如从数据表中,只需将它们沿对角线放置)
#一个全为0的协方差矩阵将被解释为“协方差未知”,并要使用这个协方差数据,那么必须假设或从其他来源获得。
#如果你没有对其中一个数据元素的估计(例如,你的IMU没有产生一个方向估计),请将相关协方差矩阵的元素0设置为-1
#如果您正在解释此消息,请检查每个协方差矩阵的第一个元素的值是否为-1,并忽略相关的估计。
std_msgs/Header header
geometry_msgs/Quaternion orientation
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration
float64[9] linear_acceleration_covariance
    • JointState
    • Joy
    • JoyFeedback
    • JoyFeedbackArray
    • LaserEcho
    • LaserScan
#平面激光测距仪单次扫描
#如果你有另一个具有不同行为的测距设备(例如声纳# array),请找到或创建一个不同的消息,因为应用程序将对这些数据做出相当精确的假设
std_msgs/Header header#头部的时间戳是扫描中第一条射线的获取时间。
float32 angle_min#扫描起始角度[rad]
float32 angle_max#扫描结束角度[rad]
float32 angle_increment#测量之间的角度步长[rad]
float32 time_increment#测量间隔时间步长[秒]-如果您的扫描仪正在移动,这将用于3d点的插值位置
float32 scan_time#扫描间隔时间[秒]
float32 range_min#最小范围[m]
float32 range_max#最大范围[m]
float32[] ranges#范围数据[m](注意:值< range_min或> range_max应被丢弃)
float32[] intensities#密度数据[设备特定的单位]。如果你的设备不提供密度,请离开空数组。(这个具体不太清楚)
    • MagneticField
    • MultiDOFJointState
    • MultiEchoLaserScan
    • NavSatFix
    • NavSatStatus
    • PointCloud
#这个消息包含一个3d点的集合,加上可选的附加关于每个点的信息。
#传感器数据采集时间,坐标帧ID。
# 3d点数组每个Point32应该被解释为一个3d点(在头文件中给定的帧中)。
#每个通道应该有相同数量的元素点数组,每个通道中的数据应与每个点1:1对应。常用的通道名称在ChannelFloat32.msg中列出。
std_msgs/Header header
geometry_msgs/Point32[] points
sensor_msgs/ChannelFloat32[] channels
    • PointCloud2
#该消息包含一个n维点的集合,其中可能包含额外的信息,如法线、强度等。点数据存储为二进制blob,其布局由“fields”数组的内容描述。
点云数据可以被组织为2d(类似图像)或1d(无序)。组织为2d图像的点云可以由相机深度传感器如立体声或飞行时间产生。
#传感器数据采集时间,坐标帧ID (3d点)。
std_msgs/Header header
#点云的2D结构。如果云是无序的,高度为1,宽度为点云的长度。
uint32 height
uint32 width
#描述通道及其在二进制数据blob中的布局。
sensor_msgs/PointField[] fields
bool is_bigendian#这个数据是双端数据吗?
uint32 point_step#点的长度(以字节为单位)
uint32 row_step#一行长度(以字节为单位)
uint8[] data#实际的点数据,大小为(row_step*height)
bool is_dense如果没有无效点则为True

    • PointField
#该消息以PointCloud2消息格式保存了一个点条目的描述。
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#字段中有多少元素
    • Range
    • RegionOfInterest
    • RelativeHumidity
    • Temperature
    • TimeReference

ROS Service Types

    • SetCameraInfo

以上均为ROS的noetic版本所列出的基本数据类型和一些里程计、导航和传感器相关的数据类型,这里将他们罗列出来方便今后学习。

你可能感兴趣的:(ROS相关笔记,机器人)