-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

ROS 機器人編程實踐

( 簡體 字)
作者:Morgan Quigley, Brian Gerkey, William D. Smart 著類別:1. -> 電子工程 -> 機器人
譯者:
出版社:機械工業出版社ROS 機器人編程實踐 3dWoo書號: 48216
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:12/1/2017
頁數:350
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111585299
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

ROS(Robot Operating System,機器人操作系統),是一個讓機器人能夠運作起來的開源程序框架。ROS誕生的初衷是能夠為那些制作和使用機器人的人提供通用的軟件平臺。這個平臺能夠讓人們更加便捷地分享代碼與想法,這意味著你不再需要花費經年累月的時間去編寫軟件框架就能讓你的機器人動起來!

ROS取得了巨大的成功。截止撰寫本書之時,官方發行的ROS版本中有超過2000個軟件包,并被600多人編寫和維護。ROS支持大約80個市場上可以買到的機器人,我們還可以在至少1850篇學術文獻中找到ROS的蹤影。從此我們不再需要從零開始編寫所有程序,特別是當要對眾多ROS所支持的機器人中的一個進行開發時,我們可以更加專注于機器人技術本身,而不是“位操作”或者設備驅動。

ROS由許多部分所組成,包含如下這些:

1. 一系列可以讓你從傳感器讀取數據以及向電動機等執行機構發送指令的驅動程序,而且這些數據的格式都經過良好的抽象與定義。ROS支持非常多的主流硬件,包括越來越多市場上可以買到的機器人系統。

2. 海量且日漸增多的基本機器人算法,讓你能夠輕松構建世界地圖、在其中穿梭、表示并解析傳感器數據、規劃動作、操縱物體,以及實現許多其他功能。ROS在機器人研究社區中飽受歡迎,因此許多最前沿的算法現在都可以在ROS中找到。

3. 充足的計算基礎設施,使數據能夠四處傳遞,讓眾多模塊可以連接成一個復雜的機器人系統并幫助你整合算法。ROS天生的分布式架構讓你能夠輕松地將計算壓力無縫地分擔到多臺計算機上。

4. 一系列實用工具,使得對機器人及算法的可視化、錯誤行為的調試以及傳感器數據的錄制都變得非常容易。對機器人程序的調試是極為困難的,因此也正是這一系列豐富的工具使得ROS如此強大。

5. 最后,ROS具有比其本身更為龐大的ROS生態系統,它的擴展資源眾多,包含了一個記錄整個框架方方面面的wiki文檔,一個專門用于提問與解答的網站,通過該網站你可以尋求幫助并分享自己的所學,以及一個充滿使用者與開發者的欣欣向榮的社區。

那么,為什么你需要學習ROS呢?最簡單的答案就是,它將會為你節省時間。ROS包含了機器人軟件系統的所有部分,沒有它,你就只能自己一一編寫。ROS使你能夠更加專注于系統中你最關心的部分,而無須操心那些你不那么關注的部分。

為什么你需要讀這本書?ROS的wiki文檔中包含了大量內容,涉及框架中許多方面的詳細教程。一個活躍的用戶社區隨時準備解答你的問題。為什么不直接通過這些資源學習ROS? 在本書中我們所做的就是以一種更加有序的方式將這些知識呈現給你,并給出容易理解的實例,使你知道如何使用ROS讓你的實物或仿真機器人去做些有趣的事。我們還嘗試通過提供技巧和提示來給予你各種指導,比如如何整合代碼,如何在機器人行為不合預期時調試代碼以及如何成為ROS社區的一員。

如果你不是資深程序員,學習ROS會有些吃力,系統中包含了分布式計算、多線程、事件驅動的編程以及深藏在系統底層的一大堆概念。如果你不怎么懂這些內容,你的學習曲線將會非常陡峭。本書通過介紹ROS的基本概念并給出在實物或仿真機器人中的常見應用實例來盡可能地使這條學習曲線變得平緩一些。

