ROS2中创建节点和话题
时间: 2024-09-22 18:06:41 浏览: 77
ROS2(Robot Operating System version 2)是一个针对机器人系统的开源框架,它采用分层架构,其中一个基础组件就是节点(Nodes)。在ROS2中,节点负责处理消息、执行任务并与其他节点交互。
要创建一个节点,首先需要安装ros2包管理工具,并创建一个新的C++或Python项目。以下是步骤:
1. **创建节点**:
- 使用`ros2 node create [node_name]`命令,这里`[node_name]`是你自定义的节点名称,如`my_node`。
- 这将生成一个包含启动脚本和默认的模板文件的目录,用于编写节点代码。
2. **编写代码**:
- C++节点通常会有一个`.cpp`文件和`.msg`(用于数据交换的消息定义)文件。在`.cpp`中,你需要初始化NodeHandle对象,然后定义和服务相关的回调函数,如果需要的话还可以创建发布者(Publishers)和订阅者(Subscribers)来发送和接收Topic数据。
- Python节点则直接在.py文件中编写,使用`rclpy.create_node()`创建节点,通过`rclpy.Publisher()`和`rclpy.Subscriber()`创建Topic。
3. **运行节点**:
- 打开终端,进入节点目录,运行`source /opt/ros/<ros_distro>/setup.bash`设置ROS环境,然后执行`./your_node_name`(取决于是否为C++或Python)启动你的节点。
4. **创建话题(Topics)**:
- 发布者是向Topic发布数据的一方,订阅者则是接收数据的一方。你可以使用上述提到的`Publisher`和`Subscriber`来创建它们。例如,创建一个发布字符串数据的topic:
```cpp
rclcpp::Publisher<std_msgs::msg::String> pub;
pub = nh->create_publisher<std_msgs::msg::String>("my_topic", 10);
```
- 类似的,Python版:
```python
publisher = rclpy.create_publisher(String, 'my_topic', 10)
```
阅读全文