sensor_msgs/LaserScan Message
File: sensor_msgs/LaserScan.msg
Raw Message Definition
#
# If you have another ranging device with different behavior (e.g. a sonar
# array), please find or create a different message, since applications
# will make fairly laser-specific assumptions about this data
Header header # timestamp in the header is the acquisition time of
# the first ray in the scan.
#
# in frame frame_id, angles are measured around
# the positive Z axis (counterclockwise, if Z is up)
# with zero angle being forward along the x axis
float32 angle_min # start angle of the scan [rad]
float32 angle_max # end angle of the scan [rad]
float32 angle_increment # angular distance between measurements [rad]
float32 time_increment # time between measurements [seconds] - if your scanner
# is moving, this will be used in interpolating position
# of 3d points
float32 scan_time # time between scans [seconds]
float32 range_min # minimum range value [m]
float32 range_max # maximum range value [m]
float32[] ranges # range data [m] (Note: values < range_min or > range_max should be discarded)
float32[] intensities # intensity data [device-specific units]. If your
# device does not provide intensities, please leave
# the array empty.
Compact Message Definition
std_msgs/Header header
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities
rosmsg show sensor_msgs/LaserScan
std_msgs/Header header
uint32 seq
time stamp
string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities
雷达的ROS包输出sensor_msgs/LaserScan消息,消息的格式如上所述,下为Hokuyo_node包输出的消息,供参考
---
header:
seq: 3185
stamp:
secs: 1511424845
nsecs: 985671531
frame_id: laser
angle_min: -2.08007788658
angle_max: 2.07394194603
angle_increment: 0.00613592332229
time_increment: 9.76562514552e-05
scan_time: 0.10000000149
range_min: 0.019999999553
range_max: 5.59999990463
ranges: [0.382999986410141, 0.382999986410141, 0.3889999985694885.......]
intensities: []
可以看出,雷达的数据按着扫描方式(顺时针或者逆时针)将返回的距离值存储到一个名为ranges[]的数组中。
期间有两种特殊数据,inf 或者 nan
NaN 即 Not a Number 非数字
INF 即 Infinite 无穷大
nan : Not a Number. C++官方文档给出了如下说明:
NaN值用于标识浮点元素的未定义或不可表示值,例如负数的平方根或0/0的结果。