当前位置: 首页 > news >正文

改进网站建设软件网站排行榜

改进网站建设,软件网站排行榜,海外网站建设平台,开封网站建设哪家好ROS2 入门应用 请求和应答(Python)1. 创建功能包1. 创建功能包2. 创建源文件2.1. 服务端2.2. 客户端3. 添加依赖关系4. 添加入口点5. 编译和运行1. 创建功能包 1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加载了ros2_ws工作空间 在《ROS2 入…

ROS2 入门应用 请求和应答(Python)

  • 1. 创建功能包
  • 1. 创建功能包
  • 2. 创建源文件
    • 2.1. 服务端
    • 2.2. 客户端
  • 3. 添加依赖关系
  • 4. 添加入口点
  • 5. 编译和运行


1. 创建功能包

1. 创建功能包

在《ROS2 入门应用 工作空间》中已创建和加载了ros2_ws工作空间
在《ROS2 入门应用 元功能包(C++)》中已创建和加载了my_package功能包
那么就创建一个独立的py_srvcli功能包来做服务的请求和应答的功能

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python py_srvcli --dependencies rclpy example_interfaces

--dependencies可选参数将会自动在package.xmlCMakeLists.txt中添加必要的依赖行

依赖example_interfaces包,将会使用到example_interfacessrv文件,两位整数求和服务:

int64 a
int64 b
---
int64 sum

2. 创建源文件

进入py_srvcli功能包的py_srvcli文件夹

cd ~/ros2_ws/src/py_srvcli/py_srvcli

2.1. 服务端

新建service_member_function.py服务端源文件

nano service_member_function.py

复制以下内容到文件中:

from example_interfaces.srv import AddTwoIntsimport rclpy
from rclpy.node import Nodeclass MinimalService(Node):'''服务端节点类'''def __init__(self):# 初始化节点super().__init__('minimal_service')# 初始化服务端,服务类型AddTwoInts,服务add_two_ints,回调函数add_two_ints_callbackself.srv = self.create_service(AddTwoInts, 'add_two_ints', self.add_two_ints_callback)def add_two_ints_callback(self, request, response):'''服务端回调函数'''# 从请求request中添加两个整数,并将总和提供给响应responseresponse.sum = request.a + request.bself.get_logger().info('Incoming request\na: %d b: %d' % (request.a, request.b))return responsedef main():# 初始化ROS2rclpy.init()# 创建服务端节点minimal_service = MinimalService()# 运行服务端节点rclpy.spin(minimal_service)# 退出ROS2rclpy.shutdown()if __name__ == '__main__':main()

2.2. 客户端

新建client_member_function.py客户端源文件

nano client_member_function.py

复制以下内容到文件中:

import sysfrom example_interfaces.srv import AddTwoInts
import rclpy
from rclpy.node import Nodeclass MinimalClientAsync(Node):'''客户端节点类'''def __init__(self):# 初始化节点super().__init__('minimal_client_async')# 初始化客户端,服务类型AddTwoInts,服务add_two_intsself.cli = self.create_client(AddTwoInts, 'add_two_ints')# 搜索服务节点,间隔1swhile not self.cli.wait_for_service(timeout_sec=1.0):self.get_logger().info('service not available, waiting again...')# 定义请求self.req = AddTwoInts.Request()def send_request(self, a, b):'''请求发送函数'''self.req.a = aself.req.b = b# 发送请求self.future = self.cli.call_async(self.req)# 等待至发送请求得到应答rclpy.spin_until_future_complete(self, self.future)# 返回应答结果return self.future.result()def main():# 初始化ROS2rclpy.init()# 创建客户端节点minimal_client = MinimalClientAsync()# 请求发送response = minimal_client.send_request(int(sys.argv[1]), int(sys.argv[2]))# 显示请求-应答状态minimal_client.get_logger().info('Result of add_two_ints: for %d + %d = %d' %(int(sys.argv[1]), int(sys.argv[2]), response.sum))# 销毁节点,退出ROS2minimal_client.destroy_node()rclpy.shutdown()if __name__ == '__main__':main()

3. 添加依赖关系

创建功能包时,已通过--dependencies可选参数自动在package.xml中添加必要的依赖行

<depend>rclpy</depend>
<depend>example_interfaces</depend>

4. 添加入口点

打开 setup.py 文件
entry_points入口字段的console_scripts控制台脚本的括号中添加以下两行:

entry_points={'console_scripts': ['service = py_srvcli.service_member_function:main','client = py_srvcli.client_member_function:main',],
},

添加一个入口点py_srvcli功能包的service_member_function源文件的main函数,并命名为service
添加一个入口点py_srvcli功能包的client_member_function源文件的main函数,并命名为client


5. 编译和运行

进入工作空间根目录

cd ~/ros2_ws

在编译之前检查缺失的依赖项(可跳过):

rosdep install -i --from-path src --rosdistro humble -y

编译:

colcon build --packages-select py_srvcli

打开一个新终端,运行服务端节点准备应答:

ros2 run py_srvcli service

打开一个新终端,运行客户端节点发送请求:

ros2 run py_srvcli client 1 2# [INFO] [minimal_client_async]: Result of add_two_ints: for 1 + 2 = 3

谢谢

http://www.dinnco.com/news/982.html

相关文章:

  • 唐山模板建站系统百度怎么发布自己的广告
  • 各种类型网站建设牛推网
  • 罗湖高端网站设计收录优美图片找不到了
  • 模仿别人网站侵权成人短期培训能学什么
  • 精品网站要建设需要多少钱软件排名优化
  • 济南做网站个人网站推广多少钱一年
  • 在哪些网站上申请做广告可以在百度引擎能收到关键字网络培训心得体会5篇
  • 江门市专业做网站公司互联网营销方式
  • 网站标题和关键词一样百度网站名称和网址
  • 电商网站开发论文程序员培训机构排名前十
  • 电子商务网站设计与实现昆明seo关键字推广
  • 怎么把个人做的网站发布到网上网站seo优化总结
  • 网站写手怎么做北京推广服务
  • 网页是网站吗做一个电商平台大概需要多少钱
  • 网页制作与网站建设完全学习手册光盘上海优质网站seo有哪些
  • 淘宝联盟推广网站怎么做网站seo优化运营
  • 4网站免费建站济南百度推广代理商
  • 展示类网站建设免费手机优化大师下载安装
  • 设计素材网站图片东莞网络营销信息推荐
  • 重庆网站制作哪家好app注册推广任务平台
  • 做海外批发有什么好的网站好嘉兴网站建设制作
  • 网站开发心路历程品牌运营公司
  • 合肥高新城创建设投资有限公司网站seo工资待遇怎么样
  • 广州哪个区有疫情苏州优化seo
  • 做神马网站优化百度网络营销app
  • 做一钓鱼网站国外网站制作
  • 一个域名可以做多少个二级网站b站2023年免费入口
  • 枣阳网站建设等服务淘宝关键词优化
  • 在线做数据图的网站有哪些问题怎样做好销售和客户交流
  • 一个网站交互怎么做的汕头网站关键词推广