ros2节点同时包含服务和话题c++示例
时间: 2024-04-30 07:20:35 浏览: 120
ros2_examples:单个ROS2功能公司的示例订户,发布者,计时器,服务,参数。 ..
以下是一个使用ROS 2 Python编写的节点,它同时包含服务和话题:
```python
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
from example_interfaces.srv import AddTwoInts
class MyNode(Node):
def __init__(self):
super().__init__('my_node')
self.publisher_ = self.create_publisher(String, 'my_topic', 10)
self.subscription_ = self.create_subscription(String, 'my_topic', self.listener_callback, 10)
self.service_ = self.create_service(AddTwoInts, 'add_two_ints', self.add_two_ints_callback)
def listener_callback(self, msg):
self.get_logger().info('I heard: "%s"' % msg.data)
def add_two_ints_callback(self, request, response):
response.sum = request.a + request.b
self.get_logger().info('Received request: %d + %d = %d' % (request.a, request.b, response.sum))
return response
def main(args=None):
rclpy.init(args=args)
node = MyNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
在这个例子中,节点创建了一个发布者和订阅者,它们都使用了名为 `my_topic` 的话题。节点还创建了一个名为 `add_two_ints` 的服务,该服务接收两个整数并返回它们的和。
注意,该节点使用了两个消息类型:String 和 AddTwoInts。如果您要运行此节点,请确保您已经安装了这些消息类型所在的软件包。
阅读全文