<b>前 言</b>
本書包含12章,主要介紹如何從零開始建構自主移動的機器人,并使用python進行程式設計。本書所提到的機器人是用于家庭、飯店、餐廳的服務機器人,我們将按照順序介紹如何一步一步建構它。書中從機器人的基本概念開始,然後過渡到機器人三維模組化和仿真,在成功進行機器人仿真之後,将介紹建構機器人原型所需要的硬體元件。
機器人的軟體部分主要基于python程式設計語言和其他一些軟體架構開發,這些軟體架構包括機器人作業系統(ros)、opencv等。你将會從設計機器人到設計人機界面等多個方面來了解如何使用python。gazebo仿真器常用來對機器人和機器視覺開發庫軟體如opencv、openni進行仿真。pcl用于處理機器人的2d和3d視覺資料。本書每章的開始部分都将首先介紹必需的理論以輔助了解下面的内容。全書内容已經經過機器人領域的專家審閱。
本書包含的内容
第1章,主要内容是機器人相關的基本概念和技術,這些對機器人新手來說是非常必要的。
第2章,介紹如何使用librecad和blender(免費軟體)設計機器人的2d和3d模型,還将示範如何使用blender的python api建構3d模型。
第3章,帶你領略如何使用gazebo和ros進行機器人仿真。
第4章,介紹機器人的硬體設計,包括建構chefbot所需的框圖和硬體元件。
第5章,内容涉及使用tiva c開發闆連接配接機器人執行機構和車輪編碼器,還包括使用dynamixel這樣的高端智能執行機構。
第6章,将使用tiva c開發闆連接配接機器人的超聲測距傳感器、紅外傳感器和imu。
第7章,介紹opencv、openni和pcl庫,及如何将這些庫檔案使用python語言和ros開發環境連接配接起來。
第8章,讨論語音識别和語音合成用到的各種庫檔案,還包括如何将這些庫檔案使用python語言和ros開發環境連接配接起來。
第9章,将介紹chatterbot的制作教程,這是為機器人互動做準備的。
第10章,内容涵蓋完整的硬體內建和核心軟體子產品兩部分,主要讨論服務機器人的自主導航以及如何使用ros和python進行程式設計。
第11章,包括如何建構用于操作餐廳機器人的gui教程,gui由qt和python包裝器pyqt開發。
第12章,探讨如何對機器人進行标定并進行最後的運作測試。
使用須知
本書主要介紹如何建構機器人。在開始學習之前,我們需要準備一些硬體裝置。機器人可以從零開始建構,也可以買有編碼器回報的差分傳動機器人。需要購買一個類似texas instruments launchpad的開發闆作為嵌入式處理單元,至少有一台筆記本電腦來完成機器人運算。在本書中,我們将使用intel nuc來進行機器人運算,它結構緊湊、性能良好。除此之外,為了擷取3d圖像,還需要有3d傳感器,如雷射雷達、kinect或asus xtion pro。
有關軟體部分,你需要了解gnu/linux指令,還要熟悉python,此外運作本書的例程還要安裝ubuntu 14.04.2 lts。如果你還熟悉ros、opencv、openni和pcl那就最完美了。運作例程需要安裝ros indigo。
适用讀者
本書适用于對服務機器人領域感興趣的創業者,尋求實作機器人更多功能的專業人士,想更多地了解機器人的研究者,以及希望學習機器人的發燒友和學生。本書講解過程循序漸進,易于了解。
讀者支援
本書配套了示例代碼和彩圖,讀者可從https://github.com/hzbooks/learning-robotics-using-python/下載下傳。
<b>目 錄</b>
前言
第1章 機器人學概述
<a href="https://yq.aliyun.com/articles/83094/" target="_blank">1.1 什麼是機器人 </a>
<a href="https://yq.aliyun.com/articles/83111/" target="_blank">1.4 如何制作機器人 </a>
<a href="https://yq.aliyun.com/articles/83116/" target="_blank">1.5 本章小結 </a>
第2章 服務機器人的機械設計
<a href="https://yq.aliyun.com/articles/83128" target="_blank">2.2 機器人的傳動裝置 </a>
<a href="https://yq.aliyun.com/articles/83147/" target="_blank">2.5 用blender制作機器人的三維模型 </a>
<a href="https://yq.aliyun.com/articles/83152/" target="_blank">2.6 習題 </a>
<a href="https://yq.aliyun.com/articles/83155/" target="_blank">2.7 本章小結 </a>
第3章 用ros和gazebo進行機器人仿真
<a href="https://yq.aliyun.com/articles/83159/" target="_blank">3.2 習題 </a>
第4章 設計chefbot的硬體部分 76
4.1 chefbot硬體的規格标準 76
4.2 機器人的硬體架構框圖 77
4.2.1 電機和編碼器 77
4.2.2 電機驅動器 79
4.2.3 嵌入式控制闆 81
4.2.4 超聲傳感器 82
4.2.5 慣性測量單元 83
4.2.6 kinect 83
4.2.7 中央處理單元 84
4.2.8 揚聲器/麥克風 85
4.2.9 電源/電池 85
4.3 chefbot硬體的工作原理 86
4.4 習題 87
4.5 本章小結 88
第5章 機器人執行機構與車輪編碼器 89
5.1 直流減速電機接入tiva c開發闆 89
5.1.1 差速傳動輪式機器人 92
5.1.2 安裝energia內建開發環境 92
5.1.3 電機接口代碼 94
5.2 正交編碼器接入tiva c開發闆 98
5.2.1 編碼器資料的處理 99
5.2.2 正交編碼器接口代碼 101
5.3 dynamixel執行機構 104
5.4 習題 107
5.5 本章小結 107
第6章 機器人傳感器 108
6.1 超聲測距傳感器 108
6.2 紅外接近傳感器 113
6.3 慣性測量單元 115
6.3.1 慣性導航 116
6.3.2 mpu 6050接入tiva c開發闆 117
6.3.3 在energia中編寫接口代碼 119
6.4 利用energia将支援dmp的mpu 6050接入開發闆 121
6.5 習題 125
6.6 本章小結 125
第7章 視覺傳感器在python和ros中的程式設計方法 126
7.1 機器人視覺傳感器清單和圖像處理庫 126
7.2 opencv、openni和pcl簡介 129
7.2.1 什麼是opencv 129
7.2.2 什麼是openni 132
7.2.3 什麼是pcl 133
7.3 使用ros、opencv和openni進行kinect的python程式設計 134
7.3.1 啟動openni驅動的方法 134
7.3.2 opencv的ros接口 134
7.4 使用kinect、ros、openni和pcl處理點雲 139
7.5 将點雲轉換為雷射雷達資料 140
7.6 使用ros和kinect實作slam算法 141
7.7 習題 142
7.8 本章小結 142
第8章 使用python和ros實作語音識别及合成 143
8.1 語音識别技術 143
8.1.1 語音識别系統框圖 144
8.1.2 語音識别庫 145
8.1.3 windows語音識别開發平台 145
8.1.4 語音合成 145
8.1.5 語音合成庫 146
8.2 在ubuntu 14.04.2中使用python實作語音識别及合成 146
8.2.1 在ubuntu 14.04.2中安裝pocket sphinx及其python綁定 147
8.2.2 在ubuntu 14.04.2中使用pocket sphinx的python綁定 147
8.2.3 輸出結果 148
8.3 在ubuntu 14.04.2中使用pocket sphinx、gstreamer及python實作實時語音識别 149
8.4 在ubuntu 14.04.2中使用julius及python實作語音識别 151
8.4.1 julius語音識别器和python子產品的安裝 152
8.4.2 python-julius用戶端代碼 153
8.4.3 在pocket sphinx、julius中提高語音識别的準确度 154
8.4.4 在ubuntu 14.04.2中安裝espeak和festival 154
8.5 在windows中使用python實作語音識别及合成 155
8.6 在ros indigo中使用python實作語音識别 156
8.7 在ros indigo中使用python實作語音合成 157
8.8 習題 159
8.9 本章小結 159
第9章 使用python在chefbot中應用人工智能 160
9.1 chefbot中的互動系統框圖 160
9.2 aiml介紹 161
9.3 pyaiml介紹 164
9.3.1 在ubuntu 14.04.2上安裝pyaiml 165
9.3.2 從源碼中安裝pyaiml 165
9.4 使用aiml和python進行開發 165
9.5 使用a.l.i.c.e aiml檔案進行開發 167
9.5.1 将aiml檔案載入記憶體 168
9.5.2 載入aiml檔案并将其存為brain檔案 169
9.5.3 使用bootsrtap方法載入aiml檔案和brain檔案 169
9.6 将pyaiml內建到ros中 170
9.6.1 aiml_server.py 171
9.6.2 aiml_client.py 172
9.6.3 aiml_tts_client.py 172
9.6.4 aiml_speech_recog_client.py 173
9.6.5 start_chat.launch 174
9.6.6 start_tts_chat.launch 174
9.6.7 start_speech_chat.launch 175
9.7 習題 176
9.8 本章小結 177
第10章 對chefbot硬體進行內建并使用python與ros對接 178
10.1 建構chefbot硬體 178
10.2 chefbot pc配置及chefbot ros開發包設定 181
10.3 将chefbot傳感器接入tiva c開發闆 181
10.4 為chefbot編寫一個ros python驅動 185
10.5 了解chefbot ros啟動檔案 189
10.6 使用chefbot python節點和啟動檔案 190
10.6.1 在ros中使用slam建構房間地圖 195
10.6.2 使用ros實作定位和導航 196
10.7 習題 197
10.8 本章小結 197
第11章 使用qt和python設計機器人的圖形使用者界面 198
11.1 在ubuntu 14.04.2 lts中安裝qt 198
11.2 在qt中使用python綁定進行開發 199
11.2.1 pyqt 199
11.2.2 pyside 200
11.3 使用pyqt和pyside進行開發 200
11.3.1 qt設計器的介紹 200
11.3.2 qt的信号與槽機制 202
11.3.3 将ui檔案轉化為python代碼 202
11.3.4 為pyqt代碼添加槽定義 204
11.3.5 運作hello world gui應用 206
11.4 使用chefbot的控制gui進行開發 206
11.5 習題 213
11.6 本章小結 213
第12章 chefbot的标定和測試 214
12.1 使用ros标定xbox kinect 214
12.1.1 标定kinect的rgb相機 215
12.1.2 标定kinect ir相機 217
12.2 輪式裡程計的标定 218
12.2.1 裡程計誤差分析 219
12.2.2 誤差校正 220
12.3 标定mpu 6050 220
12.4 使用gui測試機器人 221
12.5 習題 223
12.6 本章小結 223