TypeError:las_callback()正好接受2个参数(给定1个)

2024-04-29 20:09:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在sensor_msgs/LaserScan.msg中使用空间中值滤波。这是我的python代码:

#!/usr/bin/env python
"""
"""

import rospy

from sensor_msgs.msg import LaserScan

def las_callback(self, msg):

    data_list=list(msg.ranges)

    self.median_ranges=[]

    self.median_filter_size=3

    for i in range(0, len(data_list)):

        if (i>= self.median_filter_size and i<(len(data_list)-self.median_filter_size)):

            media_call=median(data_list[i-self.median_filter_size:i+self.median_filter_size+1])

            self.median_ranges.append(median_call)

    print(media_call)


rospy.init_node('laser_readings')
sub = rospy.Subscriber('/base_scan', LaserScan, las_callback)
rospy.spin()

当我尝试运行此代码时,它向我显示了一条令人担忧的消息:

[ERROR] [1607831425.437657, 1678.699000]: bad callback: <function las_callback at 0x7fb50adbddd0>
Traceback (most recent call last):
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/topics.py", line 750, in _invoke_callback
    cb(msg)
TypeError: las_callback() takes exactly 2 arguments (1 given)

我怎样才能解决这个问题?谢谢你的帮助


Tags: selfdatasizecallbackmsgsensorcallfilter
1条回答
网友
1楼 · 发布于 2024-04-29 20:09:47

您没有具有self的对象,因此请创建一个对象或从函数中删除self

def las_callback(self, msg):

并使用全局变量

相关问题 更多 >