《ROS机器人项目开发11例 第2版》(印)拉姆库玛·甘地那坦(Ramkumar Gandhina)|(epub+azw3+mobi+pdf)电子书下载

图书名称:《ROS机器人项目开发11例 第2版》

【作 者】(印)拉姆库玛·甘地那坦(Ramkumar Gandhina)
【丛书名】机器人设计与制作系列
【页 数】 292
【出版社】 北京:机械工业出版社 , 2021.01
【ISBN号】978-7-111-67244-9
【分 类】机器人-程序设计
【参考文献】 (印)拉姆库玛·甘地那坦(Ramkumar Gandhina). ROS机器人项目开发11例 第2版. 北京:机械工业出版社, 2021.01.

图书封面:

图书目录:

《ROS机器人项目开发11例 第2版》内容提要:

本书涵盖新的ROS发行版中的项目-ROSMelodicMoreniawithUbuntuBionic(18.04)。从基本原理开始,本书向你介绍了ROS-2,并帮助你了解它与ROS-1的不同之处。你将能够在ROS中建模并构建工业移动机械手臂,并在Gazebo9中进行模拟。然后,你将了解如何使用状态机处理复杂的机器人应用程序,以及一次处理多个机器人。本书还向你介绍了新的、流行的硬件,如Nvidia的JetsonNano、华硕修补板和BeagleboneBlack,并允许你探索与ROS的接口。

《ROS机器人项目开发11例 第2版》内容试读

第1章

ROS入门

机器人技术是未来能够改变世界的技术之一。机器人可以在很多方面替代人,我们都害怕它们偷走我们的工作。有一点是肯定的:机器人技术将是未来最具影响力的技术之一。当

一项新技术获得发展动力时,该领域的各种机会也会增加。这意味着机器人和自动化技术可以在未来创造很多就业机会。

机器人技术中能提供大量工作机会的主要领域之一是机器人软件开发。众所周知,软件赋予机器人或任何机器生命。我们可以通过软件扩展机器人的能力。对于一个机器人而言,它的控制、传感和智能等能力都是通过软件实现的

机器人软件涉及相关技术的融合,如计算机视觉、人工智能和控制理论。简而言之,为机器人开发软件并不是一项简单的任务,需要开发人员具有许多领域的专业知识

如果读者正在寻找iOS或Android的移动应用程序开发支持,则可以选择基于相应的软件开发工具包(Software Development Kit,.SDK)构建应用程序。那么对于机器人应用程序开发有没有可供使用的通用软件框架呢?回答是肯定的。最流行的机器人软件框架之一就是机器人操作系统(Robot Operating System,ROS)o

在本章中,我们将了解ROS的抽象概念,学习ROS的安装方法,概要介绍模拟器的相

关内容,并描述如何在虚拟系统上进行使用。然后我们将介绍ROS的基本概念,以及支持

ROS的不同机器人、传感器和执行器。我们还将介绍ROS在工业界和学术界的应用情况。

由于整本书都致力于ROS项目,因此本章将是这些项目的启动指南,在本章中,我们将帮

助读者完成ROS的安装与配置。

本章涵盖的主题包括:

·ROS概述。

●ROS基础。

·ROS客户端库。

·ROS工具。

●ROS模拟器。

·安装ROS。

●在VirtualBox上设置ROS。

2ROS机器人项目开发11例

·Docker简介。

·设置ROS工作空间。

。工业界与学术界中的ROS应用。

下面,一起来入门ROS吧。

1.1技术要求

学习本章内容的相关要求如下:

·Ubuntu18.04(Bionic)系统,预先安装ROS Melodic Morenia.

●虚拟机VirtualBox和Docker。.

·时间线及测试平台:

▣预计学习时间:平均约65分钟。

口项目构建时间(包括编译和运行):平均约60分钟。

口项目测试平台:惠普Pavilion笔记本电脑(Intel®CoreTM i7-4510UCPU@2.00GHz×4,8GB内存,64位操作系统,GNOME-3.28.2桌面环境)

1.2ROS概述

ROS是一个开源的、灵活的机器人软件框架,用于机器人应用程序编写。ROS提供了

一个硬件抽象层,开发者可以在其中构建机器人应用程序,而不必担心底层硬件。ROS还提

供不同的软件工具来可视化和调试机器人数据。ROS框架的一个核心是消息传递中间件,在

这个中间件中,进程可以相互通信和交换数据,即使它们运行在不同的机器上。ROS消息传

递可以是同步的,也可以是异步的。

ROS中的软件以功能包的形式组织,具有良好的模块性和可重用性。使用ROS消息传

递中间件和硬件抽象层,开发人员可以创建大量的机器人功能,例如,地图构建和导航(在

移动机器人中)。ROS中的几乎所有功能对机器人而言都是“不可知”的(即基于标准接口

封装起来的),因此所有类型的机器人都可以使用它。新的机器人可以直接使用那些功能包,而无须修改功能包中的任何代码。