誰應該閱讀本書

如果你想讓你的機器人在現實世界中做一些事情,而又不想把時間浪費在“重新發明輪子”上,那么這本書就是為你準備的。ROS包含了讓機器人運轉起來所需要的基礎架構以及用來驅動機器人做一些有趣事情的足夠多的算法。

如果你對某些特別的方面比如路徑規劃等感興趣,并且想在完整的機器人系統背景下研究它們,那么這本書就是為你準備的。本書將展示如何使用ROS提供的基礎架構和算法來驅動機器人做一些有趣的事情以及如何用你自己的算法替換掉現有的算法。

如果你想要了解ROS基本的運轉機制和用法,想要了解ROS大概能做哪些事情,但是又苦于wiki的內容太過龐雜,那么這本書也是為你準備的。我們將帶領你了解ROS的運轉機制和一些簡單的工具。我們也會提供一些具體的、完整的例子,你可以基于這些例子進行開發,修改它們來實現自己的想法。

誰不適合閱讀本書

雖然我們不想拒絕任何人閱讀本書,但是本書并不是對所有人都適用的資源。我們對你使用的機器人做了一些隱含的假設。它們應該運行Linux,有很好的計算資源(至少相當于一臺筆記本電腦)。它們有先進的傳感器,比如Microsoft Kinect。它們應該是放在地上的,并且可能需要在實際環境中移動。如果你的機器人不滿足上述這些要求,那么本書中的例子就不能立刻成功運行,盡管程序和工具本身并沒有問題。

本書主要是關于ROS的,并不是關于機器人學的。盡管你可以從本書中學到一點機器人學相關的知識,但是我們不會深入地探討ROS中包含的很多算法。如果你想獲取更多關于機器人學的介紹,那么這本書不是為你準備的。

你將學到什么

本書想要廣泛地介紹如何使用ROS對機器人進行編程。本書涵蓋構成ROS核心的基本運轉機制和簡單工具,并將展示如何使用它們創建控制機器人的軟件。我們將展示一些具體的例子,這些例子講述了如何使用ROS控制你的機器人做一些有趣的事情。同時,我們將給出一些如何基于這些例子來創建你自己的機器人的建議。

除了技術內容之外,我們還將展示如何使用ROS巨大的生態系統,比如wiki和問答社區,以及如何成為全球ROS社區的一員,與全世界的其他機器人愛好者分享代碼和新知識。

預備知識

在閱讀和使用本書之前,你必須了解幾件事情。由于ROS是一個軟件框架,因此為了更好地了解ROS你非常有必要了解如何編程。雖然在ROS中可以使用很多種語言,但是在本書中我們使用Python。如果你不了解Python,那么很多代碼對你來說就沒多大意義了。幸運的是,Python是一門易于學習的語言!有很多很不錯的書和免費的網站,你可以使用這些資源來學習Python。

最適合運行ROS的環境是Ubuntu Linux,有一些Linux的經驗能夠讓學習輕松一點。我們在講述過程中將會介紹一些必要的Linux相關內容,但是對文件系統、bash命令行以及至少一種編輯器有一些基本的了解將有利于你將更多的精力放在ROS相關的內容上。

盡管不是必要的,但是對機器人學有基本的了解也將有所幫助。了解一些機器人學所使用的基本數學知識,比如坐標變換、傳動鏈等,對理解書中所講述的一些ROS機制也很有幫助。再次強調,我們將簡要介紹這些內容,但是如果你不熟悉這些東西,你可能要額外地學習、深入機器人學的相關文獻來補充相關背景。

排版約定

斜體

表示新的術語、網址、郵件地址、目錄、路徑名、文件名以及文件擴展名。

等寬字體(Constant width)

表示程序代碼,在正文中出現的代碼中的元素,如變量名、函數名、命名空間、數據類型、環境變量、語句以及關鍵詞等,也用來表示命令、命令行工具以及ROS的包、節點、話題等。

等寬加粗(Constant width bold)

