actionlib get_result()用法c++
时间: 2024-09-14 16:06:38 浏览: 43
[Oracle] dbms_metadata.get_ddl 的使用方法总结
在C++中,如果你使用了ActionLib库来编写服务客户端,当你调用同步的`sendGoal()`发送了一个Action(比如`YourActionType`),然后通过`waitForResult()`等待该Action执行完毕后,你可以使用`get_result()`方法来获取执行的结果。
以下是一个简单的例子:
```cpp
#include <actionlib/client/simple_action_client.h>
#include <your_action_type.action>
// 创建Action Client实例
actionlib::SimpleActionClient<YourActionType> ac("your_action_server", "your_action_name");
// 确保Action Server已经启动并就绪
ac.waitForServer();
// 创建一个Action Goal
YourActionGoal goal;
// 设置Action的参数...
goal.field1 = "value1";
goal.field2 = 42;
// 发送同步请求
ac.sendGoal(goal);
// 等待Action执行完毕,获取结果
YourActionResult result;
if (ac.waitForResult(result, ros::Duration(ros::.Duration::fromSec(60)))) { // 设置一个较长时间的超时
// 如果Action成功完成,打印结果
std::cout << "Action executed successfully with result: " << result.get_result().msg << std::endl;
} else {
// 如果超时或者Action执行失败,处理错误
std::cerr << "Action failed: " << ac.getStateText() << std::endl;
}
// 结束Action客户端连接
ac.cancelAllGoals();
```
这里的`get_result()`方法用于从`YourActionResult`对象中提取出实际的动作结果数据。注意,你需要先调用`waitForResult()`来保证Action已成功执行。
阅读全文