輪式自主移動機器人編程實戰 ( 簡體 字) |
作者:李德 | 類別:1. -> 電子工程 -> 機器人 2. -> 電腦組織與體系結構 -> 單晶片 -> Raspberry Pi 3. -> 電腦組織與體系結構 -> 單晶片 -> STM32 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 56182 詢問書籍請說出此書號!【有庫存】 NT售價: 300 元 |
出版日:9/1/2022 |
頁數:242 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302613220 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:“仙俠”劇中的御劍飛行,劍就像擁有靈魂一樣,能自行飛到任何地方。也許,我 們很難造出一把神劍,但是我們卻可以造出一輛“指哪去哪”的自主移動機器人。本書 更像一本“失傳已久”的武功秘籍,帶你系統學習如何搭建輪式自主移動機器人(文中 簡稱輪式機器人)。
10年前我還是大學生,為了參加全國電子專業人才設計與技能大賽,白天在圖書館 一筆一畫地抄代碼(為了增強理解,將代碼抄到本上),晚上到實驗室做驗證實驗,盡 管那時候還年輕,精力旺盛,但還是累壞了,尤其是搜索不到感興趣的智能車制作系列, 那段時期過后,感覺像是靈魂出了竅,輪胎放了炮,很久沒有精氣神。畢業后,在電子、 計算機相關行業工作了近10年,通過不斷地學習新知識,借助博客和機器人愛好者分 享互動等,我對機器人的理解有了一個質的變化,機器人不再是簡單的機器人,而是具 有自主意識的機器人。后來,眾多的網友咨詢和鼓勵我將博客上的這些技術文章整理成 書,經過一年的辛苦整理,終于有了您面前的這本書。
本 書 內 容
本書囊括了約20種算法,仿真實驗23次,真車實驗上百次,可展示的實驗數據和 配圖幾百張,是真正意義上的以實驗數據為導向、以調試分析為原則的作品。
本書分為三部分,第1∼3章為基礎知識部分,介紹機器人的基礎知識,包括輪式 機器人的底盤結構、驅動結構、開發軟件、通信協議等。第4∼9章為技術提升部分, 涉及內容較多,每章內容都是由淺入深、循序漸進,機器人涉及的核心和關鍵知識皆有 提及,包括建圖、路徑規劃、導航避障等。該部分反復強調 “避障需有圖”的原則,講 解常見的算法并編寫代碼進行驗證。本部分的特色在于將云平臺融入機器人系統,實現 異地遠程控制、地圖路徑規劃等。第10∼12章為實戰案例部分,介紹云平臺的相關使 用說明、室內建圖機器人、ROS的搭建和節點開發,是對前9章知識的總結和驗證。
輪式自主移動機器人編程實戰
- II -
案 例
本書涉及的開發語言有C/C++、Python、JavaScript、HTML、Shell等。書中案例 主要使用C/C++和Python編寫,其中,使用C/C++編寫的程序全部在Ubuntu 18.04版 和樹莓派Raspbian 系統中編譯通過,Python程序支持Python 2.7和Python 3.x,書中的 原理圖和代碼可以掃描本書封底的“案例源代碼”二維碼下載。
致 謝
感謝河北科技師范學院包長春教授對我參賽時的幫助以及寫書時的支持!
感謝北京理工大學賜予我“德以明理、學以精工”的治學理念!
感謝我的父母將我養育成人,感謝我的兄長、親戚、朋友們的支持。
感謝我的愛人楊雪娜在懷孕至哺乳期對娃兒的悉心照料,我才能靜心寫作,順利交 稿,感謝!
感謝清華大學出版社這個大舞臺能讓我發光!
感謝網友和同事們的支持!感謝開源作者!
最后,感謝博客上的所有讀者,是你們的期待讓我動力十足!
本書難免有疏漏和不足之處,懇請各位同行和讀者批評指正。
特別感謝奧松機器人于欣龍、吳朝霞、安麗麗、劉金雷、Eric、王航、林瑞和、李 杉、李曉波、賈明華、王興興、吳功富、 田松召、李歌、王淑芹提出的針對性的建議, 以及對部分源代碼的審核等幫助。
個 人 寄 托
在編寫此書的過程中,查閱了大量的文獻,比較有感觸的是大部分的知名算法是由 國外學者發明,并以他們的名字或者規則命名,希望今后有更多的知名算法能來自國內 的學者,并且以他們的姓名或者定義的規則命名,讓國內的算法百花爭艷!
愿讀者在本書的幫助下快速實現自己的自主移動機器人。
愿智能機器人和無人駕駛技術進一步發展,實現更大價值!共勉!
交 流
由于編者水平有限,書中難免存在疏漏之處,希望讀者指出書中不足,共同進步。
李德
2022年 3月于北京 |
內容簡介:如果你想DIY 一款輪式自主移動機器人,又不知道如何實現,本書可能會幫到你。 《輪式自主移動機器人編程實戰》系統講解輪式自主移動機器人如何從0 到1 實現自主運動。以樹莓派和STM32 單片機為例, 詳細介紹輪式機器人的硬件結構,包括驅動控制器的搭建、中央處理器的選型開發、濾波算法、平面 地圖構建算法、規劃算法、導航算法、室外GPS 定位實戰案例(異地遠程控制和地圖路徑規劃等)、 室內BreezySLAM 建圖案例、ROS 開發案例等,以及自主移動機器人和無人車駕駛的基本實現原理, 都能在本書中找到答案。《輪式自主移動機器人編程實戰》還提供開放的云平臺路徑規劃,可在農田、工業園區巡檢、物流送貨等 場景測試。 《輪式自主移動機器人編程實戰》可作為高等院校物聯網、機器人、計算機、通信、電氣及自動化等專業的教材,也可作為計 算機、電子及智能車設計競賽的自學或培訓教材,還可供各類電子工程、自動化技術人員和計算機愛 好者學習參考。 |
目錄:第1部分基礎知識 第1章輪式機器人的基礎知識·········2 1.1輪式機器人的定義與應用········2 1.2輪式機器人的結構··········3 1.3機器人的驅動方式··········4 1.4本章總結············5 第2章機器人的構成·········6 2.1機器人的規劃··········6 2.2輪式機器人的轉向結構·········8 2.2.1輪式機器人的差速轉向··········8 2.2.2輪式機器人的獨立舵機轉向··········9 2.2.3阿克曼轉向結構··········11 2.2.4輪式機器人轉向比較··········11 2.2.5差速機器人里程計運動模型·········12 2.3輪式機器人電動機的選型········13 2.3.1輪式機器人:電動機性能··········13 2.3.2輪式機器人:GA370電動機參數計算·······14 2.4機器人的驅動模塊··········15 2.4.1驅動芯片L298N性能··········15 2.4.2驅動模塊L298N的使用方法·········16 2.4.3驅動板TB6612FNG的使用方法·········17 2.5輪式機器人的大腦:控制器選型·······18 2.6輪式機器人底盤DIY·········19 2.6.1DIY的兩種方法···········19 2.6.2輪式機器人DIY改裝法··········21
2.7輪式機器人總結·········23 2.7.1輪式機器人整體框圖··········23 2.7.2輪式機器人開發中涉及的軟件列表········23 2.8本章總結··········24 第3章輪式機器人的軟件提升········25 3.1Keil軟件··········25 3.1.1Keil軟件的安裝···········25 3.1.2Keil5軟件的使用··········27 3.2Linux基礎知識··········28 3.2.1Linux的Shell···········28 3.2.2編寫程序與腳本··········31 3.3網絡基礎知識··········32 3.3.1基礎通信···········32 3.3.2MQTT協議············33 3.3.3Linux安裝Mosquitto···········36 3.3.4MQTT測試工具··········37 3.3.5HTTPPOST方法···········38 3.4算法············39 3.4.1PID控制算法············39 3.4.2移位濾波均值算法···········44 3.4.3高、低通濾波和互補濾波器·········45 3.4.4初識貝葉斯············48 3.4.5二值貝葉斯濾波··········49 3.4.6卡爾曼濾波············51 3.5本章總結··········58 第2部分技術提升 第4章輪式機器人的底盤控制器:STM32開發······60 4.1底盤控制器的對外神經元:輸出PWM······61 4.1.1使用Keil模擬PWM輸出·········61 4.1.2機器人中使用的PWM···········66 4.2底盤控制器的運動神經元:驅動控制·······66 4.2.1驅動控制器的連接···········66
-V- 4.2.2驅動源碼分析···········66 4.3底盤控制器的捕獲神經元:PWM捕獲測速······68 4.3.1硬件·············68 4.3.2測速源碼分析···········69 4.4底盤控制器的中樞神經元:串口通信控制指令·····71 4.5底盤控制器的觸覺神經元:ADC電池電壓監測·····75 4.5.1硬件連接···········75 4.5.2源碼分析···········75 4.6底盤控制器的發光控制神經元:LED控制······77 4.6.1硬件連接···········77 4.6.2源碼分析···········77 4.7本章總結··········78 第5章輪式機器人的主控制器:樹莓派開發······79 5.1樹莓派簡介···········79 5.2樹莓派資源···········80 5.3輪式機器人的交互窗口:樹莓派Shell·······80 5.4輪式機器人上網接口:Socket通信·······83 5.5輪式機器人從控制器通信接口:樹莓派串口······83 5.5.1樹莓派串口配置··········83 5.5.2樹莓派USB轉串口···········86 5.5.3綁定串口···········87 5.6輪式機器人無線聯網接口:樹莓派的WiFi功能·····88 5.6.1樹莓派WiFi連接路由器·········88 5.6.2樹莓派WiFi做AP熱點···········89 5.7機器人和手機App通信接口:樹莓派藍牙······93 5.7.1了解藍牙···········93 5.7.2使用Socket功能進行藍牙通信·········95 5.8輪式機器人野外上網接口:4G模塊········96 5.8.1USB-4G模塊的配置···········97 5.8.2USB-4G轉WiFi···········97 5.9輪式機器人的指南針:RTIMU模塊開發······98 5.9.1RTIMULib庫介紹··········98 5.9.2RTIMULib庫的編譯和測試··········99 5.9.3基于RTIMULib的地磁計校準·········101
5.9.4基于RTIMULib的加速計校準·········104 5.9.5基于RTIMULib的陀螺儀校準·········104 5.10輪式機器人的Web搭建········104 5.11輪式機器人樹莓派固件燒錄·······113 5.12本章總結···········114 第6章輪式機器人的其他神經元:傳感器開發·····115 6.1DS18B20溫度傳感器開發········115 6.1.1DS18B20溫度傳感器的接口定義·········115 6.1.2代碼實現···········116 6.2GPS戶外定位傳感器··········118 6.2.1定位模塊的接口定義··········118 6.2.2NMEA-0183協議···········118 6.2.3協議解析流程及實現··········119 6.3激光雷達傳感器··········121 6.3.1激光雷達介紹···········122 6.3.2激光雷達協議···········123 6.4攝像頭圖像傳感器·········127 6.4.1攝像頭的使用···········128 6.4.2視覺循跡機器人實例··········128 6.5本章總結···········129 第7章輪式機器人的云:物聯網云平臺······130 7.1微型服務云平臺簡介··········130 7.2搭建局域網的Server·········130 7.2.1安裝PhpStudy···········131 7.2.2搭建第一個物聯網云··········132 7.3阿里云服務器···········133 7.3.1阿里云服務器選型···········133 7.3.2搭建LNMP服務器··········135 7.3.3LAMP服務器的搭建···········138 7.4JavaScript建立簡單的MQTT通信········140 7.5本章總結···········143
第8章輪式機器人路徑規劃·········144 8.1機器人路徑規劃··········144 8.2機器人全局規劃··········145 8.2.1機器人柵格建圖概述··········145 8.2.2借助OpenCV畫軌跡···········146 8.2.3柵格地圖的建圖過程··········151 8.2.4機器人全局整合規劃··········157 8.2.5A*算法···········159 8.3機器人局部決策··········170 8.3.1DWA算法············170 8.3.2VFH避障算法···········173 8.4本章總結···········177 第9章輪式機器人路徑的定位和導航·······178 9.1輪式機器人路徑跟隨··········178 9.1.1MovePose和PID整定··········178 9.1.2PurePuresuit跟隨算法··········182 9.1.3路徑跟隨與測試··········185 9.2輪式機器人定位匹配··········189 9.2.1粒子濾波···········189 9.2.2粒子濾波定位(蒙特卡羅定位)·········190 9.3GNSS定位導航·········190 9.4本章總結···········192 第3部分實戰案例 第10章機器人定位終端實例·········194 10.1機器人實體終端:模塊構成········194 10.2輪式機器人通信:STM32和樹莓派之間的通信協議·····195 10.3機器人與云平臺通信:MQTT通信協議······197 10.4輪式機器人:配置網絡·········198 10.5輪式機器人軟件說明········202 10.5.1軟件框架···········202 10.5.2控制App:navigation·········203 10.5.3硬件信息確認···········205
10.6輪式機器人的人機交互·········205 10.7輪式機器人云平臺功能介紹········206 10.7.1添加設備···········206 10.7.2設備信息···········207 10.7.3趣味玩法···········207 10.7.4路徑規劃···········209 10.8手動規劃路徑的原理及操作·······210 10.9本章總結···········211 第11章BreezySLAM室內定位導航機器人實例······212 11.1BreezySLAM的安裝·········212 11.2BreezySLAM測試··········214 11.3BreezySLAM源碼分析········217 11.4硬件搭建···········221 11.5軟件實現···········221 11.6測試運行···········227 11.7本章總結···········227 第12章ROS機器人開發實例·········228 12.1ROS介紹··········228 12.2ROS工具包··········229 12.3Ubuntu環境下安裝ROS·········230 12.4發布GPS定位node·········233 12.5發布imunode··········234 12.6STM32通信node·········235 12.7QtforROS界面··········238 12.8本章總結···········243 |
序: |