ROS在大学里有着广泛的合作关系,许多开发人员对ROS的发展做出了贡献。可以说

ROS是一个由全世界开发者支持的社区驱动项目。这个活跃的开发者生态系统将ROS与其

他机器人框架区分开来。

简而言之,ROS是管道(或通信,即通信机制)、(开发)工具、(应用)功能和生态系统

的组合,这些功能如图1.1所示。

ROS项目于2007年在斯坦福大学以Switchyard为名启动,随后在2008年由一家名为

Willow Garage的机器人研究初创公司进行开发。ROS的主要开发工作由Willow Garage完

第1章ROS入门3

成。20l3年,Willow Garage的研究人员成立了开源机器人基金会(Open Source Robotics

Foundation,OSRF)。ROS现在由OSRF积极维护。下面,让我们介绍几个ROS发行版。

管道

工具

功能

生态系统

图1.1ROS“公式”(图片来源:ros.org。基于知识共享授权协议CC-BY-3.0:https:/

creativecommons.org/licenses/by/3.0/us/legalcode)

下面是两个组织的网址。Willow Garage:http:/www.willowgarage.com/。OSRF:http://www.osrfoundation.org/.

1.2.1R0S发行版

ROS发行版与Liux发行版非常相似,即由ROS功能包构建成的版本集。每个发行版都维护一组稳定的核心功能包,直到发行版的生命周期结束(End Of Life,EOL)。

ROS发行版与Ubuntu完全兼容,大多数ROS发行版都是根据各自的Ubuntu版本进行规划的。

图1.2展示了ROS网站上推荐使用的一些最新的ROS发行版(截至本书英文版撰写时)。

发行版

发布时间

海报

turtle

EOL时间

ROS Melodic

2018年

2023年5月

Morenia(推荐)

5月23日

(Bionic EOL)

R09

ROS Lunar

2017年

2019年5月

Loggerhead

5月23日

2016年

2021年4月

ROS Kinetic Kame5月23日

(Xenial EOL)】

图1.2最新ROS发行版(图片来源:ros.org。基于知识共享授权协议CC-BY-3.0:https:∥

creativecommons.org/licenses/by/3.0/us/legalcode)

最新的ROS发行版是Melodic Morenia,对此版本的支持时间将延续到2023年5月。这

个最新的ROS发行版的一个问题是,目前大多数功能包都不可用,这是因为把功能包从以

前的发行版迁移到该版本需要时间。如果读者正在寻找一个稳定的发行版,那么可以选择ROS Kinetic Kame,该版本发行于2016年,大部分功能包都可以正常使用。不建议读者选择ROS Lunar Loggerhead,因为该发行版的支持时间仅延续至2019年5月。

1.2.2支持的操作系统

ROS的主要目标操作系统是Ubuntu。ROS发行版是根据Ubuntu的发布版进行规划的。

4ROS机器人项目开发11例

目前,除了Ubuntu以外,Ubuntu ARM、Debian、Gentoo、macOS、Arch Linux、Android、

Windows和OpenEmbedded也提供了对ROS不完全支持(部分功能不可用)。

表1.1展示了新的ROS发行版和支持的特定操作系统版本。

表1.1ROS发行版及支持的操作系统版本

ROS发行版

支持的操作系统版本

Melodic Morenia(LTS)

Ubuntu 1:8.04(LTS)和I7.10、Debian8、macOS(Homebrew、Gentoo以及Ubuntu ARM

Kinetic Kame(LTS)

Ubuntu16.04(LTS)和15.10、Debian8、macOS(Homebrew、Gentoo以及Ubuntu ARM

Ubuntu15.04、14.10和14.04、Ubuntu ARM、macOS(Homebrew)、Gentoo、Arch

Jade Turtle

Linux、Android NDK以及Debian8

Ubuntu 1.4.04(LTS)和13.l0、Ubuntu ARM、macOS(Homebrew)、Gentoo、Arch Linux、

Indigo Igloo(LTS)

Android NDK以及Debian7

ROS Melodic和Kinetic均为长期支持版(Long-Term Support,LTS),支持时间与

Ubuntu的长期支持版的支持时间一致。使用LTS发行版的优,点是可以获得最长的支持寿命。

在下一节中,我们将介绍ROS支持的机器人和传感器。

1.2.3支持的机器人及传感器

ROS框架是最成功的机器人技术框架之一,世界各地的大学都对其做出了贡献。由于其

活跃的生态系统和开源性质,ROS广泛应用于大多数机器人,并且兼容主要的机器人硬件和

软件。图1.3展示了一些完全在ROS上运行的著名机器人。

d)Robonaut

b)REEM-C

a)Pepper

e)Universal Robots

c)TurtleBot

