点点滴滴积累,以备后查。2017.09.06-乐
节点订阅
语言:python2.7
ROS:kinetic
ubuntu: 16.04
订阅话题,需要用到callback回调函数除了message外增加其他参数,查阅具体API函数实现方式有两种,
一种是初始化的时候设定:
__init__(self, name, data_class, callback=None, callback_args=None, queue_size=None, buff_size=65536, tcp_nodelay=False)(self, name, data_class, callback=None, callback_args=None, queue_size=None, buff_size=DEFAULT_BUFF_SIZE, tcp_nodelay=False):
具体应用:
def callback(msg, ser):
sub = rospy.subscriber('DasherGo_control',DasherGo_msgs,callback,ser)
一种是初始化不指明回调函数,调用方法实现:
def add_callback(self, cb, cb_args):
具体应用:
def callback(msg, ser):
sub = rospy.subscriber('DasherGo_control',DasherGo_msgs)
sub.add_callback(callback,ser)
实验结果:
待补充验证
ROS激光应用
参考资料
sensor_msgs/LaserScan.msg
# Single scan from a planar laser range-finder
#
# 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.