本文一些内容是从哔哩哔哩视频网站的古月老师的ROS课程学习整理的,附上相关网址:
https://www.bilibili.com/video/av59458869?p=7
1.ROS简介
(1)定义
ROS是一个开放源代码的机器人元操作系统。它提供了 我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间 的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。
(2)目的
建立一个在全球范围内协作开发机器人软件的环境
(3)特征
- 分布式进程:它以可执行进程的最小单位(节点,Node)的形式进行编程,每个进程独立运行,并有机地收发数据。
- 功能包单位管理:由于它以功能包的形式管理着多个具有相同目的的进程,所以开发和使用起来很容易,并且很容易共享、修改和重新发布。
- 公共存储库:每个功能包都将其功能包公开给开发人员首选的公共存储库(例如GitHub),并标识许可证。
- API类型:使用ROS开发程序时,ROS被设计为可以简单地通过调用API将其加载到其使用的代码中,您会发现ROS编程与C++和Python程序没有区别。
-
支持多种编程语言:ROS程序提供客户端库(Client Library)以支持各种语言。它可以用于如JAVA、C#、Lua和Ruby等语言,也可以用于机器人中常用的编程语言,如Python、C++和Lisp。换句话说, 可以使用熟悉的语言开发ROS程序。
2.关键概念
ROS是一个用于开发机器人应用程序的、类似操作系统的机器人软件平台。ROS提供开发机器人应用程序时所需的硬件抽象、子设备控制,以及机器人工程中广泛使用的传感、识别、绘图、运动规划等功能。此外ROS还提供进程之间的消息解析、功能包管理、库和丰富的开发及调试工具。
(1)节点(Node)--执行单元
- 执行具体任务的进程,是一个可以独立运行的可执行文件
- 不同节点可使用不同的编程语言,可分布式运行在不同的主机;
- 节点在系统中的名称是唯一的.
(2)节点管理器(ROS-Master)--控制中心
- 为节点提供命名和注册服务;
- 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
- 提供参数服务器,节点使用此服务器存储和检索运行时的参数.
(3)话题(topic)--异步通信机制
节点间用来传输数据的重要总线;
使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一;
(4)消息(message)--话题数据
具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;
使用编程语言无关的 .msg 文件定义,编译过程中生成对应的代码文件