RCLCPP_COMPONENTS_REGISTER_NODE(ActionServer)
时间: 2024-09-21 09:03:13 浏览: 20
`rclcpp_components_register_node` 是 ROS 2 中用于注册 C++ 组件节点的宏,它允许您创建并注册一个 Action Server[^2]。在 Action Framework 中,Action Server 提供了一个机制来执行异步操作(actions),比如 Fibonacci 动作客户端示例[^1]中展示的那样。
当你定义一个 action 类型并且准备提供服务时,你需要按照以下步骤操作:
1. 定义 action 类型(如 FibonacciAction 为例):
```cpp
// 在头文件中声明 action 类型
struct FibonacciAction : public rclcpp_action::Action<FibonacciGoal, FibonacciResult> {
// ...
};
```
2. 实现 action 服务器类,继承自 `rclcpp_action::ActionServer`:
```cpp
class FibonacciActionServer : public rclcpp_action::ActionServer<FibonacciAction>
{
// 构造函数和服务器初始化
FibonacciActionServer(rclcpp_node::Node::SharedPtr node, const std::string & topic_name)
: ActionServer(node, topic_name, "fibonacci") {}
// 接收请求,处理逻辑
void execute_goal_callback(const rclcpp_action:: GoalCallbackContext & context) override;
};
```
3. 注册组件节点:
```cpp
RCLCPP_COMPONENTS_REGISTER_NODE(ActionServer, FibonacciActionServer)
```
这行代码告诉 ROS 系统,你应该创建一个名为 `FibonacciActionServer` 的节点,该节点负责 Fibonacci 动作服务。完整的注册过程是在 `execute_goal_callback` 函数中调用的,当有新的 Fibonacci 请求到达时,服务器会开始处理。