8002.ros2入门概念
2 ros2 入门基本概念
# 创客智造网站.
https://www.ncnynl.com/archives/201801/2251.html
基本概念:
- ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。
- ROS2系统的核心部分是ROS网络(ROS Graph)。
- ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。
- ROS Graph这里翻译成了ROS网络,因为我觉得Graph更加抽象,而网络的概念更容易帮助理解其内涵。
ROS网络(ROS Graph)概念简介:
- 节点(Nodes): 一个节点是一个利用ROS系统和其他节点通信的实体
- 消息(Messages): ROS中在订阅和发布主题时所用到的数据结构
- 主题(Topics): 节点可以发布信息到一个主题,同样也可订阅主题来接收消息
- 发现(Discovery): 一个自动运行的进程,通过这个进程不同的节点相互发现,建立连接
节点(Nodes)
- 一个节点就是一个在ROS网络中的参与者。
- ROS节点通过ROS客户端程序库(ROS client library)来和其他节点进行通信。
- 节点可以发布或者订阅主题 节点也可以提供ROS服务(Service)。
- 节点有很多可以配置的相关参数。
- 节点间的连接时通过一个分布式发现进程来建立的(即上面所说的发现)。
- 不同的节点可以在同一个进程里面,也可以在不同的进程里面,甚至可以在不同的机器上。
客户端程序库
- ROS客户端程序库可以让不同的语言编写的节点进行通信。
- 在不同的编程语言中都有对应的ROS客户端程序库(RCL),这个程序库实现了ROS的基本API。
- 这样就确保了不同的编程语言的客户端更加容易编写,也保证了其行为更加一致。
- 下面的客户端程序库是由ROS2团队维护的
- rclcpp = C++ 客户端程序库
- rclpy = Python 客户端程序库
- 另外其他客户端程序也已经有ROS社区开发出来。 可以看[[ROS 客户端程序库]]来了解详细信息
发现
- 节点之间的互相发现是通过ROS2底层的中间件实现的。
- 过程总结如下
- 当一个节点启动后, 它会向其他拥有相同ROS域名的节点进行广播,说明它已经上线。
- ROS域名(ROS domain, 可以通过设置ROS_DOMAIN_ID环境变量来设置)
- 其他节点在收到广播后返回自己的相关信息,这样节点间的连接就可以建立了,之后就可以通信了。
- 节点会定时广播它的信息,这样即使它已经错过了最初的发现过程,它也可以和新上线的节点进行连接。
- 节点在下线前它也会广播其他节点自己要下线了。
- 节点只会和具有相兼容的[服务质量]设置的节点进行通信。
例子:发布和接收
- 在一个终端,启动一个节点(用C++编写),这个节点会向一个主题发布消息
ros2 run demo_nodes_cpp talker
- 在另一个终端,同样启动一个节点(用Python编写),这个节点会订阅和上个节点相同的主题来接收消息。
ros2 run demo_nodes_py listener
- 你会看到节点自动发现了对方,然后开始互相通信。
- 你也可以在不同的电脑上启动节点,你也会发现,节点自动建立了它们的连接,然后开始通信。
8002.ros2入门概念相关推荐
- C功底挑战Java菜鸟入门概念干货(一)
一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行. 2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...
- CCNA-第一篇-基础入门概念
** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很 ...
- 大数据入门概念及应用场景
参考内容: [知乎]深入浅出大数据:到底什么是Hadoop? [知乎]五万字 | Hive知识体系保姆级教程 大数据入门概念及应用场景 一.入门概念 1.1 大数据的4V 1.2 大数据处理的最佳工 ...
- ROS2 基础概念 节点
ROS2 基础概念 节点 1. Nodes 2. 重映射 3. 环境设置 3.1. ROS_DOMAIN_ID 3.2. ROS_LOCALHOST_ONLY 1. Nodes 每个节点应负责单个模块 ...
- 一、 网络安全基础入门-概念名词
目录 网络安全学习(2022.10.23) 一.基础入门--概念名词 DNS 脚本语言 后门(2022.11.06) WEB WEB相关安全漏洞 演示案例 网络安全学习(2022.10.23) 一.基 ...
- ROS2 基础概念 服务
ROS2 基础概念 服务 1. Services 2. 服务 3. 服务类型 4. 查找服务 5. 服务请求 1. Services 服务基于 请求-应答 模型,而不是话题的 发布-订阅 模型 虽然话 ...
- ROS2入门教程—理解话题(Topic)
ROS2入门教程-理解话题(Topic) 1 启动小海龟仿真器 2 rqt_graph 3 ros2 topic list 4 ros2 topic echo 5 ros2 topic info 6 ...
- ROS2 基础概念 话题
ROS2 基础概念 话题 1. Topics 2. rqt_graph 3. 话题 4. 话题类型 5. 话题发布 6. 话题频率 1. Topics 话题是节点交换消息的总线 节点可以向任意数量的话 ...
- ROS2 基础概念 参数
ROS2 基础概念 参数 1. Parameters 2. 参数 3. 参数查看 4. 参数设置 5. 参数保存 6. 参数加载 1. Parameters 指令 功能 ros2 param dele ...
最新文章
- 李兴华html css,2014MLDN(李兴华老师视频教程)
- c语言抓取机器硬件阐述,c语言如何控制硬件
- php 内置mail 包,配置php自带的mail功能
- java中避免空指针_在Java中避免空检查
- XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax
- C#文件流传输[类似于QQ][引]
- jquery mobile 技巧总结
- Hadoop权威指南(中文版,第2版)【分享】
- Windows mobile 下读取手机SIM卡信息
- JS字符串的常用操作函数
- tomcat并发优化
- 接口测试工具-Jmeter使用笔记(六:从文本读取参数)
- html5 plus 图片下载保存到手机相册
- ATMEL芯片系列介绍2
- TVU与纳加联合推出具备多网聚合功能的全能导播台
- 停用词是什么?常用中文停用词
- 基于深度对抗学习的智能模糊数据生成方法
- Win勒索病毒害惨中国学生!微软:最新Win10很安全
- Android Received status code 502 from server: Bad Gateway
- Java面向对象的编程⑤面向对象
热门文章
- dcp9030cdn定影_兄弟Brother DCP-9030CDN打印机驱动(修复DCP-9030CDN打印机连接故障)V1.0 正式版...
- python数组分成两个和相等的子集_前端面试2
- 计算机辅助设计与制造专业课程,《计算机辅助设计与制造》课程实验指导书
- httpd svn 编译安装_CentOS 6 编译安装Subversion-1.8.10+Apache2.4
- 特征编码1 - 特征编码概述与分类
- selenium设置js加载的时限,防止持续加载页面
- 时间序列趋势判断(一)——斜率阈值判断
- linux iptables_linux 开启独立iptables日志
- python串口模块_Python使用pip安装pySerial串口通讯模块
- php重定向error,将nginx错误重定向到php