【ROS开发 | 学习笔记】一、基础概述与核心概念

目录

1 Linux系统及其基本操作

1.1 操作系统

1.2 Linux操作系统

1.3 Linux系统的基本操作

2 ROS基础及其核心概念

2.1 ROS基础

2.2 ROS的通信机制 

2.2.1 话题通信

2.2.2 服务通信

2.2.3 参数服务器

2.3 ROS的文件系统

2.4 ROS命令行工具的使用


1 Linux系统及其基本操作

1.1 操作系统

操作系统(Operating System,OS)是直接运行在“裸机”上的最基本的系统软件,是管理和控制计算机硬件与软件资源的计算机程序,任何其他软件都必须在操作系统的支持下才能运行。

目前操作系统主要有以下几类:

  • Windows系统
  • Mac系统
  • Linux系统
  • Chrome OS系统
  • Unix操作系统

1.2 Linux操作系统

在谈Linux操作系统之前,我们有必要先介绍一下UNIX操作系统和类UNIX操作系统。Unix是操作系统的开端,而类Unix系统则包括各种传统的Unix系统和与Unix相似的系统,其中Linux是最著名的类Unix系统。Linux操作系统是在1991年由芬兰赫尔辛基的大学生Linus Torvalds编写,具有开源、自由度高的特点。

通常来讲,一个Linux发行版包括:Linux内核、将整个软件安装到电脑上的一套安装工具、各种GNU软件和一些特定的Linux发行版中的专有软件。目前主流的Linux发行版有红旗Linux、RedHat、Ubuntu、Debian和Fedora等。其中,Ubuntu界面比较华丽,社区非常活跃,个人用户多,从市面上看较为大众化。使用虚拟机安装Ubuntu安装简单,易于上手,适合初次接触与学习,而硬盘安装具有硬件支持好的优势,适合有一定经验的开发者使用,

1.3 Linux系统的基本操作

谈到Linux系统的基本操作就不得不提到Linux中最重要的操作方式——命令行。命令行具有很好地灵活性和可扩展性,打破了使用Windows时一个鼠标“一键到底”的简单与乏味,它提供给用户更大的灵活性与想象空间。命令已成为Linux/Unix的典型标志,对于熟练使用Linux/Unix系统而言是必不可少的,终端可以使用快捷键Ctrl+Alt+T打开。

基本的命令有:

  • cd:改变工作目录,若没有指定“目标路径”,则回到用户的主目录。
  • pwd:此命令显示出当前工作目录的绝对路径。
  • mkdir:创建一个目录。
  • ls:列出目录的内容。
  • touch:改变文件或目录时间。
  • mv:为文件或目录改名或将文件由一个目录移入另一个目录中。
  • cp:把给出的一个文件或目录拷贝到另一文件或目录中。
  • rm:删除一个目录中的一个或多个文件或目录。
  • sudo:以其他身份来执行指令。

2 ROS基础及其核心概念

2.1 ROS基础

 ROS(Robot Operating System,机器人操作系统)是用于编写机器人软件程序的一种具有高度灵活性的软件架构,诞生于斯坦福大学的STAIR(STanford Artificial Intelligence Robot)项目,2010年正式开源。它提供了操作系统应有的服务,包括硬件抽象、底层设备控制、常用函数的实现、进程间消息的传递和包管理,现如今广泛应用在工业、娱乐、医疗和竞技机器人的开发中。

ROS设计者将ROS表述为“ROS=Plumbing+Tools+Capabilities+Ecosystem”,即ROS是通讯机制、开发工具、应用功能和机器人生态系统的集合体。

  • 通信机制:包括话题通信、服务通信和参数服务器,这部分将在后续详细介绍。
  • 开发工具:包括命令行和编译器、QT工具箱和Rviz(一款三维可视化工具)等。
  • 应用功能:包括导航和SLAM(同步定位与建图)等。
  • 生态系统:包括ROS发行版、软件源、ROS wiki、邮件列表、ROS Answers和Blog等。

2.2 ROS的通信机制 

节点(Node):ROS当中的具体执行单元,用来执行具体任务的进程,是独立运行的可执行文件。不同节点可使用不同的编程语言,最终可以通过ROS的框架完成功能拼接,可分布式运行在不同的主机。

节点管理器(ROS Master):为节点提供命名和注册服务。在话题和服务通信中跟踪和记录话题或服务通信,辅助节点相互查找,建立连接。在参数服务器中提供参数服务器,节点使用此服务器存储和检索运行时的参数。

2.2.1 话题通信

话题通信为异步通信机制,其中话题是用来传输数据的重要总线。话题通信使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的发布者或订阅者可以不唯一。

消息是话题数据,具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。消息使用使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件。

2.2.2 服务通信

服务通信为同步通信机制,使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据。使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件。

2.2.3 参数服务器

参数是可通过网络访问的共享、多变量字典,节点使用此服务器来存储和检索运行时的参数。参数服务器适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。

2.3 ROS的文件系统

  • 功能包(Package):ROS软件中的基本单元,包含节点源码、配置文件、数据定义等。
  • 功能包清单:记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等。
  • 元功能包:组织多个用于同一目的功能包。

2.4 ROS命令行工具的使用

ROS的常用命令有:

  • rostopic:主要用于显示当前的一些话题信息。
  • rosservice:用于查看和控制服务相关信息。
  • rosnode:显示ROS节点的信息。
  • rosparam:与参数服务器相关的操作。
  • rosmsg:用于查看话题消息(Message)的相关信息。
  • rossrv:用于显示有关ROS服务类型的信息。 

版权声明:本文为qq_56734650原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。