樹莓派創客:手把手教你搭建機器人
內容描述
本書遵循由淺入深、由易到難的原則,循序漸進地介紹使用樹莓派玩轉機器人的必備軟硬件知識與技術。全書共8章,第1~4章為樹莓派入門部分,主要介紹樹莓派軟硬件、Scratch和Python編程語言以及各種傳感器的使用,並提供豐富的操作案例,方便讀者輕松構建樹莓派項目。本部分學會之後,讀者基本上可以掌握使用樹莓派軟硬件與第三方軟硬件協同工作,搭配和使用傳感器親手搭建一個簡單的用於巡線且自動跟隨和停止的機器無人車。第5~8章為提高部分,本部分深入地介紹樹莓派的各種高級玩法,還將介紹更多、更加智能的第三方軟硬件,比如近年來火熱的人工智能系列傳感器以及機器人操作系統ROS的使用,同時兼顧PC和手機操作,為讀者玩轉機器人提供更多的趣味場景。 本書的特點是使用低成本硬件,趣味性和可操作性強,適合對樹莓派及機器人感興趣的各類讀者閱讀。
目錄大綱
目 錄
第1章 樹莓派全面介紹 1
1.1 樹莓派項目 1
1.2 樹莓派硬件 3
1.2.1 板載芯片 3
1.2.2 板載接口 5
1.2.3 專用拓展 7
1.3 點亮樹莓派 9
1.4 樹莓派軟件 15
1.4.1 設置助手 15
1.4.2 桌面佈局 18
1.4.3 瀏覽器及軟件管理 19
1.4.4 文件管理器 21
1.4.5 編程套件 23
1.4.6 樹莓派配置工具 26
第2章 樹莓派軟硬件開發入門 28
2.1 認識Scratch 29
2.1.1 “Hello World!”程序 30
2.1.2 流程 30
2.1.3 循環 32
2.1.4 變量和條件 33
2.2 使用Scratch完成一些小遊戲 36
2.2.1 宇航員反應計時器 37
2.2.2 花樣游泳 41
2.3 樹莓派硬件入門 48
2.3.1 了解GPIO 48
2.3.2 常用電子元器件 49
2.4 使用Scratch控制硬件 51
2.4.1 控制發光二極管 51
2.4.2 控制蜂鳴器 54
2.4.3 控制按鈕 55
第3章 樹莓派軟硬件開發進階 57
3.1 樹莓派玩轉Python入門 57
3.1.1 超輕量開發環境:Thonny 57
3.1.2 Python IDLE和命令行 58
3.1.3 編寫“Hello World!”程序 60
3.2 Python進階 61
3.2.1 代碼縮進和循環 61
3.2.2 條件和變量 64
3.2.3 “畫”雪花 65
3.3 Python控制GPIO傳感器 71
3.3.1 gpiozero庫 71
3.3.2 gpiozero的輸入和輸出 73
3.3.3 模擬紅綠燈 75
3.3.4 搶答器 77
3.4 Python與樹莓派硬件的交互 80
3.4.1 Python與樹莓派系統信息的交互 80
3.4.2 Python與發光二極管傳感器的交互 81
3.4.3 Python與遊戲操縱桿傳感器的交互 85
3.4.4 Python與電子羅盤傳感器的交互 88
第4章 機器人簡單傳感器 91
4.1 視覺傳感器 91
4.1.1 簡單提示:發光二極管 91
4.1.2 圖像視頻採集:攝像頭 98
4.1.3 圖像視頻輸出:顯示器 101
4.2 聲學傳感器 106
4.2.1 簡單提示音:蜂鳴器 106
4.2.2 播放聲音和音樂:揚聲器 107
4.2.3 超聲波:距離傳感器 108
4.3 電磁傳感器 109
4.3.1 限制電路電流:電阻器 109
4.3.2 機器人的雙腳:馬達 111
4.3.3 角度微控制器:舵機 116
4.3.4 大型電器開關:繼電器 117
4.3.5 測速計數:霍爾傳感器 119
4.4 其他傳感器 121
4.4.1 力學傳感器:開關、體重、加速計和陀螺儀 121
4.4.2 熱學傳感器:人體感應器、溫度傳感器 126
4.4.3 紅外傳感器:光敏傳感器、循跡傳感器 128
第5章 樹莓派人工智能傳感器 131
5.1 Google AIY Voice Kit 131
5.1.1 組裝配置 131
5.1.2 簡單錄音 133
5.1.3 語音識別與命令 134
5.2 谷歌語音套件 136
5.2.1 組裝配置 136
5.2.2 人臉和物品檢測引擎 137
5.2.3 使用代碼演示人臉識別 139
5.3 Seeed ReSpeaker 140
5.3.1 硬件規格介紹 140
5.3.2 安裝驅動 141
5.3.3 配置在線API 143
5.3.4 語音識別與命令 145
5.4 Pixy2 Cam 145
5.4.1 Pixy系列傳感器介紹 145
5.4.2 連接到樹莓派 146
5.4.3 顏色判定和巡線 147
5.4.4 Python接口調用 150
第6章 樹莓派構建機器人 152
6.1 硬件規劃 152
6.1.1 協議規劃:深入gpiozero 152
6.1.2 協議規劃:I2C、SPI 158
6.1.3 電路規劃:FRITZING 162
6.2 軟件規劃 165
6.2.1 命令控制:SSH 165
6.2.2 電腦控制:gpiozero 169
6.2.3 手機控制:Blue Dot 172
6.3 機器人構建 175
6.3.1 遠程控制機器人 175
6.3.2 循跡機器人 177
6.3.3 跟隨/避障機器人 180
6.4 監測樹莓派狀態 181
6.4.1 命令行檢測 181
6.4.2 蘋果手機監控:PiHelper 184
6.4.3 安卓手機監控:RaspController 186
第7章 樹莓派與產業機器人“語言”:ROS 190
7.1 機器人操作系統ROS 190
7.1.1 ROS是什麼 190
7.1.2 ROS用來做什麼 190
7.1.3 ROS版本的選擇 191
7.1.4 在樹莓派上安裝Ubuntu 192
7.1.5 在Ubuntu上安裝ROS 196
7.2 文件系統概覽 197
7.2.1 安裝ros-tutorials案例包 197
7.2.2 ROS軟件包結構 197
7.3 ROS節點 200
7.3.1 首先啟動內核roscore 200
7.3.2 啟動節點rosnode 201
7.3.3 啟動文件 203
7.4 ROS話題 205
7.4.1 rostopic命令 207
7.4.2 消息傳遞過程 209
7.5 ROS服務、參數和調試 211
7.5.1 服務rosservice 211
7.5.2 參數rosparam 214
7.5.3 打印ROS日誌 216
第8章 樹莓派集成機器人與人工智能 219
8.1 樹莓派ROS傳感器 219
8.1.1 配置宿主機和客戶機 219
8.1.2 樹莓派連接攝像頭 221
8.1.3 樹莓派連接激光雷達 223
8.1.4 樹莓派連接3D攝像頭 225
8.2 樹莓派連接操縱手柄 226
8.2.1 硬件準備:PS3、PS4、XBOX 226
8.2.2 驅動安裝和測試 227
8.2.3 代碼編寫與軟件包編譯 229
8.2.4 使用手柄控制小烏龜 231
8.3 手機控制ROS機器人 231
8.3.1 遠程控制:ROS Control 232
8.3.2 人機界面:PocketBot for ROS 234
8.3.3 智能語音:ROS Teleop Controller 236
8.4 ROS人工智能 238
8.4.1 現實世界的人工智能 238
8.4.2 機器人視覺:OpenCV 239
8.4.3 機器人地圖:SLAM 241
8.4.4 機器人導航:Navigation 242
作者介紹
陳佳林,看雪論壇版主,看雪講師,在移動安全領域經驗豐富,多次主持銀行、電信、政府及行業部門培訓並參與安全研究項目。在看雪安全開發者峰會、GeekPwn多次發表主題演講。熱愛折騰、興趣廣泛,樹莓派骨灰級愛好者,喜歡搗鼓樹莓派,並將其應用到工作中去,屢獲殊榮。