
智能機器人開發與實踐 內容簡介
本書專為入門讀者編寫,通過由淺入深的方式講解智能機器人的核心技術與開發流程。為適應機器人技術的迅猛發展,本書在第1版的基礎上進行了修訂,增加了部分新技術的理論以及全部技術在Ubuntu18.04版本上的具體實現方法。全書內容分為三部分:首先,介紹概念與相關基礎知識,包括機器人的概念、Ubuntu Linux操作係統和ROS知識;然後,介紹機器人核心功能的實現,涵蓋機器人安裝與初步使用、機器人視覺功能、機器人自主導航功能、機器人語音交互功能與機器人機械臂抓取功能;同時,介紹機器人的場景應用,通過幾個例子全麵演示服務機器人的開發過程。 本書注重理論與實踐相結合,實用價值顯著,既可作為高等院校計算機科學、機器人工程等相關專業的教學用書,也可供智能機器人開發愛好者自學參考。
智能機器人開發與實踐 作者簡介
段峰,南開大學人工智能學院教授,研究領域為腦科學與機器人,在腦肌電穩定識別技術、單元化生產線的人機共融技術方麵取得了係列成果。累計發表論文100餘篇,出版英文專著2部,授權專利9項。教學上,長期從事機器人相關課程的教學,並擔任南開大學機器人團隊的指導教師,所指導的團隊連續三年獲得連續三年獲得日本機器人世界公開賽服務機器人項目冠軍,以及“華為杯”中國大學生智能設計競賽全國總冠軍等獎項。
智能機器人開發與實踐 目錄
目 錄
前言
第一部分 概念與相關基礎知識
第1章 機器人的概念2
1.1 機器人相關定義和分類2
1.1.1 機器人相關定義2
1.1.2 服務機器人的分類3
1.2 現代機器人的發展歷程4
1.2.1 現代機器人研究初期4
1.2.2 20世紀70年代5
1.2.3 20世紀80年代6
1.2.4 20世紀90年代8
1.2.5 21世紀初10
1.2.6 21世紀第二個十年14
1.2.7 21世紀20年代18
1.3 機器人的組成20
1.3.1 執行機構20
1.3.2 驅動裝置21
1.3.3 傳感裝置21
1.3.4 控製係統21
1.3.5 智能係統21
1.3.6 智能人機接口係統22
1.4 機器人的關鍵技術22
1.5 機器人的發展趨勢23
習題24
第2章 Ubuntu Linux操作係統25
2.1 Linux和Ubuntu簡介25
2.1.1 Linux簡介25
2.1.2 Ubuntu簡介26
2.1.3 Ubuntu的文件係統27
2.2 Ubuntu的安裝28
2.2.1 Ubuntu18.04係統啟動盤
的製作28
2.2.2 Ubuntu18.04的安裝35
2.3 shell命令39
2.3.1 Ubuntu的終端39
2.3.2 基礎的shell命令40
習題49
第3章 ROS入門50
3.1 ROS簡介50
3.1.1 為什麼使用ROS50
3.1.2 什麼是ROS51
3.1.3 ROS與計算機操作係統
的區別51
3.1.4 ROS的主要特點52
3.2 ROS的安裝與卸載53
3.2.1 ROS的版本53
3.2.2 安裝和配置ROS Melodic53
3.2.3 安裝和配置ROS Noetic56
3.2.4 卸載ROS57
3.3 進一步學習資源57
習題58
第4章 ROS框架和使用基礎59
4.1 ROS框架59
4.1.1 文件係統級59
4.1.2 計算圖級60
4.1.3 社區級61
4.2 ROS使用基礎62
4.2.1 catkin簡介62
4.2.2 工作空間及其創建方法62
4.2.3 創建ROS工程包65
4.2.4 編譯ROS工程包65
4.2.5 創建ROS節點65
4.2.6 編譯運行ROS節點66
4.2.7 roslaunch的使用67
4.2.8 創建ROS消息和服務69
4.2.9 編寫簡單的消息發布
器和訂閱器(C++語言
實現)72
4.2.10 編寫簡單的消息發布
器和訂閱器(Python
語言實現)74
4.2.11 測試簡單的消息發布器
和訂閱器76
4.2.12 編寫簡單的服務器和客
戶端(C++語言實現)77
4.2.13 編寫簡單的服務器和
客戶端(Python語言
實現)79
4.2.14 測試簡單的服務器和
客戶端80
習題81
第5章 ROS的調試82
5.1 常用的ROS調試命令82
5.2 常用的ROS調試工具84
5.2.1 使用rosconsole在運行
時修改調試級別84
5.2.2 使用roswtf檢測信號的
潛在問題86
5.2.3 使用rqt_graph顯示節
點狀態圖87
5.2.4 使用rqt_plot繪製標量
數據圖88
5.2.5 使用image_view顯示
二維圖像89
5.2.6 使用RViz實現3D數據
可視化90
5.2.7 使用rosbag和rqt_bag
記錄與回放數據91
5.2.8 rqt插件與rx應用93
5.3 ROS基本命令總結94
5.3.1 創建ROS工作空間94
5.3.2 package相關操作94
5.3.3 節點相關操作95
5.3.4 話題相關操作95
5.3.5 服務相關操作96
5.3.6 rosparam相關操作97
5.3.7 bag相關操作97
5.3.8 rosmsg相關操作98
5.3.9 rossrv相關操作99
5.3.10 ROS的其他命令99
習題99
第二部分 機器人核心
功能的實現
第6章 機器人安裝與初步使用103
6.1 TurtleBot機器人簡介103
6.2 TurtleBot機器人的硬件組成
與配置104
6.3 TurtleBot機器人的軟件安裝
與測試105
6.3.1 ROS Melodic版本的
安裝方法105
6.3.2 ROS Noetic版本的安
裝方法107
6.3.3 安裝後的配置107
6.4 啟動TurtleBot108
6.5 通過鍵盤手動控製TurtleBot109
6.6 通過腳本控製TurtleBot110
6.7 監控Kobuki電池狀態110
6.8 TurtleBot機器人的擴展111
習題113
第7章 機器人視覺功能的實現114
7.1 視覺傳感器114
7.1.1 Kinect視覺傳感器115
7.1.2 RealSense視覺傳感器115
7.2 驅動的安裝與測試116
7.3 同時運行兩台Kinect119
7.4 同時運行Kinect與RealSense121
7.5 在ROS中使用OpenCV
處理RGB圖像122
7.5.1 在ROS中安裝
OpenCV122
7.5.2 在ROS代碼中使用
OpenCV122
7.5.3 理解ROS-OpenCV
轉換架構123
7.5.4 ROS節點示例125
7.6 點雲庫及其使用128
7.6.1 點雲及點雲庫簡介128
7.6.2 PCL數據類型129
7.6.3 訂閱和發布點雲消息130
7.6.4 在ROS中使用PCL
教程132
7.6.5 PCL的一個簡單應用——
檢測門的開關狀態137
習題137
第8章 機器人視覺功能的實現
進階138
8.1 機器人跟隨功能的實現138
8.1.1 理論基礎138
8.1.2 跟隨功能的運行和測試139
8.2 機器人揮手識別功能的實現142
8.2.1 機器人揮手識別功能的
實現框架及難點分析142
8.2.2 基於AdaBoost和Cascade
算法的人臉檢測143
8.2.3 用模板匹配算法識別
人手145
8.2.4 基於YCrCb顏色空間的
膚色分割146
8.2.5 揮手識別功能的運行和
測試147
8.3 機器人物體識別與定位功能的
實現147
8.3.1 基於Hue直方圖的滑動
窗口模板匹配方法147
8.3.2 基於空間點雲數據的物
體定位方法148
8.3.3 物體識別與定位的實現
和測試149
8.4 機器人人臉及性別識別功能的
實現151
8.4.1 基於OpenCV的傳統人臉
識別與性別識別方法151
8.4.2 基於OpenCV的人臉識
別與性別識別的運行和
測試152
8.4.3 基於Dlib庫的人臉識別
方法153
8.4.4 基於Dlib庫的人臉識別
方法的運行和測試153
8.4.5 基於YOLO的物體識別
方法158
習題160
第9章 機器人自主導航功能161
9.1 機器人自主導航關鍵技術161
9.1.1 機器人的定位與建圖161
9.1.2 路徑規劃164
9.2 Kobuki基座模型運動學
分析167
9.3 導航工程包集169
9.4 導航工程包集使用基礎169
9.4.1 導航工程包集在機器人
上的安裝與配置169
9.4.2 機器人tf配置176
9.4.3 基礎導航調試指南181
9.4.4 通過ROS發布裏程計
測量信息184
9.4.5 通過ROS發布傳感器
數據流188
9.5 在TurtleBot上配置並使用導航
工程包集195
9.5.1 使用TurtleBot創建
SLAM地圖195
9.5.2 使用TurtleBot已知
地圖的自主導航196
習題197
第10章 機器人語音交互功能的
基礎理論198
10.1 語音識別198
10.1.1 聲學模型199
10.1.2 語言模型202
10.2 語義理解206
10.3 語音合成207
第11章 機器人語音交互功能的
實現—PocketSphinx209
11.1 硬件設備209
11.2 PocketSphinx語音識別係統
簡介210
11.3 安裝和測試PocketSphinx—
Melodic版本211
11.3.1 安裝PocketSphinx211
11.3.2 測試PocketSphinx語音
識別211
習題215
第12章 機器人機械臂抓取功能的
實現216
12.1 機械臂硬件組裝216
12.2 機械臂運動學分析217
12.3 機械臂舵機ID設置218
12.4 使用USB2Dynamixel
控製TurtleBot Arm223
12.4.1 安裝和測試dynamixel_
motor軟件包223
12.4.2 機械臂抓取功能的
實現227
習題231
第三部分 機器人的場景應用
第13章 機器人綜合應用案例一:
長命令識別與多任務
執行234
13.1 案例目標234
13.2 語音識別命令234
13.3 在家居環境中自主導航235
13.4 物體識別與抓取236
習題237
第14章 機器人綜合應用案例二:
跟隨與協助主人238
14.1 案例目標238
14.2 語音識別命令238
14.3 跟隨與自主導航239
14.4 檢測與識別人臉240
第15章 機器人綜合應用案例三:
顧客揮手示意機器人點餐241
15.1 案例目標241
15.2 機器人即時建圖242
15.3 機器人識別揮手並移向揮手人242
15.4 語音識別菜單243
15.5 自主導航回到吧台243
參考文獻245
前言
第一部分 概念與相關基礎知識
第1章 機器人的概念2
1.1 機器人相關定義和分類2
1.1.1 機器人相關定義2
1.1.2 服務機器人的分類3
1.2 現代機器人的發展歷程4
1.2.1 現代機器人研究初期4
1.2.2 20世紀70年代5
1.2.3 20世紀80年代6
1.2.4 20世紀90年代8
1.2.5 21世紀初10
1.2.6 21世紀第二個十年14
1.2.7 21世紀20年代18
1.3 機器人的組成20
1.3.1 執行機構20
1.3.2 驅動裝置21
1.3.3 傳感裝置21
1.3.4 控製係統21
1.3.5 智能係統21
1.3.6 智能人機接口係統22
1.4 機器人的關鍵技術22
1.5 機器人的發展趨勢23
習題24
第2章 Ubuntu Linux操作係統25
2.1 Linux和Ubuntu簡介25
2.1.1 Linux簡介25
2.1.2 Ubuntu簡介26
2.1.3 Ubuntu的文件係統27
2.2 Ubuntu的安裝28
2.2.1 Ubuntu18.04係統啟動盤
的製作28
2.2.2 Ubuntu18.04的安裝35
2.3 shell命令39
2.3.1 Ubuntu的終端39
2.3.2 基礎的shell命令40
習題49
第3章 ROS入門50
3.1 ROS簡介50
3.1.1 為什麼使用ROS50
3.1.2 什麼是ROS51
3.1.3 ROS與計算機操作係統
的區別51
3.1.4 ROS的主要特點52
3.2 ROS的安裝與卸載53
3.2.1 ROS的版本53
3.2.2 安裝和配置ROS Melodic53
3.2.3 安裝和配置ROS Noetic56
3.2.4 卸載ROS57
3.3 進一步學習資源57
習題58
第4章 ROS框架和使用基礎59
4.1 ROS框架59
4.1.1 文件係統級59
4.1.2 計算圖級60
4.1.3 社區級61
4.2 ROS使用基礎62
4.2.1 catkin簡介62
4.2.2 工作空間及其創建方法62
4.2.3 創建ROS工程包65
4.2.4 編譯ROS工程包65
4.2.5 創建ROS節點65
4.2.6 編譯運行ROS節點66
4.2.7 roslaunch的使用67
4.2.8 創建ROS消息和服務69
4.2.9 編寫簡單的消息發布
器和訂閱器(C++語言
實現)72
4.2.10 編寫簡單的消息發布
器和訂閱器(Python
語言實現)74
4.2.11 測試簡單的消息發布器
和訂閱器76
4.2.12 編寫簡單的服務器和客
戶端(C++語言實現)77
4.2.13 編寫簡單的服務器和
客戶端(Python語言
實現)79
4.2.14 測試簡單的服務器和
客戶端80
習題81
第5章 ROS的調試82
5.1 常用的ROS調試命令82
5.2 常用的ROS調試工具84
5.2.1 使用rosconsole在運行
時修改調試級別84
5.2.2 使用roswtf檢測信號的
潛在問題86
5.2.3 使用rqt_graph顯示節
點狀態圖87
5.2.4 使用rqt_plot繪製標量
數據圖88
5.2.5 使用image_view顯示
二維圖像89
5.2.6 使用RViz實現3D數據
可視化90
5.2.7 使用rosbag和rqt_bag
記錄與回放數據91
5.2.8 rqt插件與rx應用93
5.3 ROS基本命令總結94
5.3.1 創建ROS工作空間94
5.3.2 package相關操作94
5.3.3 節點相關操作95
5.3.4 話題相關操作95
5.3.5 服務相關操作96
5.3.6 rosparam相關操作97
5.3.7 bag相關操作97
5.3.8 rosmsg相關操作98
5.3.9 rossrv相關操作99
5.3.10 ROS的其他命令99
習題99
第二部分 機器人核心
功能的實現
第6章 機器人安裝與初步使用103
6.1 TurtleBot機器人簡介103
6.2 TurtleBot機器人的硬件組成
與配置104
6.3 TurtleBot機器人的軟件安裝
與測試105
6.3.1 ROS Melodic版本的
安裝方法105
6.3.2 ROS Noetic版本的安
裝方法107
6.3.3 安裝後的配置107
6.4 啟動TurtleBot108
6.5 通過鍵盤手動控製TurtleBot109
6.6 通過腳本控製TurtleBot110
6.7 監控Kobuki電池狀態110
6.8 TurtleBot機器人的擴展111
習題113
第7章 機器人視覺功能的實現114
7.1 視覺傳感器114
7.1.1 Kinect視覺傳感器115
7.1.2 RealSense視覺傳感器115
7.2 驅動的安裝與測試116
7.3 同時運行兩台Kinect119
7.4 同時運行Kinect與RealSense121
7.5 在ROS中使用OpenCV
處理RGB圖像122
7.5.1 在ROS中安裝
OpenCV122
7.5.2 在ROS代碼中使用
OpenCV122
7.5.3 理解ROS-OpenCV
轉換架構123
7.5.4 ROS節點示例125
7.6 點雲庫及其使用128
7.6.1 點雲及點雲庫簡介128
7.6.2 PCL數據類型129
7.6.3 訂閱和發布點雲消息130
7.6.4 在ROS中使用PCL
教程132
7.6.5 PCL的一個簡單應用——
檢測門的開關狀態137
習題137
第8章 機器人視覺功能的實現
進階138
8.1 機器人跟隨功能的實現138
8.1.1 理論基礎138
8.1.2 跟隨功能的運行和測試139
8.2 機器人揮手識別功能的實現142
8.2.1 機器人揮手識別功能的
實現框架及難點分析142
8.2.2 基於AdaBoost和Cascade
算法的人臉檢測143
8.2.3 用模板匹配算法識別
人手145
8.2.4 基於YCrCb顏色空間的
膚色分割146
8.2.5 揮手識別功能的運行和
測試147
8.3 機器人物體識別與定位功能的
實現147
8.3.1 基於Hue直方圖的滑動
窗口模板匹配方法147
8.3.2 基於空間點雲數據的物
體定位方法148
8.3.3 物體識別與定位的實現
和測試149
8.4 機器人人臉及性別識別功能的
實現151
8.4.1 基於OpenCV的傳統人臉
識別與性別識別方法151
8.4.2 基於OpenCV的人臉識
別與性別識別的運行和
測試152
8.4.3 基於Dlib庫的人臉識別
方法153
8.4.4 基於Dlib庫的人臉識別
方法的運行和測試153
8.4.5 基於YOLO的物體識別
方法158
習題160
第9章 機器人自主導航功能161
9.1 機器人自主導航關鍵技術161
9.1.1 機器人的定位與建圖161
9.1.2 路徑規劃164
9.2 Kobuki基座模型運動學
分析167
9.3 導航工程包集169
9.4 導航工程包集使用基礎169
9.4.1 導航工程包集在機器人
上的安裝與配置169
9.4.2 機器人tf配置176
9.4.3 基礎導航調試指南181
9.4.4 通過ROS發布裏程計
測量信息184
9.4.5 通過ROS發布傳感器
數據流188
9.5 在TurtleBot上配置並使用導航
工程包集195
9.5.1 使用TurtleBot創建
SLAM地圖195
9.5.2 使用TurtleBot已知
地圖的自主導航196
習題197
第10章 機器人語音交互功能的
基礎理論198
10.1 語音識別198
10.1.1 聲學模型199
10.1.2 語言模型202
10.2 語義理解206
10.3 語音合成207
第11章 機器人語音交互功能的
實現—PocketSphinx209
11.1 硬件設備209
11.2 PocketSphinx語音識別係統
簡介210
11.3 安裝和測試PocketSphinx—
Melodic版本211
11.3.1 安裝PocketSphinx211
11.3.2 測試PocketSphinx語音
識別211
習題215
第12章 機器人機械臂抓取功能的
實現216
12.1 機械臂硬件組裝216
12.2 機械臂運動學分析217
12.3 機械臂舵機ID設置218
12.4 使用USB2Dynamixel
控製TurtleBot Arm223
12.4.1 安裝和測試dynamixel_
motor軟件包223
12.4.2 機械臂抓取功能的
實現227
習題231
第三部分 機器人的場景應用
第13章 機器人綜合應用案例一:
長命令識別與多任務
執行234
13.1 案例目標234
13.2 語音識別命令234
13.3 在家居環境中自主導航235
13.4 物體識別與抓取236
習題237
第14章 機器人綜合應用案例二:
跟隨與協助主人238
14.1 案例目標238
14.2 語音識別命令238
14.3 跟隨與自主導航239
14.4 檢測與識別人臉240
第15章 機器人綜合應用案例三:
顧客揮手示意機器人點餐241
15.1 案例目標241
15.2 機器人即時建圖242
15.3 機器人識別揮手並移向揮手人242
15.4 語音識別菜單243
15.5 自主導航回到吧台243
參考文獻245
最後修改:2026 年 04 月 08 日
© 允許規範轉載
