開(kāi)源機(jī)器人操作系統(tǒng)--ROS
目前,ROS(robot operating system)逐步成為機(jī)器人研發(fā)領(lǐng)域的通用性軟件平臺(tái)!堕_(kāi)源機(jī)器人操作系統(tǒng)——ROS》是國(guó)內(nèi)第一本全面介紹ROS的中文版圖書(shū)。
ROS是開(kāi)源的用于機(jī)器人的一種后操作系統(tǒng),或者說(shuō)次級(jí)操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能,包含硬件抽象描述、底層驅(qū)動(dòng)程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理,它也提供一些工具程序和庫(kù)用于獲取、建立、編寫(xiě)和運(yùn)行多機(jī)整合的程序。
《開(kāi)源機(jī)器人操作系統(tǒng)——ROS》附光盤(pán)一張,內(nèi)容包括書(shū)中的部分例子源代碼和Diamondback及Electric版本安裝后在本地硬盤(pán)上的全部程序,以便于讀者對(duì)照自己的安裝版本進(jìn)行調(diào)試。
《開(kāi)源機(jī)器人操作系統(tǒng)——ROS》可作為機(jī)器人研究者以及機(jī)器人愛(ài)好者應(yīng)用ROS構(gòu)建機(jī)器人軟件系統(tǒng)的參考手冊(cè)。
更多科學(xué)出版社服務(wù),請(qǐng)掃碼獲取。
ROS是開(kāi)源的用于機(jī)器人的一種后操作系統(tǒng), 或者說(shuō)次級(jí)操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能, 包含硬件抽象描述、底層驅(qū)動(dòng)程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理, 它也提供一些工具程序和庫(kù)用于獲取、建立、編寫(xiě)和運(yùn)行多機(jī)整合的程序。本書(shū)附光盤(pán)一張, 內(nèi)容包括書(shū)中的部分例子源代碼和Diamondback及Electric版本安裝后在本地硬盤(pán)上的全部程序, 以便于讀者對(duì)照自己的安裝版本進(jìn)行調(diào)試。
目錄
前言
術(shù)語(yǔ)列表
第一章 ROS簡(jiǎn)介 1
1.1 ROS簡(jiǎn)介 1
1.2 ROS安裝 4
1.3 ROS支持的機(jī)器人 6
1.4 ROS網(wǎng)上資源 6
第二章 ROS總體框架及基本命令 7
2.1 ROS總體框架 7
2.1.1 文件系統(tǒng)級(jí) 7
2.1.2 計(jì)算圖級(jí) 9
2.1.3 社區(qū)級(jí) 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 畫(huà)圖工具: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 大項(xiàng)目上運(yùn)行roslaunch 60
2.4.5 在多臺(tái)機(jī)器上運(yùn)行ROS系統(tǒng) 66
2.4.6 定義客戶消息 68
第三章 ROS客戶端庫(kù) 70
3.1 概述 70
3.2 roscpp客戶端庫(kù) 71
3.2.1 簡(jiǎn)單的主題發(fā)布者和主題訂閱者 72
3.2.2 簡(jiǎn)單的服務(wù)器端和客戶端 78
3.2.3 roscpp中參數(shù)的使用 81
3.2.4 從節(jié)點(diǎn)句柄存取私有名稱 83
3.2.5 用類方法訂閱和回調(diào)服務(wù) 84
3.2.6 計(jì)時(shí)器 85
3.2.7 帶動(dòng)態(tài)可重配置及參數(shù)服務(wù)器的主題發(fā)布者/訂閱者節(jié)點(diǎn)(C++) 87
3.2.8 帶動(dòng)態(tài)可重配置及參數(shù)服務(wù)器的主題發(fā)布者/訂閱者節(jié)點(diǎn)(Python) 95
3.2.9 組合C++/Python主題發(fā)布者/訂閱者節(jié)點(diǎn) 101
3.3 rospy客戶端庫(kù) 101
3.3.1 簡(jiǎn)單的主題發(fā)布者/訂閱者 101
3.3.2 簡(jiǎn)單的服務(wù)端和客戶端 105
3.3.3 rospy中參數(shù)的使用 108
3.3.4 rospy中numpy的使用 109
3.3.5 rospy運(yùn)行日志 113
3.3.6 ROSPython Makefile 文件 115
3.3.7 設(shè)置PYTHONPATH 116
3.3.8 發(fā)布消息 116
3.4 roslisp客戶端庫(kù) 117
3.5 實(shí)驗(yàn)階段的客戶端庫(kù) 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 識(shí)別物體 148
第五章 SLAM和導(dǎo)航 150
5.1 使用tf配置機(jī)器人 150
5.2 通過(guò)ROS發(fā)布里程計(jì)信息 154
5.3 通過(guò)ROS發(fā)布傳感器數(shù)據(jù)流 158
5.4 SLAM 163
5.4.1 SLAM簡(jiǎn)介 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 在機(jī)器人上設(shè)置和配置導(dǎo)航功能包集 173
5.5.3 rviz與導(dǎo)航功能包集配合使用 176
5.5.4 發(fā)送目標(biāo)到導(dǎo)航功能包集 178
第六章 抓取操作 182
6.1 機(jī)器人手臂的運(yùn)動(dòng)規(guī)劃 182
6.1.1 安裝和配置 182
6.1.2 編譯手臂導(dǎo)航功能包集 182
6.1.3 啟動(dòng)模擬器和仿真環(huán)境 183
6.1.4 啟動(dòng)相關(guān)節(jié)點(diǎn) 183
6.1.5 控制手臂運(yùn)動(dòng) 185
6.2 運(yùn)動(dòng)規(guī)劃的環(huán)境表示 203
6.2.1 基于自濾波數(shù)據(jù)構(gòu)建碰撞地圖 203
6.2.2 檢測(cè)關(guān)節(jié)軌跡碰撞 208
6.2.3 給定機(jī)器人狀態(tài)下的碰撞檢測(cè) 212
6.2.4 添加已知點(diǎn)到運(yùn)動(dòng)規(guī)劃環(huán)境 219
6.2.5 添加物體到機(jī)器人本體 224
6.3 用于PR2機(jī)器人手臂的運(yùn)動(dòng)學(xué) 230
6.3.1 從PR2運(yùn)動(dòng)學(xué)開(kāi)始 230
6.3.2 從運(yùn)動(dòng)學(xué)節(jié)點(diǎn)獲取運(yùn)動(dòng)學(xué)求解器信息 231
6.3.3 PR2手臂運(yùn)動(dòng)學(xué)正解 233
6.3.4 PR2手臂運(yùn)動(dòng)學(xué)逆解 237
6.3.5 PR2手臂無(wú)碰撞運(yùn)動(dòng)學(xué)逆解 240
6.4 用于PR2機(jī)器人手臂的安全軌跡控制 245
6.5 使用軌跡濾波節(jié)點(diǎn)進(jìn)行軌跡濾波 247
6.5.1 生成無(wú)碰撞三次樣條軌跡 247
6.5.2 使用軌跡濾波服務(wù)器對(duì)關(guān)節(jié)軌跡進(jìn)行濾波 248
6.5.3 學(xué)習(xí)如何創(chuàng)建自己的軌跡濾波 253
6.6 機(jī)器人狀態(tài)和軌跡可視化 256
第七章 Kinect 260
7.1 Kinect簡(jiǎn)介 260
7.2 安裝驅(qū)動(dòng) 261
7.2.1 Ubuntu系統(tǒng)上安裝Kinect 261
7.2.2 基于源的安裝 261
7.3 測(cè)試 263
7.3.1 測(cè)試Kinect彩色攝像機(jī) 263
7.3.2 測(cè)試Kinect深度攝像機(jī) 263
7.3.3 測(cè)試Kinect馬達(dá) 264
7.4 openni camera 264
7.5 openni tracker 268
第八章 點(diǎn)云庫(kù) 270
8.1 PCL簡(jiǎn)介 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可視化庫(kù) 273
8.3 PCL與Kinect連接 279
8.4 例子 284
第九章 綜合演示示例 288
9.1 實(shí)驗(yàn)一:SLAM(即時(shí)定位與地圖構(gòu)建) 288
9.2 實(shí)驗(yàn)二:機(jī)器人導(dǎo)航 294
9.3 實(shí)驗(yàn)三:識(shí)別并抓取物體 300
參考文獻(xiàn) 303
彩圖