本書帶你入門學(xué)習(xí)如何使用樹莓派與Arduino構(gòu)建一個(gè)具有高級功能的機(jī)器人。本書將一步步地講授構(gòu)建機(jī)器人的過程,你將學(xué)到如何利用樹莓派提供的強(qiáng)大計(jì)算能力,如何利用Arduino與傳感器和電動機(jī)進(jìn)行更好的交互,并利用這些優(yōu)點(diǎn)來構(gòu)建機(jī)器人硬件系統(tǒng)。同時(shí)學(xué)會Python編程基礎(chǔ)知識,并利用其進(jìn)行更強(qiáng)大的智能功能開發(fā)。然后通過使用OpenCV和USB網(wǎng)絡(luò)攝像頭,你將制造一個(gè)可以追逐球的機(jī)器人。
本書適合開始探索機(jī)器人領(lǐng)域的創(chuàng)客、愛好者和學(xué)生閱讀。本書將幫助你快速入門智能機(jī)器人的設(shè)計(jì)、構(gòu)建與開發(fā),掌握相關(guān)的硬件設(shè)計(jì)搭建與軟件編程開發(fā)能力,讓你帶著樂趣逐步探索機(jī)器人世界。
編輯推薦
完整代碼和搭建步驟,移動智能機(jī)器人制作高效入門書
極好實(shí)現(xiàn)Arduino和樹莓派交互的逐步實(shí)踐指南
高效控制電動機(jī)、傳感器等機(jī)器人硬件
詳解Python、Sketch、OpenCV實(shí)現(xiàn)高級機(jī)器人功能
機(jī)器人學(xué)不一定很難。通過本書,我將帶你走進(jìn)機(jī)器人世界,你將親身接觸到機(jī)器人學(xué)的許多基本的和一些特別的方面。
使用多種硬件,組裝并焊接電路板,用兩種語言編寫代碼,安裝和配置Linux操作系統(tǒng)環(huán)境,使用計(jì)算機(jī)視覺技術(shù)。
本書適合開始探索機(jī)器人領(lǐng)域的創(chuàng)客、愛好者和學(xué)生閱讀。
● 學(xué)會使用樹莓派與Arduino構(gòu)建具有高級功能的機(jī)器人
● 學(xué)會利用樹莓派提供的強(qiáng)大計(jì)算能力
● 學(xué)會利用Arduino與傳感器和電動機(jī)進(jìn)行交互
● 學(xué)會Python編程以進(jìn)行更強(qiáng)大的智能功能開發(fā)
● 制作一個(gè)可以追蹤球的機(jī)器人
前言
機(jī)器人學(xué)不一定很難。通過本書,我將帶你走進(jìn)機(jī)器人世界,這次學(xué)習(xí)之旅將是富有挑戰(zhàn)性的。在本書的后,你將親身接觸到機(jī)器人學(xué)的許多基本的和一些特別的方面。你將會學(xué)習(xí)使用多種硬件,組裝并焊接電路板,用兩種編程語言編寫代碼,安裝和配置Linux操作系統(tǒng)環(huán)境,以及使用計(jì)算機(jī)視覺技術(shù)。你用機(jī)器人所做的其他事情都是本書中所學(xué)的知識的延伸。
本書適用讀者
本書適合電子和物聯(lián)網(wǎng)技術(shù)的入門學(xué)習(xí)者,想要學(xué)習(xí)樹莓派或Arduino的人,以及想將它們結(jié)合使用的人閱讀。
本書也是為那些想學(xué)習(xí)更多有關(guān)機(jī)器人知識的愛好者準(zhǔn)備的。也許你已經(jīng)用Arduino構(gòu)建了一些電路,或者用樹莓派定制過家庭娛樂系統(tǒng),但現(xiàn)在你感興趣的是如何構(gòu)建一個(gè)機(jī)器人。你將會學(xué)習(xí)如何使這兩個(gè)設(shè)備協(xié)同工作,以提供非常強(qiáng)大的功能。
本書也是為需要快速學(xué)習(xí)更多技術(shù)的人準(zhǔn)備的,他們不一定有時(shí)間來廣泛閱讀有關(guān)Arduino、樹莓派、電子或編程方面的眾多不同書籍,他們尋求的是對一些基本知識進(jìn)行一個(gè)廣泛而高效的介紹。
本書還是為那些想提高自己機(jī)器人編程經(jīng)驗(yàn)的學(xué)生準(zhǔn)備的,他們想學(xué)習(xí)處理硬件和軟件的方法,以進(jìn)一步向他們在學(xué)校或?qū)I(yè)領(lǐng)域看到的知名的人學(xué)習(xí)。
書中沒有對經(jīng)驗(yàn)或技術(shù)背景作任何假設(shè)。當(dāng)你閱讀這些章節(jié)時(shí),你可能會發(fā)現(xiàn)有的部分很熟悉,那么完全可以跳過這些內(nèi)容。但是如果你對這些主題還很陌生,我會嘗試給你一個(gè)簡潔而快速的講解。
內(nèi)容概覽
我們先學(xué)習(xí)樹莓派及如何使用它。下載并安裝Raspbian操作系統(tǒng),然后為我們的項(xiàng)目配置樹莓派。目標(biāo)是將你的系統(tǒng)設(shè)置為能夠輕松訪問機(jī)器人,并直接在機(jī)器人上編寫代碼。
在實(shí)現(xiàn)遠(yuǎn)程訪問樹莓派之后,你將在第3章深入研究Python編程。我將向你展示如何在樹莓派上編寫簡單的程序。我還會介紹一些基礎(chǔ)知識,再介紹一些進(jìn)階主題,例如模塊和類。這是長的一個(gè)章節(jié),因?yàn)橛泻芏鄡?nèi)容要涵蓋。
從那之后,你將學(xué)習(xí)如何通過樹莓派的GPIO插頭將樹莓派與外部電子設(shè)備(如傳感器和LED)連接起來。第4章會討論尋址插頭上的引腳的不同方式,通過插頭暴露的一些功能,以及如何使用超聲波測距傳感器檢測物體。這會讓你為下一章做好準(zhǔn)備,下一章我將介紹Arduino。
在第5章,你會將Arduino和樹莓派結(jié)合起來使用。我討論了這樣做的一些原因。我將向你展示如何使用ArduinoIDE編寫程序。我會介紹兩個(gè)板之間的串口通信以及如何在它們之間來回傳遞信息。我們通過上一章中使用的超聲波測距傳感器來實(shí)現(xiàn)這一點(diǎn)。
第6章將讓你用樹莓派來轉(zhuǎn)動電動機(jī)。你會用一個(gè)叫作HAT或擴(kuò)展板的特殊板來控制電動機(jī)。在這里我將介紹另一項(xiàng)技能,你將不可避免地在制造機(jī)器人的過程中用到它,那就是焊接。插頭和端子需要焊接到項(xiàng)目中選擇的接線板上,你會獲得大量的實(shí)踐經(jīng)驗(yàn)。
在第7章中,我們將把所有的東西合在一起。你來構(gòu)建機(jī)器人,而我會討論機(jī)器人的一些物理特性。我將介紹一些設(shè)計(jì)注意事項(xiàng),當(dāng)你設(shè)計(jì)自己的底盤時(shí)需要牢記在心。雖然我為這個(gè)項(xiàng)目列出了一個(gè)特定的底盤套件,但你并不需要使用相同的東西。事實(shí)上,我鼓勵你探索其他選擇,并找到一個(gè)適合自己的。
在第8章,我將介紹另一種類型的傳感器紅外傳感器,并向你展示如何使用一種非常常見的控制算法PID控制器。我會討論各種類型的紅外傳感器,以及它們的使用場合(關(guān)于PID控制的章節(jié)會討論它是什么以及為什么要使用它)。
第9章是關(guān)于計(jì)算機(jī)視覺的,在這里你可以看到樹莓派的真正力量。在本章中,我將介紹一個(gè)名為OpenCV的開源軟件包。到第9章結(jié)束時(shí),你的小型機(jī)器人將能圍著桌子追逐一個(gè)球。
我在第10章留給你一些挑戰(zhàn)的想法。我提供了一些我學(xué)到的技巧,并讓你一窺我的工作流程和工具。之后,你就可以開始你自己的機(jī)器人冒險(xiǎn)了!
關(guān)于作者
Jeff Cicolani
The Robot Group公司總裁,致力于通過機(jī)器人技術(shù)來促進(jìn)STEAM教育。他曾擔(dān)任多家500強(qiáng)公司的系統(tǒng)分析師、開發(fā)人員和項(xiàng)目經(jīng)理。之后憑借創(chuàng)客技能、對技術(shù)的敏銳度和對機(jī)器人的熱情,投身機(jī)器人事業(yè),目前,他正致力于通過機(jī)器人操作系統(tǒng)(ROS)和機(jī)器學(xué)習(xí)來更好地實(shí)現(xiàn)高級機(jī)器人技術(shù)。
謝永興,控制科學(xué)與工程碩士,現(xiàn)為系統(tǒng)工程師,從事軟件開發(fā)工作。熟悉C#、PHP、Java等多種編程語言,熟練掌握AutoHotkey自動化腳本編程,熟悉VR、AR、MR開發(fā)流程,研究生期間通過閱讀大量外文文獻(xiàn)形成了較強(qiáng)的英語閱讀和理解能力,完成多門Lynda.com課程學(xué)習(xí),從事過相關(guān)專業(yè)資料的翻譯工作,擅長Word、Excel應(yīng)用、排版軟件,F(xiàn)從事與VR、AR、MR開發(fā)相關(guān)工作。
原書前言
關(guān)于作者
關(guān)于技術(shù)審校者
第1章 機(jī)器人學(xué)導(dǎo)論 1
1.1 機(jī)器人學(xué)基礎(chǔ) 1
1.1.1 Linux操作系統(tǒng)和機(jī)器人學(xué) 2
1.1.2 傳感器和GPIO 3
1.1.3 運(yùn)動和控制 3
1.2 樹莓派和Arduino 4
1.3 項(xiàng)目概覽 5
1.3.1 機(jī)器人 5
1.3.2 物料清單 5
1.4 小結(jié) 10
第2章 樹莓派簡介 11
2.1 下載并安裝Raspbian 11
2.1.1 附帶OpenCV的Raspbian 12
2.1.2 困難方法 12
2.1.3 簡單方法 14
2.2 連接樹莓派 15
2.3 配置樹莓派 16
2.3.1 使用raspi-config 16
2.3.2 用戶 21
2.3.3 連接到無線網(wǎng)絡(luò) 22
2.4 轉(zhuǎn)入無頭模式 22
2.4.1 遠(yuǎn)程訪問 23
2.5 小結(jié) 27
第3章 Python入門教程 28
3.1 Python概述 29
3.2 下載并安裝Python 29
3.3 Python工具 30
3.3.1 Pythonshell 30
3.3.2 Python編輯器 31
3.3.3 Python之禪 33
3.4 編寫和運(yùn)行Python程序 34
3.4.1 HelloWorld 34
3.4.2 基本結(jié)構(gòu) 34
3.4.3 運(yùn)行程序 36
3.5 Python編程 36
3.5.1 變量 37
3.5.2 數(shù)據(jù)類型 37
3.5.3 關(guān)于變量的后一個(gè)提示 45
3.5.4 控制結(jié)構(gòu) 45
3.5.5 函數(shù) 49
3.5.6 通過模塊添加功能 51
3.5.7 類 55
3.5.8 樣式 61
3.6 小結(jié) 62
第4章 樹莓派GPIO 63
4.1 樹莓派GPIO介紹 63
4.1.1 引腳編號 64
4.1.2 連接到樹莓派 65
4.1.3 樹莓派GPIO的局限性 66
4.1.4 使用Python訪問GPIO 66
4.1.5 簡單輸出 67
4.1.6 簡單輸入 71
4.2 小結(jié) 78
第5章 樹莓派和Arduino 79
5.1 樹莓派GPIO回顧 79
5.1.1 實(shí)時(shí)或近實(shí)時(shí)處理 80
5.1.2 模擬輸入 80
5.1.3 模擬輸出 80
5.2 Arduino來救場 81
5.3 使用Arduino 82
5.3.1 安裝Arduino IDE 82
5.3.2 連接Arduino 83
5.3.3 Arduino編程 84
5.3.4 草圖 88
5.4 Arduino編程語言 91
5.4.1 包含其他文件 92
5.4.2 變量和數(shù)據(jù)類型 92
5.4.3 控制結(jié)構(gòu) 95
5.4.4 使用引腳 100
5.4.5 對象和類 103
5.4.6 串口 103
5.4.7 Arduino和樹莓派相互通信 105
5.5 Pinguino 112
5.5.1 設(shè)置電路 112
5.6 小結(jié) 115
第6章 驅(qū)動電動機(jī) 116
6.1 電動機(jī)和控制器 116
6.1.1 電動機(jī)類型 117
6.1.2 電動機(jī)特性 118
6.1.3 電動機(jī)控制器 119
6.2 使用電動機(jī)控制器 120
6.2.1 Adafruit直流和步進(jìn)電動機(jī)控制器HAT 120
6.2.2 L298N通用電動機(jī)控制器 134
6.3 小結(jié) 141
第7章 組裝機(jī)器人 143
7.1 組裝底盤 143
7.1.1 選擇材質(zhì) 144
7.1.2 Whippersnapper 144
7.2 安裝電子設(shè)備 147
7.3 布線 151
7.4 安裝傳感器 153
7.5 成品機(jī)器人 155
7.5.1 讓機(jī)器人動起來 155
7.6 小結(jié) 164
第8章 紅外傳感器 165
8.1 紅外傳感器介紹 165
8.1.1 紅外傳感器的類型 165
8.2 使用紅外傳感器 168
8.2.1 連接紅外傳感器 168
8.2.2 安裝紅外傳感器 170
8.2.3 代碼 171
8.3 了解PID控制 178
8.3.1 閉環(huán)控制 179
8.3.2 PID控制器的實(shí)現(xiàn) 180
8.4 小結(jié) 183
第9章 OpenCV 184
9.1 計(jì)算機(jī)視覺 184
9.1.1 OpenCV介紹 185
9.1.2 選擇攝像頭 187
9.1.3 安裝攝像頭 188
9.2 OpenCV基礎(chǔ)知識 189
9.2.1 處理圖像 190
9.2.2 圖像采集 190
9.2.3 圖像變換 196
9.2.4 處理顏色 198
9.2.5 斑點(diǎn)和斑點(diǎn)檢測 201
9.3 追球機(jī)器人 206
9.4 小結(jié) 212
第10章 總結(jié) 214
10.1 機(jī)器人的類型 214
10.2 工具 215
10.2.1 軟件 215
10.2.2 硬件 219
10.3 小結(jié) 221