1. 创建package(如果创建过可省略)

  1. ros2 pkg create --build-type ament_python py_srvcli --dependencies rclpy example_interfaces

可以修改package.xml文件如下信息

  1. <description>C++ client server tutorial</description>
  2. <maintainer email="you@email.com">Your Name</maintainer>
  3. <license>Apache License 2.0</license>

2. 编写client节点代码

2.1 编写代码

  1. 在package的py_srvcli下创建client.py文件,代码如下 ```python import rclpy from rclpy.node import Node from example_interfaces.srv import AddTwoInts import time

class MyNode(Node): def init(self): super(MyNode, self).init(‘py_client’) self.cli = self.create_client(AddTwoInts,’py_service’) while not self.cli.wait_for_service(timeout_sec=1.0): self.get_logger().info(‘service not available,waiting again…’) self.req = AddTwoInts.Request() time.sleep(3) self.send_request(10,20)

  1. def send_request(self,a,b):
  2. self.req.a = int(a)
  3. self.req.b = int(b)
  4. self.future = self.cli.call_async(self.req)
  5. self.future.add_done_callback(self.call_back)
  6. def call_back(self,future):
  7. self.get_logger().info(f'receive response {future.result().sum}')

def main(): rclpy.init() node = MyNode() rclpy.spin(node) node.destroy_node() rclpy.shutdown()

if name == ‘main‘: main()

  1. <a name="Hi0Tq"></a>
  2. ## 2.2 添加配置
  3. 1. 打开setup.py文件,在console_scripts节点下添加配置
  4. ```python
  5. 'client = py_srvcli.client:main',

3. 编译工程

  1. colcon build

4. 运行节点

  1. ros2 run py_srvcli client