表示命令以及其他一些需要用戶完全按照字面輸入的文字。

等寬斜體(Constant width italic)

表示需要用戶根據自身情況替換的文字以及由上下文決定的一些值。

這個圖標表示一般的注釋。

這個圖標表示建議或者小貼士。

這個圖標表示警告。致謝

首先,也是最重要的,我們要感謝O扲eilly的三位編輯Mike Loukides、Meg Blanchette 以及Dawn Schanafelt。在本書寫作過程中,他們表現出了極大的耐心和極高的責任心。我們還要感謝所有為本書提供反饋的人,尤其是Andreas Bihlmaier、Jon Bohren、Zach Dodds和Kat Scott。他們的評論和建議讓本書變得更好。

當然,我們還要感謝所有幫助我們調試從而使ROS在我們的機器人上正常運行的人。Mike Ferguson提供了Fetch示例。來自開源機器人基金會(Open Source Robotics Foundation,OSRF)的Steve Peters、Nate Koenig以及John Hsu解答了一些Gazebo仿真的問題。William Woodall和Tully Foote(都來自OSRF)解答了很多很深入的ROS問題。

也感謝Dylan Jones在本書出版前的最后一刻找出了一個代碼漏洞。

最后,我們要感謝全世界ROS社區的作者、維護者以及用戶。如果沒有他們的努力,ROS就不會發展成今天的樣子,本書也不會出版。
內容簡介:

想要進行機器人開發,卻對地圖或識別系統等模塊無從下手嗎?不要擔心,并不是只有你一個人會遇到這樣的問題。本書通過將ROS社區的寶貴開發經驗和現實案例相結合,為你在機器人開發過程中遇到的問題提供切實可行的指南。







不論你是機器人俱樂部的學生,還是專業的機器人科學家和工程師,都可以在本書中找到你想要的內容。書中的每部分都提供了使用ROS工具實現各類機器人系統的完整解決方案,不僅包括實現各種單一機器人任務,也包括將不同模塊結合完成組合任務。在本書中,只要你熟悉Python,就可以開始動手實踐。



--學習基礎知識,包括ROS的關鍵理念、工具和模式。

--用功能強大的ROS包為行為復雜度與日俱增的機器人編程。

--學習如何為你的機器人輕松地添加感知和導航功能。

--集成你自己的傳感器、驅動器、軟件庫甚至一整套機器人到ROS生態系統。

--學習使用ROS工具和開源代碼、調試機器人行為以及在ROS中使用C++編程的一些技巧和提示。
目錄:

前言 .......1

第一部分 基礎知識

第1章 概述 .......9

簡史 ........9

理念 ........10

安裝 ......... 11

小結 ..........12

第2章 預備知識 ........ 13

ROS圖 .........13

roscore .........15

catkin、工作區以及ROS程序包 .......16

rosrun ........19

命名、命名空間以及重映射 ........24

roslaunch ..........25

tab鍵 ..........26

tf:坐標系轉換 ..........27

小結 ...........30

第3章 話題 ....... 31

將消息發布到話題上 .........32

訂閱一個話題 ..........36

鎖存話題 .....38

定義自己的消息類型 ........39

讓發布者和訂閱者協同工作 .......46

小結 .......47

第4章 服務 .... 48

定義服務 ..........48

實現服務 ..........51

使用服務 ..........54

小結 ..........56

第5章 動作 ......... 57

動作的定義 .........58

實現一個基本的動作服務器 .....59

動作的使用 .......62

實現一個更復雜的動作服務器 ...64

使用更復雜的動作 ......66

小結 ........69

第6章 機器人與仿真器 ...... 71

子系統 ........71

機器人系統舉例 .......79

仿真器 ........83

小結 ........86

第7章 Wander-bot ........ 88

創建包 ........88

讀取傳感器數據 .......91

感知環境并移動:Wander-bot .......94

小結 ........96

第二部分 使用ROS驅動機器人行走

