Python中实现SimpleActionServer()的步骤
在Python中,可以使用 simplaction_server 模块中的 SimpleActionServer 类来实现一个简单的Action Server。SimpleActionServer 类提供了一个方便的接口,用于处理Action请求和生成Action结果。下面是使用例子,以说明如何在Python中实现 SimpleActionServer。
步骤1:引入相应的模块和消息类型
首先,我们需要引入相应的模块和消息类型。在这个例子中,我们将使用一个名为 MyAction 的自定义Action消息类型。
import rospy import actionlib from my_package.msg import MyAction, MyActionGoal, MyActionResult
步骤2:实现一个回调函数来处理Action请求
接下来,我们需要实现一个回调函数,用于处理Action请求。在这个例子中,我们的回调函数将简单地在控制台上打印收到的目标(goal)。
def goal_callback(goal):
print("Received goal: {}".format(goal))
步骤3:初始化Action Server
然后,我们需要初始化Action Server。在初始化过程中,我们需要指定Action类型和处理目标的回调函数。
rospy.init_node("action_server_node")
server = actionlib.SimpleActionServer(
"my_action", # Action名称,应与客户端匹配
MyAction, # Action消息类型
goal_callback, # 处理目标的回调函数
False # 自动启动Action Server
)
步骤4:启动Action Server
最后,我们需要启动Action Server,开始监听Action请求。在启动之前,我们可以选择调用 server.start(),或者设为自动启动(在初始化时设置为 True)。
server.start() rospy.spin()
完整的示例代码如下所示:
import rospy
import actionlib
from my_package.msg import MyAction, MyActionGoal, MyActionResult
def goal_callback(goal):
print("Received goal: {}".format(goal))
rospy.init_node("action_server_node")
server = actionlib.SimpleActionServer(
"my_action",
MyAction,
goal_callback,
False
)
server.start()
rospy.spin()
在上述例子中,我们创建了一个名为 my_action 的Action Server,并将其与 MyAction 消息类型相关联。在收到Action请求时,我们的回调函数 goal_callback 将被调用,并打印收到的目标。
需要注意的是,我们需要根据实际的项目设置正确的消息类型和回调函数,以确保Action Server能正确地处理收到的请求。
希望这个例子能够帮助你理解如何在Python中使用 SimpleActionServer 实现一个简单的Action Server。
