使用 Python 和 C++ 分别实现一个简单的 ROS 2 节点,启动时向控制台输出“你好”信 息。该节点会每隔 2 秒发送一次问候信息,模拟一个简单的发布者节点。
时间: 2024-10-21 12:18:15 浏览: 24
在ROS 2中,Python和C++都是常见的语言来编写节点。以下是两个简单示例:
**Python实现:**
```python
# 导入必要的ROS模块
import rclpy
from rclpy.node import Node
class GreetingNode(Node):
def __init__(self):
super().__init__('greeting_node')
self.timer = self.create_timer(2, self.send_greeting)
def send_greeting(self):
msg = "你好"
self.get_logger().info(msg)
def main(args=None):
rclpy.init(args=args)
node = GreetingNode()
try:
rclpy.spin(node)
except KeyboardInterrupt:
pass
finally:
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
运行这个脚本,它会在控制台上每隔两秒打印出"你好"。
**C++实现 (using the rclcpp库):**
```cpp
#include <rclcpp/rclcpp.hpp>
#include <iostream>
class GreetingNode : public rclcpp::Node {
public:
GreetingNode(rclcpp::NodeOptions options) : Node("greeting_node", options) {
auto timer = this->create_wall_timer(std::chrono::seconds(2),
std::bind(&GreetingNode::send_greeting, this));
}
private:
void send_greeting() {
RCLCPP_INFO(get_logger(), "你好");
}
};
int main(int argc, char ** argv) {
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared<GreetingNode>();
rclcpp::spin(node);
rclcpp::shutdown();
return 0;
}
```
同样,C++节点会在控制台上每隔两秒输出"你好"。
阅读全文