第8章 遙控機器人 ....... 99

開發模式 ........100

鍵盤驅動 ........100

運動生成器 .........102

參數服務器 .........107

速度斜坡曲線 .........109

開車 ........ 111

rviz ......... 113

小結 ........120

第9章 創建環境地圖 ...... 121

ROS中的地圖 ..........121

使用rosbag記錄數據 ..........124

創建地圖 ........125

啟動地圖服務器以及查看地圖 ..........131

小結 ........133

第10章 在真實環境中的導航 ..... 135

在地圖中定位機器人 ........135

使用ROS的導航軟件包 .........139

在代碼中進行導航 .........144

小結 ........145

第11章 下棋機器人 ....... 146

關節、連接以及傳動鏈 ........147

成功的關鍵 ........150

安裝和運行一臺仿真R2 ........152

在命令行中移動R2 ........155

在棋盤上移動R2的機械臂 .........156

操作機械手 ........158

對棋盤建模 ........159

重演著名的棋局 .........163

小結 ......167

第三部分 感知和行為

第12章 循線機器人 ....... 171

采集圖像 ......171

檢測指示線 .........177

循線運動 ......182

小結 ......184

第13章 巡航 ....... 185

簡單巡航 ......185

狀態機 ......186

用smach構建狀態機 ........188

用狀態機實現巡航 .........195

小結 ......198

第14章 倉儲機器人 ....... 199

倉庫模擬環境 ..199

駛入隔間 ....210

拾取物體 ....214

小結 ......224

第四部分 添加自定義ROS組件

第15章 添加你自己的傳感器和執行器 .... 227

添加你自己的傳感器 ........227

添加你自己的執行器 .........234

小結 ......240

第16章 添加你自己的移動機器人:第一部分 .. 242

小龜機器人 .........242

ROS 消息接口 .........244

硬件驅動 ....247

使用 URDF對機器人建模.......247

在 Gazebo 中進行仿真 ........255

小結 ......261

第17章 添加你自己的移動機器人:第二部分 .. 262

驗證坐標變換信息 ..........262

添加激光傳感器 ..........266

配置導航程序棧 .........270

使用 rviz 定位和控制導航中的機器人 ......275

小結 ......278

第18章 添加你自己的機械臂 ..... 279

獵豹機械臂 .........279

ROS 消息接口 .........281

硬件驅動 ....282

對機器人建模:使用 URDF ........282

在 Gazebo 中進行仿真 ..........287

驗證坐標變換信息 ..........294

配置 MoveIt .........297

使用 rviz 控制機械臂 .........301

小結 ......303

第19章 添加軟件庫 ....... 305

讓你的機器人開口說話:使用 pyttsx........305

小結 ......312

第五部分 ROS使用小知識

第20章 ROS小工具 ...... 315

主機及其相關組件:roscore........315

參數管理:rosparam .........316

文件系統導航:roscd .........317

節點啟動:rosrun ..........318

多節點啟動:roslaunch .........318

多節點系統測試:rostest .........321

系統監控:rosnode、rostopic、rosmsg、rosservice和rossrv ....324

小結 ......327

第21章 機器人行為調試 ...... 329

日志消息: /rosout和rqt_console .......329

節點、話題和連接:rqt_graph和rosnode ......336

傳感器融合: 使用 rviz .........343

繪制數據圖表:使用 rqt_plot .......344

數據記錄和分析: 使用rosbag和rqt_bag .......346

小結 ......350

第22章 ROS在線社區 ....... 351

社區的禮儀 .........351

ROS 維基 ....352

ROS Answers: 一個 ROS 問答社區 ........353

bug 追蹤與新特性請求 .........354

郵件列表與ROS興趣小組 .........354

查找和分享代碼 ........354

小結 ......355

第23章 用C++編寫ROS程序 ..... 356

C++(或其他語言)的使用場景 ........356

使用catkin編譯C++ .........357

在Python和C++之間來回移植程序 ........359

小結 ......364
序: