给一个ros回调函数示例
时间: 2023-06-30 13:24:23 浏览: 109
好的,下面是一个ROS回调函数的示例,它会订阅一个名为 "/odom" 的里程计话题,当话题数据更新时,会执行回调函数 odomCallback(),打印机器人当前的位置信息。
```python
import rospy
from nav_msgs.msg import Odometry
def odomCallback(msg):
print("Robot position: x=%f, y=%f, z=%f" % (msg.pose.pose.position.x, msg.pose.pose.position.y, msg.pose.pose.position.z))
if __name__ == '__main__':
rospy.init_node('odom_subscriber')
rospy.Subscriber('/odom', Odometry, odomCallback)
rospy.spin()
```
在这个例子中,我们首先导入了 rospy 和 nav_msgs.msg 包。接着定义了一个名为 odomCallback() 的回调函数,它的参数是一个 Odometry 类型的消息对象 msg。在回调函数内部,我们通过 msg.pose.pose.position.x、msg.pose.pose.position.y 和 msg.pose.pose.position.z 三个属性获取了机器人当前的位置信息,并将其打印出来。最后,我们通过 rospy.Subscriber() 函数订阅了 "/odom" 话题,并将回调函数 odomCallback() 与之关联。最后,我们调用 rospy.spin() 函数以保持节点的运行。
阅读全文