目前,ROS(robot operating system)逐步成為機器人研發(fā)領(lǐng)域的通用性軟件平臺。《開源機器人操作系統(tǒng)——ROS》是國內(nèi)第一本全面介紹ROS的中文版圖書。
ROS是開源的用于機器人的一種后操作系統(tǒng),或者說次級操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能,包含硬件抽象描述、底層驅(qū)動程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理,它也提供一些工具程序和庫用于獲取、建立、編寫和運行多機整合的程序。
《開源機器人操作系統(tǒng)——ROS》附光盤一張,內(nèi)容包括書中的部分例子源代碼和Diamondback及Electric版本安裝后在本地硬盤上的全部程序,以便于讀者對照自己的安裝版本進(jìn)行調(diào)試。
《開源機器人操作系統(tǒng)——ROS》可作為機器人研究者以及機器人愛好者應(yīng)用ROS構(gòu)建機器人軟件系統(tǒng)的參考手冊。
更多科學(xué)出版社服務(wù),請掃碼獲取。
ROS是開源的用于機器人的一種后操作系統(tǒng), 或者說次級操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能, 包含硬件抽象描述、底層驅(qū)動程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理, 它也提供一些工具程序和庫用于獲取、建立、編寫和運行多機整合的程序。本書附光盤一張, 內(nèi)容包括書中的部分例子源代碼和Diamondback及Electric版本安裝后在本地硬盤上的全部程序, 以便于讀者對照自己的安裝版本進(jìn)行調(diào)試。
目錄
前言
術(shù)語列表
第一章 ROS簡介 1
1.1 ROS簡介 1
1.2 ROS安裝 4
1.3 ROS支持的機器人 6
1.4 ROS網(wǎng)上資源 6
第二章 ROS總體框架及基本命令 7
2.1 ROS總體框架 7
2.1.1 文件系統(tǒng)級 7
2.1.2 計算圖級 9
2.1.3 社區(qū)級 11
2.1.4 更高層概念 12
2.1.5 名稱 12
2.2 ROS基本命令 15
2.2.1 ROS文件系統(tǒng)命令 15
2.2.2 ROS核心命令 26
2.3 工具 35
2.3.1 3D可視化工具:rviz 35
2.3.2 傳感器數(shù)據(jù)記錄與可視化工具:rosbag和rxbag 45
2.3.3 畫圖工具:rxplot 47
2.3.4 系統(tǒng)可視化工具:rxgraph 49
2.3.5 rxconsole 49
2.3.6 tf命令 51
2.4 例子 52
2.4.1 創(chuàng)建ROS消息和服務(wù) 52
2.4.2 記錄和回放數(shù)據(jù) 54
2.4.3 手工創(chuàng)建ROS功能包 59
2.4.4 大項目上運行roslaunch 60
2.4.5 在多臺機器上運行ROS系統(tǒng) 66
2.4.6 定義客戶消息 68
第三章 ROS客戶端庫 70
3.1 概述 70
3.2 roscpp客戶端庫 71
3.2.1 簡單的主題發(fā)布者和主題訂閱者 72
3.2.2 簡單的服務(wù)器端和客戶端 78
3.2.3 roscpp中參數(shù)的使用 81
3.2.4 從節(jié)點句柄存取私有名稱 83
3.2.5 用類方法訂閱和回調(diào)服務(wù) 84
3.2.6 計時器 85
3.2.7 帶動態(tài)可重配置及參數(shù)服務(wù)器的主題發(fā)布者/訂閱者節(jié)點(C++) 87
3.2.8 帶動態(tài)可重配置及參數(shù)服務(wù)器的主題發(fā)布者/訂閱者節(jié)點(Python) 95
3.2.9 組合C++/Python主題發(fā)布者/訂閱者節(jié)點 101
3.3 rospy客戶端庫 101
3.3.1 簡單的主題發(fā)布者/訂閱者 101
3.3.2 簡單的服務(wù)端和客戶端 105
3.3.3 rospy中參數(shù)的使用 108
3.3.4 rospy中numpy的使用 109
3.3.5 rospy運行日志 113
3.3.6 ROSPython Makefile 文件 115
3.3.7 設(shè)置PYTHONPATH 116
3.3.8 發(fā)布消息 116
3.4 roslisp客戶端庫 117
3.5 實驗階段的客戶端庫 117
3.5.1 rosjava 117
3.5.2 roslua 117
第四章 OpenCV 119
4.1 image common功能包集 119
4.1.1 image transport功能包 119
4.1.2 camera calibration parsers功能包 124
4.1.3 camera info manager功能包 126
4.1.4 polled camera功能包 127
4.2 image pipeline功能包集 127
4.3 vision opencv功能包集 128
4.3.1 opencv2 128
4.3.2 cv bridge 128
4.3.3 image geometry 139
4.4 投影tf坐標(biāo)系到圖像(C++) 140
4.5 演示例子 145
4.5.1 使用顏色追蹤物體 145
4.5.2 識別物體 148
第五章 SLAM和導(dǎo)航 150
5.1 使用tf配置機器人 150
5.2 通過ROS發(fā)布里程計信息 154
5.3 通過ROS發(fā)布傳感器數(shù)據(jù)流 158
5.4 SLAM 163
5.4.1 SLAM簡介 163
5.4.2 slam gmapping功能包 163
5.4.3 使用記錄的數(shù)據(jù)建立地圖 167
5.4.4 模擬器中建立地圖 168
5.4.5 模擬器中使用客戶定制地圖 170
5.5 配置和使用導(dǎo)航功能包集 172
5.5.1 導(dǎo)航功能包集基本操作 172
5.5.2 在機器人上設(shè)置和配置導(dǎo)航功能包集 173
5.5.3 rviz與導(dǎo)航功能包集配合使用 176
5.5.4 發(fā)送目標(biāo)到導(dǎo)航功能包集 178
第六章 抓取操作 182
6.1 機器人手臂的運動規(guī)劃 182
6.1.1 安裝和配置 182
6.1.2 編譯手臂導(dǎo)航功能包集 182
6.1.3 啟動模擬器和仿真環(huán)境 183
6.1.4 啟動相關(guān)節(jié)點 183
6.1.5 控制手臂運動 185
6.2 運動規(guī)劃的環(huán)境表示 203
6.2.1 基于自濾波數(shù)據(jù)構(gòu)建碰撞地圖 203
6.2.2 檢測關(guān)節(jié)軌跡碰撞 208
6.2.3 給定機器人狀態(tài)下的碰撞檢測 212
6.2.4 添加已知點到運動規(guī)劃環(huán)境 219
6.2.5 添加物體到機器人本體 224
6.3 用于PR2機器人手臂的運動學(xué) 230
6.3.1 從PR2運動學(xué)開始 230
6.3.2 從運動學(xué)節(jié)點獲取運動學(xué)求解器信息 231
6.3.3 PR2手臂運動學(xué)正解 233
6.3.4 PR2手臂運動學(xué)逆解 237
6.3.5 PR2手臂無碰撞運動學(xué)逆解 240
6.4 用于PR2機器人手臂的安全軌跡控制 245
6.5 使用軌跡濾波節(jié)點進(jìn)行軌跡濾波 247
6.5.1 生成無碰撞三次樣條軌跡 247
6.5.2 使用軌跡濾波服務(wù)器對關(guān)節(jié)軌跡進(jìn)行濾波 248
6.5.3 學(xué)習(xí)如何創(chuàng)建自己的軌跡濾波 253
6.6 機器人狀態(tài)和軌跡可視化 256
第七章 Kinect 260
7.1 Kinect簡介 260
7.2 安裝驅(qū)動 261
7.2.1 Ubuntu系統(tǒng)上安裝Kinect 261
7.2.2 基于源的安裝 261
7.3 測試 263
7.3.1 測試Kinect彩色攝像機 263
7.3.2 測試Kinect深度攝像機 263
7.3.3 測試Kinect馬達(dá) 264
7.4 openni camera 264
7.5 openni tracker 268
第八章 點云庫 270
8.1 PCL簡介 270
8.1.1 PCL架構(gòu) 270
8.1.2 PCL數(shù)據(jù)結(jié)構(gòu) 272
8.1.3 PCL與ROS的集成 273
8.2 PCL可視化庫 273
8.3 PCL與Kinect連接 279
8.4 例子 284
第九章 綜合演示示例 288
9.1 實驗一:SLAM(即時定位與地圖構(gòu)建) 288
9.2 實驗二:機器人導(dǎo)航 294
9.3 實驗三:識別并抓取物體 300
參考文獻(xiàn) 303
彩圖