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入门概念相关推荐

  1. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  2. CCNA-第一篇-基础入门概念

    ** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很 ...

  3. 大数据入门概念及应用场景

    参考内容: [知乎]深入浅出大数据:到底什么是Hadoop? [知乎]五万字 | Hive知识体系保姆级教程​ 大数据入门概念及应用场景 一.入门概念 1.1 大数据的4V 1.2 大数据处理的最佳工 ...

  4. ROS2 基础概念 节点

    ROS2 基础概念 节点 1. Nodes 2. 重映射 3. 环境设置 3.1. ROS_DOMAIN_ID 3.2. ROS_LOCALHOST_ONLY 1. Nodes 每个节点应负责单个模块 ...

  5. 一、 网络安全基础入门-概念名词

    目录 网络安全学习(2022.10.23) 一.基础入门--概念名词 DNS 脚本语言 后门(2022.11.06) WEB WEB相关安全漏洞 演示案例 网络安全学习(2022.10.23) 一.基 ...

  6. ROS2 基础概念 服务

    ROS2 基础概念 服务 1. Services 2. 服务 3. 服务类型 4. 查找服务 5. 服务请求 1. Services 服务基于 请求-应答 模型,而不是话题的 发布-订阅 模型 虽然话 ...

  7. ROS2入门教程—理解话题(Topic)

    ROS2入门教程-理解话题(Topic) 1 启动小海龟仿真器 2 rqt_graph 3 ros2 topic list 4 ros2 topic echo 5 ros2 topic info 6 ...

  8. ROS2 基础概念 话题

    ROS2 基础概念 话题 1. Topics 2. rqt_graph 3. 话题 4. 话题类型 5. 话题发布 6. 话题频率 1. Topics 话题是节点交换消息的总线 节点可以向任意数量的话 ...

  9. ROS2 基础概念 参数

    ROS2 基础概念 参数 1. Parameters 2. 参数 3. 参数查看 4. 参数设置 5. 参数保存 6. 参数加载 1. Parameters 指令 功能 ros2 param dele ...

最新文章

  1. 李兴华html css,2014MLDN(李兴华老师视频教程)
  2. c语言抓取机器硬件阐述,c语言如何控制硬件
  3. php 内置mail 包,配置php自带的mail功能
  4. java中避免空指针_在Java中避免空检查
  5. XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax
  6. C#文件流传输[类似于QQ][引]
  7. jquery mobile 技巧总结
  8. Hadoop权威指南(中文版,第2版)【分享】
  9. Windows mobile 下读取手机SIM卡信息
  10. JS字符串的常用操作函数
  11. tomcat并发优化
  12. 接口测试工具-Jmeter使用笔记(六:从文本读取参数)
  13. html5 plus 图片下载保存到手机相册
  14. ATMEL芯片系列介绍2
  15. TVU与纳加联合推出具备多网聚合功能的全能导播台
  16. 停用词是什么?常用中文停用词
  17. 基于深度对抗学习的智能模糊数据生成方法
  18. Win勒索病毒害惨中国学生!微软:最新Win10很安全
  19. Android Received status code 502 from server: Bad Gateway
  20. Java面向对象的编程⑤面向对象

热门文章

  1. dcp9030cdn定影_兄弟Brother DCP-9030CDN打印机驱动(修复DCP-9030CDN打印机连接故障)V1.0 正式版...
  2. python数组分成两个和相等的子集_前端面试2
  3. 计算机辅助设计与制造专业课程,《计算机辅助设计与制造》课程实验指导书
  4. httpd svn 编译安装_CentOS 6 编译安装Subversion-1.8.10+Apache2.4
  5. 特征编码1 - 特征编码概述与分类
  6. selenium设置js加载的时限,防止持续加载页面
  7. 时间序列趋势判断(一)——斜率阈值判断
  8. linux iptables_linux 开启独立iptables日志
  9. python串口模块_Python使用pip安装pySerial串口通讯模块
  10. php重定向error,将nginx错误重定向到php