1. 创建package(如果创建过可省略)
ros2 pkg create --build-type ament_python py_srvcli --dependencies rclpy example_interfaces
可以修改package.xml文件如下信息
<description>C++ client server tutorial</description>
<maintainer email="you@email.com">Your Name</maintainer>
<license>Apache License 2.0</license>
2. 编写client节点代码
2.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)
def send_request(self,a,b):
self.req.a = int(a)
self.req.b = int(b)
self.future = self.cli.call_async(self.req)
self.future.add_done_callback(self.call_back)
def call_back(self,future):
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()
<a name="Hi0Tq"></a>
## 2.2 添加配置
1. 打开setup.py文件,在console_scripts节点下添加配置
```python
'client = py_srvcli.client:main',
3. 编译工程
colcon build
4. 运行节点
ros2 run py_srvcli client