ROS改变话题频率,降低雷达数据的频率

该博客介绍了一个使用ROS(Robot Operating System)实现的话题降频方法。代码中创建了一个节点,订阅原始激光雷达数据,然后按照设定的降频倍数(如20Hz降至10Hz)发布处理后的数据。该程序可用于调整任何类型ROS话题的更新频率。
摘要由CSDN通过智能技术生成

前言

有时候需要更改某个话题的频率,这里的话只有降低,没有提升哦,而且降低的话,只能按照倍数进行降低,例如,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即可

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值