目 錄 Contents
推薦序一
推薦序二
推薦序三
前言
第1章 初識ROS 1
1.1 ROS是什么 1
1.1.1 ROS的起源 1
1.1.2 ROS的設計目標 2
1.1.3 ROS的特點 3
1.2 如何安裝ROS 4
1.2.1 操作系統(tǒng)與ROS版本的選擇 4
1.2.2 配置系統(tǒng)軟件源 6
1.2.3 添加ROS軟件源 6
1.2.4 添加密鑰 7
1.2.5 安裝ROS 7
1.2.6 初始化rosdep 8
1.2.7 設置環(huán)境變量 8
1.2.8 完成安裝 9
1.3 本書源碼下載 9
1.4 本章小結 10
第2章 ROS架構 11
2.1 ROS架構設計 11
2.2 計算圖 12
2.2.1 節(jié)點 12
2.2.2 消息 13
2.2.3 話題 13
2.2.4 服務 13
2.2.5 節(jié)點管理器 14
2.3 文件系統(tǒng) 14
2.3.1 功能包 14
2.3.2 元功能包 16
2.4 開源社區(qū) 17
2.5 ROS的通信機制 17
2.5.1 話題通信機制 18
2.5.2 服務通信機制 19
2.5.3 參數(shù)管理機制 20
2.6 話題與服務的區(qū)別 20
2.7 本章小結 21
第3章 ROS基礎 22
3.1 第一個ROS例程——小烏龜仿真 23
3.1.1 turtlesim功能包 23
3.1.2 控制烏龜運動 24
3.2 創(chuàng)建工作空間和功能包 25
3.2.1 什么是工作空間 25
3.2.2 創(chuàng)建工作空間 26
3.2.3 創(chuàng)建功能包 27
3.3 工作空間的覆蓋 28
3.3.1 ROS中工作空間的覆蓋 28
3.3.2 工作空間覆蓋示例 28
3.4 搭建Eclipse開發(fā)環(huán)境 30
3.4.1 安裝Eclipse 30
3.4.2 創(chuàng)建Eclipse工程文件 30
3.4.3 將工程導入Eclipse 31
3.4.4 設置頭文件路徑 31
3.4.5 運行/調試程序 32
3.5 RoboWare簡介 35
3.5.1 RoboWare的特點 35
3.5.2 RoboWare的安裝與使用 36
3.6 話題中的Publisher與Subscriber 37
3.6.1 烏龜例程中的Publisher與Subscriber 37
3.6.2 如何創(chuàng)建Publisher 37
3.6.3 如何創(chuàng)建Subscriber 40
3.6.4 編譯功能包 41
3.6.5 運行Publisher與Subscriber 42
3.6.6 自定義話題消息 44
3.7 服務中的Server和Client 46
3.7.1 烏龜例程中的服務 46
3.7.2 如何自定義服務數(shù)據 47
3.7.3 如何創(chuàng)建Server 48
3.7.4 如何創(chuàng)建Client 49
3.7.5 編譯功能包 51
3.7.6 運行Server和Client 51
3.8 ROS中的命名空間 52
3.8.1 有效的命名 52
3.8.2 命名解析 53
3.8.3 命名重映射 54
3.9 分布式多機通信 54
3.9.1 設置IP地址 55
3.9.2 設置ROS_MASTER_URI 56
3.9.3 多機通信測試 56
3.10 本章小結 57
第4章 ROS中的常用組件 58
4.1 launch啟動文件 58
4.1.1 基本元素 58
4.1.2 參數(shù)設置 60
4.1.3 重映射機制 61
4.1.4 嵌套復用 61
4.2 TF坐標變換 62
4.2.1 TF功能包 62
4.2.2 TF工具 63
4.2.3 烏龜例程中的TF 65
4.2.4 創(chuàng)建TF廣播器 67
4.2.5 創(chuàng)建TF監(jiān)聽器 68
4.2.6 實現(xiàn)烏龜跟隨運動 70
4.3 Qt工具箱 70
4.3.1 日志輸出工具(rqt_console) 71
4.3.2 計算圖可視化工具(rqt_graph) 71
4.3.3 數(shù)據繪圖工具(rqt_plot) 72
4.3.4 參數(shù)動態(tài)配置工具(rqt_reconfigure) 73
4.4 rviz三維可視化平臺 73
4.4.1 安裝并運行rviz 74
4.4.2 數(shù)據可視化 75
4.4.3 插件擴展機制 76
4.5 Gazebo仿真環(huán)境 78
4.5.1 Gazebo的特點 78
4.5.2 安裝并運行Gazebo 78
4.5.3 構建仿真環(huán)境 81
4.6 rosbag數(shù)據記錄與回放 82
4.6.1 記錄數(shù)據 82
4.6.2 回放數(shù)據 83
4.7 本章小結 84
第5章 機器人平臺搭建 85
5.1 機器人的定義 85
5.2 機器人的組成 86
5.2.1 執(zhí)行機構 87
5.2.2 驅動系統(tǒng) 87
5.2.3 傳感系統(tǒng) 87
5.2.4 控制系統(tǒng) 87
5.3 機器人系統(tǒng)搭建 88
5.3.1 MRobot 88
5.3.2 執(zhí)行機構的實現(xiàn) 88
5.3.3 驅動系統(tǒng)的實現(xiàn) 89
5.3.4 內部傳感系統(tǒng)的實現(xiàn) 90
5.4 基于Raspberry Pi的控制系統(tǒng)實現(xiàn) 90
5.4.1 硬件平臺Raspberry Pi 91
5.4.2 安裝Ubuntu 16.04 91
5.4.3 安裝ROS 93
5.4.4 控制系統(tǒng)與MRobot通信 94
5.4.5 PC端控制MRobot 97
5.5 為機器人裝配攝像頭 99
5.5.1 usb_cam功能包 99
5.5.2 PC端驅動攝像頭 100
5.5.3 Raspberry Pi驅動攝像頭 102
5.6 為機器人裝配Kinect 104
5.6.1 freenect_camera功能包 104
5.6.2 PC端驅動Kinect 106
5.6.3 Raspberry Pi驅動Kinect 109
5.6.4 Kinect電源改造 109
5.7 為機器人裝配激光雷達 110
5.7.1 rplidar功能包 110
5.7.2 PC端驅動rplidar 111
5.7.3 Raspberry Pi驅動rplidar 113
5.8 本章小結 113
第6章 機器人建模與仿真 114
6.1 統(tǒng)一機器人描述格式——URDF 114
6.1.1 標簽 114
6.1.2 標簽 115
6.1.3 標簽 116
6.1.4 標簽 116
6.2 創(chuàng)建機器人URDF模型 116
6.2.1 創(chuàng)建機器人描述功能包 116
6.2.2 創(chuàng)建URDF模型 117
6.2.3 URDF模型解析 120
6.2.4 在rviz中顯示模型 122
6.3 改進URDF模型 124
6.3.1 添加物理和碰撞屬性 124
6.3.2 使用xacro優(yōu)化URDF 125
6.3.