ROS从入门到放弃(学习笔记1)
作者:互联网
最近在想着做机器人,机缘巧合接触到了ROS,在这里分享一下我学习ROS的经历。
首先就是安装ROS,安装ROS网上有很多资料可以查到,但是我在安装的时候初始化一直出问题,基本网上什么方法都尝试了,总是在最后一步失败,最后实在没办法了,就淘宝上买了一个ROS安装工具,很快就装好了。真香!
安装并测试好ROS以后,就是学习一些ROS的核心概念,这里我主要是看古月居的视频,我大概把我的理解说一下。(本篇文章只是把自己对基本概念的理解进行阐述)
1.1 ROS是什么
首先就是要知道ROS包括什么?在学习以后,我的理解是ROS是由通信机制、开发工具、应用功能、生态系统组成的集合,主要目标就是用来提高机器人研发中的软件复用率。接下来就可以从这四大部分了解ROS。
- 通信机制:ROS为我们提供了一个非常重要的松耦合分布式通信框架,这个框架可以抽象成一系列的节点图。
- 开发工具:ROS提供了诸如命令行&编译器、TF坐标变换、Rviz、QT工具箱、Gazebo等工具来帮助开发。
- 应用功能:ROS的应用功能是非常庞大的,我们无论开发机械臂还是无人机,任意的机器人都可以在ROS里面找到相关的原型。比如Navigation(导航)、SLAM(建图)、Movelt(机械臂运动规划)。
- 生态系统:ROS的生态系统包括:发行版(Distribution)、软件源(Repository)、ROS wiki、邮件列表(Mailing list)、ROS Answers、博客(Blog)。
- 发行版(Distribution):ROS发行版包括一系列带有版本号、可以直接安装的功能包。
- 软件源(Repository):ROS依赖于共享网络上的开源代码,不同的组织机构可以开发或者共享自己的机器人软件。
- ROS wiki:记录ROS信息文档的主要论坛。
- 邮件列表(Mailing list):交流ROS更新的主要渠道,同时也可以交流ROS开发的各种疑问。
- ROS Answers:咨询ROS相关问题的网站。
- 博客(Blog):发布ROS社区中的新闻、图片、视频(http://www.ros.org/news)。
1.2 ROS核心概念
- 节点和节点管理器:
- 节点(Node):是ROS中一个具体的执行单元,是用来执行某个具体功能的可独立运行的可执行文件。不同的节点可以使用不同的编程语言。
- 节点管理器(ROS Master):是ROS中的控制中心,是ROS 所有节点的管理者。所有的节点都需要去找节点管理器注册,节点管理器去记录节点的个各种信息,帮助节点之间建立联系。所以我们可以看到各个节点并不知道彼此的存在,他们都是通过节点管理器进行通信的。节点管理器另一个比较重要的功能就是,它可以提供参数服务器,节点可以使用此服务器存储和检索运行时的参数。
ROS为节点之间的通信设置了两种通信方式:话题和服务
- 话题通信:
- 话题(Topics):采用异步通信机制。使用发布者和订阅者模型,同一个话题的订阅者和发布者可以不唯一。话题的通信方式是单向数据的传输,节点可以发布信息到一个话题,同样也可订阅话题来接收消息。
- 消息(Messages):通道中传输的数据。用来描述传输话题数据的数据类型,有一定类型和数据结构。使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件。
- 服务通信:
- 服务(Service):采用同步通信机制。使用客户端/服务器(C/S)模型,由客户端发送请求数据,服务器完成处理后返回应答数据。使用编程语言无关的.srv文件定义请求和应答的数据结构,编程过程中生成对应的代码文件。
话题通信和服务通信的区别:
个人认为,话题通信类似于写信,我们很难及时得到对方的反馈,而服务通信就类似于打电话,很快我们就可以得到对方的反馈。以下则是更加全面的对比:
- 参数(Parameter):我们知道,节点管理器另一个比较重要的功能就是,它可以提供参数服务器,它会保存一些参数作为一个全局的共享字典。所有节点都可以通过网络来访问这个共享字典,字典里面的数据类型是多变的,变量的名字和变量的值都是要存到字典里面的。参数适合存储静态、非二进制的配置参数,不适合存储动态配置的参数。
- 文件系统
- 功能包(Package):ROS软件中的基本单元,包含节点源码、配置文件、数据定义等。
- 功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编辑标志等。
- 元功能包(Meta Package):组织多个用于同一目的的功能包。
标签:功能,管理器,入门,通信,笔记,话题,ROS,节点 来源: https://blog.csdn.net/lightningwl/article/details/119901184