Python中使用SimpleActionClient()实现基本的动作通信
发布时间:2023-12-15 22:25:13
在Python中,可以使用SimpleActionClient()来实现基本的动作通信。SimpleActionClient()是ROS中提供的一个用于发送和接收动作消息的类。
下面是一个使用SimpleActionClient()实现简单动作通信的示例:
import rospy
import actionlib
from actionlib.msg import TestAction # 导入动作消息
# 定义动作反馈回调函数
def feedback_callback(feedback):
print('Received feedback:', feedback)
# 初始化ROS节点
rospy.init_node('action_client')
# 创建SimpleActionClient对象,参数为动作的名称
client = actionlib.SimpleActionClient('test_action', TestAction)
# 等待动作服务器启动
rospy.loginfo('Waiting for action server...')
client.wait_for_server()
# 创建动作目标对象
goal = TestAction.Goal()
goal.goal = 42
# 发送动作目标并指定反馈回调函数
client.send_goal(goal, feedback_cb=feedback_callback)
# 等待动作完成
client.wait_for_result()
# 获取动作的结果
result = client.get_result()
print('Action result:', result)
在上面的例子中,首先需要导入必要的库。然后,通过rospy.init_node()来初始化ROS节点。接下来,创建SimpleActionClient对象,其中的参数是动作的名称,这个名称需要与动作服务器中的名称相匹配。
然后,可以使用client.wait_for_server()来等待动作服务器启动。在等待期间,可以使用rospy.loginfo()来输出一些等待消息。
创建动作目标对象,并设置目标的值。通过调用client.send_goal()方法来发送目标,同时还可以指定一个反馈回调函数。反馈回调函数会在接收到动作反馈时被调用。
最后,使用client.wait_for_result()方法来等待动作完成,并使用client.get_result()来获取动作的结果。
以上就是一个简单的使用SimpleActionClient()实现基本动作通信的例子。通过这个例子,可以轻松地发送和接收动作消息,并处理动作的反馈和结果。
