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
我是 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