三 [ROS]LaserScan消息的学习

本文介绍了LaserScan消息的格式以及各个参数的意义,并且在文章的最后编写了一个subscriber用来读取激光数据.

LaserScan是ROS定义的激光数据格式,消息定义在sensor_msgs/LaserScan.msg文件中,路径为:/opt/ros/indigo/share/sensor_msgs/msg.


LaserScan的消息如下:

Header header

# Header也是一个结构体,包含了seq,stamp,frame_id,其中seq指的是扫描顺序增加的id,stamp包含了开始扫描的时间和与开始扫描的时间差,frame_id是扫描的参考系名称.注意扫描是逆时针从正前方开始扫描的.

float32 angle_min                # 开始扫描的角度(角度)

float32 angle_max               # 结束扫描的角度(角度)

float32 angle_increment      # 每一次扫描增加的角度(角度)

float32 time_increment        # 测量的时间间隔(s)

float32 scan_time                 # 扫描的时间间隔(s)

float32 range_min                 # 距离最小值(m)

float32 range_max                # 距离最大值(m)

float32[] ranges                      # 距离数组(长度360)

float32[] intensities                 # 与设备有关,强度数组(长度360)



了解了LaserScan的数据格式,下面将编写一个订阅器用来接收LaserScan消息(假设roscore和laser都已经启动):


三 [ROS]LaserScan消息的学习_第1张图片

laser_listener.py



#!/usr/bin/env python

import rospy

from sensor_msgs.msg import LaserScan

def callback(scan):

rospy.loginfo('header: {0}'.format(scan))

def listener():

rospy.init_node('lasr_listener', anonymous=False)

rospy.Subscriber('scan', LaserScan,callback)

rospy.spin()

if __name__ == '__main__':

listener()



python laser_listener.py

你可能感兴趣的:(三 [ROS]LaserScan消息的学习)