前言

有时候需要更改某个话题的频率,这里的话只有降低,没有提升哦,而且降低的话,只能按照倍数进行降低,例如,20变10,60变20这样子。

Codes

#!/usr/bin/python3
# -*- coding: utf-8 -*-


import rospy
from tf.msg import tfMessage
import time
from sensor_msgs.msg import Imu
from sensor_msgs.msg import LaserScan

class cl():
  def __init__(self):
    self.pub = rospy.Publisher('/horizontal_laser_2d1', LaserScan, queue_size=1)
    self.val = LaserScan()
    self.if_pub = True

    self.freq_multiple = 2
    self.freq_count = 1

  def func(self, data):
    self.val = data
    if self.if_pub:
      self.if_pub = False
      self.pub.publish(self.val)
    else:
      self.freq_count+=1
      if self.freq_count == self.freq_multiple:
        self.if_pub = True
        self.freq_count = 1
    

def main():
  c = cl()
  rospy.init_node('changefreq')
  rospy.Subscriber('/horizontal_laser_2d', LaserScan, c.func)
  rospy.spin()

if __name__ == '__main__':
  main()

注意事项

python版本号

第一行注释那个地方,需要针对进行修改,我用的是ubuntu20的noetic,默认版本是python3的,如果是ubuntu18及以下需要改为python

话题对接

可以看到我这里订阅的是/horizontal_laser_2d,出去的是/horizontal_laser_2d1,接话题的时候需要分清楚,还有就是这个程序只要进行相应的修改,是可以用于修改其他类型数据的话题的

降频方式

可以看到__init__(self)下的参数

  • self.freq_multiple

这个定义的是降频倍数,比如说我的laser数据是20hz的,这里设置为2,出来的laser数据是10hz的。
相应的,如果你的数据30hz,你想降频到10hz,只需要这里设置为3即可

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