图1.3ROS支持的主流机器人型号(图片来源:ros.og。基于知识共享授权协议CC-BY-3.0:

https://creativecommons.org/licenses/by/3.0/us/legalcode)

ROS支持的机器人型号详见http:/wiki.ros.org/Robots.

第1章ROS入门5

读者可以从以下链接获取相应机器人的ROS功能包:

Pepper:http://wiki.ros.org/Robots/PepperoREEM-C:http://wiki.ros.org/Robots/REEM-C.

TurtleBot 2:http://wiki.ros.org/Robots/TurtleBot

Robonaut:http://wiki.ros.org/Robots/Robonaut2.

·Universal机械臂:http:/wiki.ros.org/universal robot。.

图1.4展示了ROS支持的一些主流传感器。

a)Velodyne

b)ZED Camera

c)Teraranger

d)Xsens

e)Hokuyo激光测距仪

f)Intel RealSense

图1.4ROS支持的主流传感器(图片来源:ros.og。基于知识共享授权协议CC-BY-3.0:

https://creativecommons.org/licenses/by/3.0/us/legalcode)

ROS支持的传感器类型与型号详见http:/wiki.ros.org/Sensors。以下是相应传感器的ROS wiki主页:

.Velodyne:http://wiki.ros.org/velodyne.

.ZED Camera:http://wiki.ros.org/zed-ros-wrapper

Teraranger:http://wiki.ros.org/teraranger.

.Xsens:http://wiki.ros.org/xsens_driver.

·Hokuyo激光测距仪:http:/wiki.ros.org/hokuyo node

Intel RealSense:http://wiki.ros.org/realsense_camera.

下面,我们介绍ROS有哪些优势和特点。

1.2.4为什么选择R0S

构建ROS框架的主要目的是打造机器人的通用软件框架。尽管在ROS之前就有了许多

机器人学的相关研究,但大多数软件都是各自的机器人独有的。这些独有的软件可能是开源的,但很难重用。

与现有的其他机器人框架相比,ROS在以下方面表现出色:

6ROS机器人项目开发11例

●协作开发:正如我们讨论过的,ROS是开源的,可以免费用于工业界和学术界。开

发人员可以通过添加功能包的方式扩展ROS的功能。几乎所有的ROS功能包都在一

个硬件抽象层上工作,因此它可以很容易地被其他机器人应用程序重用。所以,如果

一所大学擅长移动导航,另一所大学擅长机器人操控,则可以把相应的功能包贡献给

ROS社区,这样其他开发人员就可以重用这些功能包并构建新的应用程序。

·多语言支持:ROS通信框架可以使用多种现代编程语言轻松实现。它支持的流行语言

包括C++、Python和Lisp,此外它还有Java和Lua的实验库。

·库集成:ROS具有与许多第三方机器人库的接口,如开源计算机视觉(OpenCV)、点云库(PCL)、OpenNI、OpenRAVE和Orocos。开发人员可以轻松地使用这些库进行应用程序开发。

·模拟器集成:ROS还与开源模拟器(如Gazebo)联系紧密、相互融合,并与专有模拟器(如Webots和V-REP)有良好的接口。

·代码测试:ROS提供了一个名为rostest的内置测试框架来检查代码质量和错误。

·可伸缩性:ROS框架设计考虑了可伸缩性。可以使用ROS与机器人一起执行繁重的

计算任务,其中ROS可以放在云上,也可以放在异构集群上。

·可定制性:正如我们讨论过的,ROS是完全开源和免费的,因此可以根据机器人的实

际需求定制这个框架。如果我们只想使用ROS消息平台,那么可以删除所有其他组

件并仅使用它。我们甚至可以为特定的机器人定制ROS以获得更好的性能。

·社区:ROS是一个社区驱动的项目,主要由OSRF领导。大型社区支持是ROS的一

大优势,这意味着我们可以轻松地开始机器人应用程序开发。

以下是可与ROS集成的库和模拟器的URL:

.OpenCV:http://wiki.ros.org/vision_opencv.PCL:http://wiki.ros.org/pcl_ros

OpenNI:http://wiki.ros.org/openni_launch.

●OpenRAVE:http://openrave.org。

.Orocos:http://www.orocos.org/

.V-REP:http://www.coppeliarobotics.com/

下面让我们了解ROS的一些基本概念,这些概念是ROS项目的基础。

1.3ROS基础

了解ROS的基本工作流程及其术语,可以帮助读者理解已有的ROS应用程序,并在此

基础上构建自己的应用程序。这一节将向读者介绍重要的概念,这些概念在接下来的章节中将会使用到。如果读者发现本章中缺少某个主题,请放心,稍后将在相应的章节中进行介绍。

ROS有三个不同层级的概念,分别是文件系统层级、计算图层级和ROS社区层级。

···试读结束···

阅读剩余
THE END