(1)國內(nèi)首本引進(jìn)ROS機(jī)器人程序設(shè)計的譯著,讓你了解 ROS系統(tǒng)的各種工具。
(2)提供了各種實際的示例代碼供讀者學(xué)習(xí)和理解ROS的軟件框架。
(3)本書可以幫助讀者從對ROS一無所知到能夠通過ROS系統(tǒng)完成小型機(jī)器人系統(tǒng)的開發(fā)和編程工作。
Aaron Martinez 是一位計算機(jī)工程師、企業(yè)家和數(shù)字化制造專家。他碩士畢業(yè)于拉斯帕爾馬斯大學(xué)的IUCTC(科學(xué)與網(wǎng)絡(luò)技術(shù)研究所)。之后,參與過拉斯帕爾馬斯大學(xué)AVORA項目。在這個項目中,他負(fù)責(zé)設(shè)計AUV (自主式水下機(jī)器人),并在意大利參加了歐洲學(xué)生自主式水下挑戰(zhàn)(SAUC-E)。
Enrique Fernández 是一名計算機(jī)工程師和機(jī)器人專家。他碩士畢業(yè)于拉斯帕爾馬斯大學(xué)智能系統(tǒng)與計算工程學(xué)院。在2012年參加了歐洲學(xué)生自主式水下挑戰(zhàn)(SAUC-E),并作為合作者參加了2013年的比賽。 2012年,他因開發(fā)水下云臺視覺系統(tǒng)而獲獎。現(xiàn)在,他是Pal-Robotics實驗室的SLAM工程師。Enrique在博士學(xué)習(xí)期間發(fā)表了數(shù)篇學(xué)術(shù)論文和專著。其中,有兩篇論文在2011年被國際機(jī)器人與自動化會議(ICRA 2011)所收錄。
譯者簡介
劉品杰,碩士,技術(shù)方向為工業(yè)自動化控制、DCS/PLC/SCADA系統(tǒng)研發(fā)、機(jī)器人技術(shù)等。先后參與過國產(chǎn)化核電站DCS控制系統(tǒng)研發(fā)、國產(chǎn)化油氣管道大型SCADA系統(tǒng)研發(fā)。歷任系統(tǒng)開發(fā)工程師、產(chǎn)品經(jīng)理、項目經(jīng)理。
譯者序
前
第1章 ROS系統(tǒng)入門
1.1 使用軟件源安裝ROS Electric
1.1.1 添加軟件源到sources.list文件中
1.1.2 設(shè)置密碼
1.1.3 安裝
1.1.4 環(huán)境配置
1.2 使用軟件源安裝ROS Fuerte
1.2.1 配置Ubuntu軟件源
1.2.2 配置source.list文件
1.2.3 設(shè)置密碼
1.2.4 安裝
1.2.5 環(huán)境配置
1.2.6 獨(dú)立工具
1.3 如何安裝VirtualBox和Ubuntu
1.3.1 下載VirtualBox
1.3.2 創(chuàng)建虛擬機(jī)
1.4 本章小結(jié)
第2章 ROS系統(tǒng)架構(gòu)及示例
2.1 理解ROS文件系統(tǒng)級
2.1.1 功能包
2.1.2 功能包集
2.1.3 消息類型
2.1.4 服務(wù)類型
2.2 理解ROS計算圖級
2.2.1 節(jié)點(diǎn)
2.2.2 主題
2.2.3 服務(wù)
2.2.4 消息
2.2.5 消息記錄包
2.2.6 節(jié)點(diǎn)管理器
2.2.7 參數(shù)服務(wù)器
2.3 理解ROS開源社區(qū)級
2.4 ROS系統(tǒng)試用練習(xí)
2.4.1 ROS文件系統(tǒng)導(dǎo)覽
2.4.2 創(chuàng)建工作空間
2.4.3 創(chuàng)建ROS功能包
2.4.4 編譯ROS功能包
2.4.5 使用ROS節(jié)點(diǎn)
2.4.6 使用主題與節(jié)點(diǎn)交互
2.4.7 學(xué)習(xí)如何使用服務(wù)
2.4.8 使用參數(shù)服務(wù)器
2.4.9 創(chuàng)建節(jié)點(diǎn)
2.4.10 編譯節(jié)點(diǎn)
2.4.11 創(chuàng)建msg和srv文件
2.4.12 使用新建的srv和msg文件
2.5 本章小結(jié)
第3章 調(diào)試和可視化
3.1 調(diào)試ROS節(jié)點(diǎn)
3.1.1 使用GDB調(diào)試器調(diào)試ROS節(jié)點(diǎn)
3.1.2 ROS節(jié)點(diǎn)啟動時調(diào)用GDB調(diào)試器
3.1.3 設(shè)置ROS節(jié)點(diǎn)core文件轉(zhuǎn)存
3.2 調(diào)試信息
3.2.1 輸出調(diào)試信息
3.2.2 設(shè)置調(diào)試信息級別
3.2.3 為特定節(jié)點(diǎn)配置調(diào)試信息級別
3.2.4 信息命名
3.2.5 條件顯示信息與過濾信息
3.2.6 信息的更多功能——單次顯示、可調(diào)、組合
3.2.7 使用rosconsole和rxconsole在運(yùn)行時修改調(diào)試級別
3.3 監(jiān)視系統(tǒng)狀態(tài)
3.3.1 節(jié)點(diǎn)、主題與服務(wù)列表
3.3.2 使用rxgraph在線監(jiān)視節(jié)點(diǎn)狀態(tài)圖
3.4 當(dāng)奇怪的事情發(fā)生——使用roswtf
3.5 畫標(biāo)量數(shù)據(jù)圖
3.5.1 用rxplot畫出時間趨勢曲線
3.5.2 另一個畫圖工具rxtools
3.6 圖像可視化
3.6.1 顯示單一圖片
3.6.2 FireWire接口攝像頭
3.6.3 使用雙目立體視覺
3.7 3D可視化
3.7.1 使用rviz在3D世界中實現(xiàn)數(shù)據(jù)可視化
3.7.2 主題與坐標(biāo)系的關(guān)系
3.7.3 可視化坐標(biāo)變換
3.8 保存與回放數(shù)據(jù)
3.8.1 什么是消息記錄包文件
3.8.2 使用rosbag在包文件中記錄數(shù)據(jù)
3.8.3 回放消息記錄文件
3.8.4 使用rxbag檢查消息記錄包的主題和消息
3.9 rqt插件與rx應(yīng)用
3.10 本章小結(jié)
第4章 在ROS下使用傳感器和執(zhí)行機(jī)構(gòu)
4.1 使用游戲桿或游戲手柄
4.1.1 joy_node如何發(fā)送游戲桿動作消息
4.1.2 使用游戲桿數(shù)據(jù)在turtlesim中移動海龜
4.2 使用激光雷達(dá)——Hokuyo URG-04lx
4.2.1 了解激光雷達(dá)如何在 ROS 中發(fā)送數(shù)據(jù)
4.2.2 訪問和修改激光雷達(dá)數(shù)據(jù)
4.3 使用Kinect傳感器查看3D環(huán)境
4.3.1 如何發(fā)送和查看Kinect數(shù)據(jù)
4.3.2 創(chuàng)建和使用Kinect示例
4.4 使用伺服電動機(jī)——Dynamixel
4.4.1 Dynamixel如何發(fā)送和接收運(yùn)動命令
4.4.2 創(chuàng)建和使用伺服電動機(jī)示例
4.5 使用Arduino添加更多的傳感器和執(zhí)行機(jī)構(gòu)
4.6 使用慣性測量模組——Xsens MTi
4.6.1 Xsens如何在ROS中發(fā)送數(shù)據(jù)
4.6.2 創(chuàng)建和使用Xsens示例
4.7 使用低成本慣性測量模組IMU-10自由度
4.7.1 下載加速度傳感器庫
4.7.2 Arduino Nano和10自由度傳感器編程
4.7.3 創(chuàng)建ROS節(jié)點(diǎn)并使用10自由度傳感器數(shù)據(jù)
4.8 本章小結(jié)
第5章 3D建模與仿真
5.1 自定義機(jī)器人在ROS中的3D模型
5.2 創(chuàng)建及時個URDF文件
5.2.1 解釋文件格式
5.2.2 在rviz里查看3D模型
5.2.3 加載圖形到機(jī)器人模型
5.2.4 使機(jī)器人模型運(yùn)動
5.2.5 物理和碰撞屬性
5.3 xacro——一個寫機(jī)器人模型的更好方法
5.3.1 使用常量
5.3.2 使用數(shù)學(xué)方法
5.3.3 使用宏
5.3.4 使用代碼移動機(jī)器人
5.3.5 使用SketchUp進(jìn)行3D建模
5.4 在ROS中仿真
5.4.1 在Gazebo中使用URDF3D模型
5.4.2 在Gazebo中添加傳感器
5.4.3 在Gazebo中加載和使用地圖
5.4.4 在Gazebo中移動機(jī)器人
5.5 本章小結(jié)
第6章 機(jī)器視覺
6.1 連接和運(yùn)行攝像頭
6.1.1 FireWire IEEE1394 攝像頭
6.1.2 USB攝像頭
6.2 使用OpenCV制作USB攝像頭驅(qū)動程序
6.2.1 創(chuàng)建 USB 攝像頭驅(qū)動功能包
6.2.2 使用ImageTransport API攝像頭幀
6.2.3 使用 cv_bridge 進(jìn)行OpenCV 和 ROS 圖像處理
6.2.4 使用ImageTransport 圖像
6.2.5 在ROS中使用OpenCV
6.2.6 顯示攝像頭輸入的圖像
6.3 如何標(biāo)定攝像頭
6.4 ROS 圖像管道
6.5 對于計算機(jī)視覺任務(wù)有用的 ROS功能包
6.6 使用viso2執(zhí)行視覺測距
6.6.1 攝像頭位姿標(biāo)定
6.6.2 運(yùn)行 viso2 在線演示
6.6.3 使用低成本雙目攝像頭運(yùn)行 viso2
6.7 本章小結(jié)
第7章 導(dǎo)航功能包集入門
7.1 ROS導(dǎo)航功能包集
7.2 創(chuàng)建轉(zhuǎn)換
7.2.1 創(chuàng)建廣播機(jī)構(gòu)
7.2.2 創(chuàng)建偵聽器
7.2.3 查看坐標(biāo)變換樹
7.3 傳感器信息
7.4 里程數(shù)據(jù)
7.4.1 Gazebo如何獲取里程數(shù)據(jù)
7.4.2 創(chuàng)建自定義里程數(shù)據(jù)
7.5 創(chuàng)建基礎(chǔ)控制器
7.5.1 使用Gazebo 創(chuàng)建里程數(shù)據(jù)
7.5.2 創(chuàng)建基礎(chǔ)控制器
7.6 使用ROS創(chuàng)建地圖
7.6.1 使用map_server保存地圖
7.6.2 使用map_server加載地圖
7.7 本章小結(jié)
第8章 導(dǎo)航功能包集進(jìn)階
8.1 創(chuàng)建功能包
8.2 創(chuàng)建機(jī)器人配置
8.3 配置全局和局部代價地圖
8.3.1 基本參數(shù)的配置
8.3.2 全局代價地圖的配置
8.3.3 局部代價地圖的配置
8.4 基本局部規(guī)劃器配置
8.5 為導(dǎo)航功能包集創(chuàng)建啟動文件
8.6 為導(dǎo)航功能包集設(shè)置rviz
8.6.1 2D位姿估計
8.6.2 2D導(dǎo)航目標(biāo)
8.6.3 靜態(tài)地圖
8.6.4 點(diǎn)云
8.6.5 機(jī)器人立足點(diǎn)
8.6.6 障礙
8.6.7 膨脹障礙
8.6.8 全局規(guī)劃
8.6.9 局部規(guī)劃
8.6.10 規(guī)劃器規(guī)劃
8.6.11 當(dāng)前目標(biāo)
8.7 自適應(yīng)蒙特卡羅定位
8.8 避免障礙
8.9 發(fā)送目標(biāo)
8.10 本章小結(jié)
第9章 在實踐中學(xué)習(xí)
9.1 REEM——類人形PAL機(jī)器人
9.1.1 從官方軟件源安裝REEM
9.1.2 使用Gazebo仿真環(huán)境運(yùn)行REEM
9.2 PR2——柳樹車庫機(jī)器人
9.2.1 安裝 PR2仿真環(huán)境
9.2.2 在仿真環(huán)境中運(yùn)行PR2
9.2.3 生成地圖與定位
9.2.4 在仿真環(huán)境中運(yùn)行PR2演示程序
9.3 Robonaut 2——NASA的敏捷型人形機(jī)器人
9.3.1 從軟件源安裝Robonaut 2
9.3.2 在國際空間站的固定支座上運(yùn)行Robonaut2
9.4 Husky——Clearpath的輪式機(jī)器人
9.4.1 安裝Husky仿真環(huán)境
9.4.2 運(yùn)行Husky仿真環(huán)境
9.5 TurtleBot——低成本移動機(jī)器人
9.5.1 安裝TurtleBot仿真環(huán)境
9.5.2 運(yùn)行TurtleBot仿真環(huán)境
9.6 本章小結(jié)
第1章
ROS系統(tǒng)入門
歡迎來到本書的第1章。本章會介紹如何安裝ROS系統(tǒng)。與其說ROS是一個操作系統(tǒng),不如說它是一種新的標(biāo)準(zhǔn)化機(jī)器人軟件框架。通過ROS,你可以使用大量的示例代碼和開源程序輕松地完成機(jī)器人編程和控制。同時,你還能夠理解如何使用各種傳感器與執(zhí)行機(jī)構(gòu),并為你的機(jī)器人增加如自動導(dǎo)航和視覺定位等新的功能。在這里,我們要感謝相關(guān)的基金會及社區(qū)對開源軟件的貢獻(xiàn),并不斷地開發(fā)出近期的算法和功能使ROS系統(tǒng)不斷進(jìn)步。
本書包含以下知識:
在特定版本的Ubuntu系統(tǒng)下安裝ROS框架
學(xué)習(xí)ROS的基本操作
調(diào)試數(shù)據(jù)和數(shù)據(jù)可視化
在ROS框架下對機(jī)器人編程
創(chuàng)造3D模型并進(jìn)行仿真
使用導(dǎo)航功能包集使機(jī)器人進(jìn)行自動導(dǎo)航
在本章中,首先要在Ubuntu系統(tǒng)中安裝完整版本的ROS。Ubuntu不僅能夠支持ROS,而且它也是ROS官方推薦的操作系統(tǒng)。當(dāng)然,你也可以在其他的操作系統(tǒng)中安裝ROS。但是在其他操作系統(tǒng)中,ROS大多是實驗性質(zhì)的移植版本,因此容易出現(xiàn)各種安裝和程序執(zhí)行錯誤。因此在學(xué)習(xí)和使用本書的過程中,推薦使用Ubuntu。
在開始安裝之前,首先了解一下ROS的歷史。
Robot Operating System(ROS)是一種得到廣泛使用的機(jī)器人操作與控制系統(tǒng)軟件框架。該框架使用了當(dāng)前流行的面向服務(wù)(SOA)的軟件技術(shù),通過網(wǎng)絡(luò)協(xié)議將節(jié)點(diǎn)間數(shù)據(jù)通信解耦。這樣就能夠輕松地集成不同語言不同功能的代碼。ROS的基本原理是無需改動就能夠在不同的機(jī)器人上復(fù)用代碼。基于這些,我們就可以在不同的機(jī)器人上分享和復(fù)用已經(jīng)實現(xiàn)的功能,而不需要做太多的工作,避免了重復(fù)勞動。
2007年,斯坦福大學(xué)人工智能實驗室(SAIL)在斯坦福AI機(jī)器人項目(Stanford AI Robot project)的支持下開發(fā)了ROS。2008年之后,則主要在Willow Garage公司支持下與其他20多家研究機(jī)構(gòu)進(jìn)行聯(lián)合研發(fā)ROS。
現(xiàn)在已經(jīng)有很多家研究機(jī)構(gòu)通過增加ROS支持的硬件或開放軟件源代碼的方式加入ROS系統(tǒng)的開發(fā)中。同樣,也有很多家公司將其產(chǎn)品逐步進(jìn)行軟件遷移并在ROS系統(tǒng)中應(yīng)用。部分ROS系統(tǒng)支持的平臺如下圖所示。這些平臺往往會開放大量的代碼、示例和仿真環(huán)境,以便開發(fā)人員輕松地開展工作。
ROS系統(tǒng)已經(jīng)支持這些機(jī)器人中的傳感器和執(zhí)行機(jī)構(gòu),同時每天ROS軟件框架所支持的設(shè)備也在大量增加。
ROS提供了一個標(biāo)準(zhǔn)的操作系統(tǒng)環(huán)境,包括硬件抽象、底層設(shè)備控制、通用功能的實現(xiàn)、進(jìn)程間消息轉(zhuǎn)發(fā)和功能包管理等。它將多路復(fù)用傳感器、控制器、運(yùn)動狀態(tài)、規(guī)劃目標(biāo)、執(zhí)行機(jī)構(gòu)及其他設(shè)備全部抽象成節(jié)點(diǎn)(node),并能對各個節(jié)點(diǎn)進(jìn)程間消息的發(fā)生和接受的處理過程通過節(jié)點(diǎn)狀態(tài)圖展示。它的各種庫都是面向類Unix系統(tǒng)的(ROS主要支持Ubuntu Linux,而其他系統(tǒng)如Fedora和Mac OS X則是實驗性質(zhì)的)。
-ros-pkg包主要作為開發(fā)高級庫的基礎(chǔ)軟件源。其很多功能是和ROS系統(tǒng)綁定的,如導(dǎo)航庫和rviz可視化界面都基于這個源。其中的一些庫包含很多強(qiáng)大的工具,可以幫助我們方便使用ROS并了解機(jī)器人的實時狀態(tài)。其中,可視化工具、仿真環(huán)境和調(diào)試工具是最重要的幾個。
ROS是一個使用BSD(Berkeley Software Distribution)開源協(xié)議的開源軟件。無論是商業(yè)應(yīng)用,還是科學(xué)研究,它都是免費(fèi)的。-ros-pkg包受到了多個開源協(xié)議的限制。
ROS致力于機(jī)器人的代碼復(fù)用,這樣每次研發(fā)新的機(jī)器人時,開發(fā)人員和科學(xué)家們再也不必全部推倒重來。通過ROS,你可以集中精力做更多的事情,應(yīng)用不同代碼庫中的代碼,再完善,并再次分享。
ROS已經(jīng)了多個版本,近期的版本是Groovy。在本書中,我們使用的版本是Fuerte,因為這個版本更加穩(wěn)定。因此需要說明的是,本書中的示例和教程不一定都能夠在Groovy下使用。
下面我們會介紹如何安裝Electric版本和Fuerte版本的ROS。不同的ROS版本對應(yīng)不同的Ubuntu版本,所以某些機(jī)器人可能仍然使用老版本的Ubuntu。即使在本書中我們使用Fuerte,但是在實際工作中,你仍然可能需要安裝Electric以便運(yùn)行一些老版本的代碼。
如前文所述,本書中所使用的操作系統(tǒng)是Ubuntu,如果你習(xí)慣使用其他操作系統(tǒng)又想完成本書的學(xué)習(xí),好的選擇就是安裝一個帶有Ubuntu的虛擬機(jī)。因此,我會在介紹虛擬機(jī)的安裝方法。
當(dāng)然,如果你想在其他系統(tǒng)中安裝ROS,你可以根據(jù)鏈接wiki.ros.org/fuerte/Installation中的指導(dǎo)來完成。
……
不錯,有參考價值
還行
????
很喜歡。
不錯
非常好,值得珍藏
質(zhì)量很好
很好
紙質(zhì)很好是正版
還不錯
其他都挺好的,就是有褶皺,有點(diǎn)失望。
好評
1萬個贊
書很好,客服也沒問題,但是建議當(dāng)當(dāng)換家快遞吧,至少能在網(wǎng)上查到包裹到哪了
很好,以后會繼續(xù)支持
快遞渣到爆,,,慢的很,,,派送慢,明明自己無法派送卻說我要延遲,能不能有點(diǎn)兒節(jié)操
很薄的一本書。還沒看
買的書太多太多了,導(dǎo)致積累了很多未評價的訂單,也因此失去很多積分的機(jī)會,很不公平。所以我統(tǒng)一用這段話作為評價內(nèi)容,說明這款產(chǎn)品沒問題,至少優(yōu)秀;精彩的書我會不吝贊揚(yáng),而比較垃.圾的產(chǎn)品,我也會用心的差評,以提醒其他讀者留意。
好書,ROS上手的基本手冊!
不錯不錯~~~~~~~~~~~~
紙張真一般
挺好的,還行。
翻譯的不錯,內(nèi)容排版循循漸進(jìn),可讀性強(qiáng)
紙質(zhì)還不錯,還沒開始看,剛收到
虛擬機(jī)的下載地址已更改,沒法下載, 比較基礎(chǔ) ,像運(yùn)動正向和逆向?qū)W沒有。
中文的關(guān)于ROS的書太少了,這是第一本,希望能有更多更實用的書出現(xiàn)。
學(xué)習(xí)老美人家研制的技術(shù),值得一看,感覺真的挺好,沒有辦法,相關(guān)的書籍也不多,研究機(jī)器人只能硬啃了