本文一些内容是从哔哩哔哩视频网站的古月老师的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)--执行单元

  • 执行具体任务的进程,是一个可以独立运行的可执行文件ROS入门
  • 不同节点可使用不同的编程语言,可分布式运行在不同的主机;
  • 节点在系统中的名称是唯一的.

(2)节点管理器(ROS-Master)--控制中心

  • 为节点提供命名和注册服务;
  • 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
  • 提供参数服务器,节点使用此服务器存储和检索运行时的参数.

(3)话题(topic)--异步通信机制

节点间用来传输数据的重要总线;

使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一;

(4)消息(message)--话题数据

具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;

使用编程语言无关的 .msg 文件定义,编译过程中生成对应的代码文件

ROS入门

相关文章: