天天看點

機器人系統設計與制作:Python語言實作導讀

<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