Python 回调参数问题

Python callback argument issue

我是 python 的新手。我有以下代码:

#! /usr/bin/env python

import rospy
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist

#defines a callback
def callback(msg):
    rospy.init_node('obstacle_avoidance')
    pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)
    rate = rospy.Rate(1)

    while not rospy.is_shutdown():
        print('==================================')

        print('CHECKING .....')
        print msg.ranges


if __name__ == '__main__':
    try:
        callback()
    except rospy.ROSInterruptException:
        pass

响应如下:

TypeError: callback() takes exactly 1 argument (0 given)

我明白错误在说什么,但是 msg 变量不是我定义的,所以我不确定要传递什么。

您似乎以一种行不通的方式组合了 2 个教程。您调用 callback() 但没有提供导致它崩溃的参数,因为 callback() 需要一个参数。

然后在函数中使用 msg.ranges。 (这是一个激光消息的想法)。

你或许应该这样做

#! /usr/bin/env python

import rospy
from sensor_msgs.msg import LaserScan
from geometry_msgs.msg import Twist

#defines a callback
def callback(msg):
    while not rospy.is_shutdown():
        print('==================================')
        print('CHECKING .....')
        print msg.ranges


if __name__ == '__main__':
    try:
        rospy.init_node('obstacle_avoidance')
        pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)
        rospy.Subscriber('/base_scan', LaserScan, callback)
    except rospy.ROSInterruptException:
        pass