第1章 绪论
随着机器人领域的快速发展和复杂化,代码的复用性和模块化需求越来越强烈,现有的开源机器人系统难以满足实际需求。在这种情况下, ROS开源机器人操作系统应运而生。本章将从 ROS机器人操作系统的概述开始,介绍 ROS的起源与发展、 Ubuntu 20.04虚拟机的安装及配置、 ROS的安装及配置等内容。
1.1 操作系统的概念与定义
操作系统(Operating System,OS)是控制和管理整个计算机系统硬件和软件资源的程序,也是计算机系统的内核与基石。作为控制其他程序运行、管理系统资源并为用户提供操作界面的系统软件的集合,操作系统承担管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等事务,用于合理地组织调度计算机的工作和资源的分配,为用户和其他软件提供便捷的接口环境。操作系统的形态多样,不同机器安装的操作系统可从简单到复杂,适用于手机、嵌入式系统到超级计算机等广泛的应用场景。
常见的计算机操作系统有 DOS、OS/2、UNIX、XENIX、Linux、Windows、Netware等。Windows与 Linux操作系统的基本架构如图1.1所示。在 Windows系统架构中,上方代表用户模式进程,下方组件是内核模式的操作系统服务。用户模式的进程在一个受保护的进程地址空间中执行,系统支持进程、服务进程、用户应用程序、环境子系统都有各自的私有进程地址空间。在 Linux系统架构中,用户空间包括用户应用程序和 C库。内核空间包括系统调用接口、内核和平台架构相关代码。
图1.1 操作系统架构框图
操作系统的基本功能如下:
(1)管理和控制系统资源。通过数据结构对系统信息进行记录,根据不同的要求对系统
数据进行修改,从而实现系统资源控制。
(2)提供便于用户使用计算机的用户界面。 Windows系统采用窗口和图标, Linux系统既采用命令形式,也配备有窗口形式,其目的都是方便用户的使用。
(3)优化系统功能。计算机系统可以实现各种各样的功能,若发生冲突会导致系统性能的下降。为了使计算机资源得到昀大程度的利用,使系统处于良好的运行状态,操作系统还需要采用昀优方式实现系统功能。
(4)协调计算机的各种动作。计算机的运行实际上是各种硬件的同时动作,操作系统使各种动作和动态过程协调运行。
因此,操作系统可定义为:对计算机系统资源进行直接控制和管理,协调计算机的各种动作,为用户提供便于操作的人-机界面,存在于计算机软件系统昀底层核心位置的程序的集合。
1.2 ROS机器人操作系统的起源与发展
机器人是一个复杂且涉及面极广的学科,涉及机械设计、电机控制、传感器、轨迹规划、运动学与动力学、机器视觉、定位导航、机器学习、高级智能等。为了增加自定义的机器人和软件的复用性,加快机器人技术的研究进程,机器人操作系统应运而生。机器人操作系统是为机器人标准化设计而构造的软件平台,每一位机器人设计师可以使用同样的平台进行机器人软件开发。标准的机器人操作系统包括硬件抽象、底层设备控制、常用功能实现、进程间消息以及数据包管理等功能。一般而言,可分为底层操作系统层和用户群贡献的实现不同机器人功能的各种软件包。
机器人操作系统在世界各国有很多研究项目。例如,日本很早就在国家战略层面提出了机器人操作系统,形成了Open Robot平台,意大利的 Yarp开源系统可提供全新的开发环境,美国推出了 ROBOTIES、Player Stage以及 ROS(Robotic Operating System)。
1.2.1 ROS的起源
ROS是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,同时也提供用于获取、编译、编写和跨计算机运行代码所需的工具和库函数。
ROS原型由美国斯坦福大学人工智能实验室的 STAIR(Stanford Artificial Intelligence Robot)项目组开发。2007年,机器人公司 Willow Garage与该项目组合作,将 ROS应用于 PR2机器人项目中,并提供了大量资源扩展了 ROS的概念,在2009年初推出了 ROS0.4。2010年,随着 PR2正式对外发布, Willow Garage机器人也推出了 ROS正式开发版,即 ROS1.0。ROS的开发自始至终采用开放的 BSD协议,在机器人技术研究领域已逐渐成为一个广泛使用的平台。在 ROS官网,可以按类别或次序查询 ROS支持的智能机器人信息,涵盖了空中(Aerial)、地面(Ground)、操控(Manipulator)、海洋(Marine)等领域。
1.2.2 ROS的版本迭代与 Linux支撑
自2010年以来, ROS的发行版本(ROS Distribution)已经过数次迭代。推出 ROS发行版本的目的在于使开发人员可以使用相对稳定的代码库,直到其准备好将所有内容进行版本升级为止。因此,每个发行版本推出后, ROS开发者通常仅对这一版本的 bug进行修复,同时提供少量针对核心软件包的改进。 ROS主要发行版本的版本名称、发布时间与版本生命周期如表1.1所示。
表1.1 ROS主要发布版本的相关信息
1.3 Ubuntu虚拟机安装及配置
ROS机器人操作系统可以安装在 Ubuntu、Linux、Windows、OS X、Raspbian等操作系统中,但由于部分操作系统提供的指南不完整,或者仅安装了可用软件包的一部分,因此 ROS通常安装在 Ubuntu操作系统上。
1.3.1 VMware虚拟机的安装及配置
本节在 VMware虚拟机上安装 Ubuntu 20.04,VMware虚拟机可以在主系统平台上运行多个操作系统,而且每个操作系统都可以进行虚拟的分区、配置而不影响真实硬盘的数据。这里选择 VMware Workstation 14 pro版本。
在 VMware官网下载对应版本的虚拟机之后,需要对 VMware虚拟机进行配置。首先需要创建新的虚拟机,在弹出的“新建虚拟机向导”对话框选择自定义的配置类型,再选择默认的虚拟机硬件兼容性。然后,选择安装来源,可以选择“安装程序光盘映像文件”选项,再选择下载的 Ubuntu镜像。VMware可以自主进行简易安装,从而简化很多配置,包括不需要手动分区等。但安装完成后是英文版的,某些系统配置仍然需要手动操作。这里选择“稍后安装操作系统”选项,先建立虚拟机,再手动引导安装系统。根据要安装的系统选择“客户机操作系统”选项,并在此选择“ Linux”和“Ubuntu 64位”选项,如图1.2所示。
图1.2客户机操作系统显示界面
在上述安装过程完成后,进入命名虚拟机的步骤,需要命名虚拟机名称并选择安装位置。然后,进行处理器配置的选择,“处理器数量”、“每个处理器的内核数量”和“处理器内核总数”都选择“1”。指定分配给虚拟机的内存量,内存的大小必须是4MB的倍数,本节分配8GB内存。接下来配置网络的连接方式,选择“使用网络地址转换”选项。在选择 I/O控制器类型“ LST Logic”时,选择虚拟磁盘类型“ SCSI”。
新建虚拟机向导进入磁盘选择,选择“创建新虚拟磁盘”选项,然后从硬盘中划出20GB的区域分配当前的磁盘,选择“立即分配所有磁盘空间”和“将虚拟磁盘存储为单个文件”选项,可以建立一个容量为20GB的磁盘空间。然后,需要建立一个文件占用磁盘空间,接着单击“完成”按钮,等待虚拟机的创建,如图1.3所示。
图1.3 等待虚拟机创建界面
1.3.2 Ubuntu 20.04的安装及配置
在安装 Ubuntu 20.04之前,下载 Ubuntu系统的镜像文件,这里采用 Ubuntu-20.04.3-desktop-amd64。打开“虚拟机设置”菜单项,选择“硬件”选项,在设置中配置“使用 ISO映像文件”。然后,选择“启动”→“打开电源时进入固件”选项,进入 BIOS进行配置,将 Legacy Diskette A和 Legacy Diskette B改为 Disabled。继续在 BIOS界面进行设置,进入 Advanced,再进入 I/O Device Configuration,将其中的所有选项改为 Disabled。进入 Boot选项中,用“+”键将 CD-ROM Drive移到昀上方,如图1.4所示。完成上述步骤之后保存并退出,开始安装 Ubuntu 20.04系统。
图1.4 BIOS配置界面
安装 Ubuntu 20.04首先需要进行语言的选择,选择中文(简体),键盘布局选择默认项,即英语(美国)。接下来进行更新和其他软件设置,选择“昀小安装”选项并选择其他选项
图1.5 Ubuntu安装完成的界面
中的“为图形或无线硬件,以及其他媒体格式安装第三方软件”选项。由于安装的是虚拟机,相当于有一个独立的磁盘安装 Ubuntu系统,因此在安装类型设置中选择“清除整个磁盘空间并安装 Ubuntu”选项,并在弹出的窗口中选择“继续”选项,安装的地点选择默认的“上海”即可。设置用户名和密码,出现安装界面之后耐心等待安装完成。安装完成之后会弹出安装完成界面,如图1.5所示。
1.4 ROS的安装及配置
1.4.1使用软件库安装 ROS
每一个 ROS版本和 Ubuntu操作系统之间都存在着一种对应关系,即不同版本的 ROS之间会存在互不兼容的情况,对应关系在表1.1中已进行了详细的说明。本节以 Ubuntu 20.04为例,演示 ROS的安装和使用。
ROS的安装方法主要分为软件源安装和源码编译安装两种。软件源为系统提供了巨大的应用程序仓库,通过简单的命令即可完成下载安装。然而,源码编译的方法相对比较复杂,需要手动解决繁杂的软件依赖关系,不太适合初学者进行安装。本节选择软件源安装方式,给出 ROS Noetic版本的详细安装过程。
首先,需要配置 Ubuntu 20.04软件仓库(repositories)以允许 restricted(设备的专有驱动程序)、universe(社区维护的免费和开源软件)和 multiverse(受版权或法律问题限制的软件)这三种安装模式。打开 Software & Updates窗口,按照图1.6进行配置,确保 restricted、universe和 multiverse是勾选状态,配置完成后关闭该窗口。关闭窗口时单击 reload(加载)按钮,然后等待加载好,即完成了软件源的配置。
图1.6 Ubuntu系统设置软件源
然后,对 ROS进行安装(方便起见,可以前往复制相应的指令)。
添加 ROS软件源地址到 sources.list文件中,该文件是 Ubuntu系统保存软件源地址的文件,此操作可以确保在后续的安装中找到 ROS相关软件的下载地址。打开终端,输入以下命令:
展开