無人機(jī)編程實(shí)戰(zhàn):基于ArduPilot和Pixhawk
定 價(jià):99 元
叢書名:機(jī)器人設(shè)計(jì)與制作系列
- 作者:[墨]胡里奧·阿爾貝托·門多薩-門多薩(Julio Alberto Mendoza-Mendoza)等
- 出版時(shí)間:2021/8/1
- ISBN:9787111687580
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:V279
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書包括三個(gè)部分,首先介紹自動(dòng)駕駛儀和庫的特性。然后著重介紹對(duì)ArduPilot庫的重要部分的理解,其中描述了代碼的每個(gè)主要組成部分。第三部分是高級(jí)特性部分,目的是將獲得的知識(shí)擴(kuò)展到實(shí)時(shí)應(yīng)用程序。每個(gè)部分都詳細(xì)描述了代碼及其組件、應(yīng)用程序和交互。
本書的目的是講授ArduPilot庫的功能以及以四旋翼通用多旋翼飛機(jī)為例的Pixhawk自動(dòng)駕駛儀,同時(shí)也提供了其他類型的定制飛行器(參見附錄8)、陸地或水上交通工具,以及與上述庫兼容的其他自動(dòng)駕駛儀擴(kuò)展知識(shí)的指南。
本書包括三個(gè)部分:部分(引言)介紹自動(dòng)駕駛儀和庫的特性;第二部分(順序操作模式)著重于對(duì)ArduPilot庫的重要部分的理解,描述了代碼的每個(gè)主要組成部分;第三部分(實(shí)時(shí)模式)介紹高級(jí)特性,目的是將獲得的知識(shí)擴(kuò)展到實(shí)時(shí)應(yīng)用程序。每個(gè)部分都詳細(xì)描述了代碼及其組件、應(yīng)用程序和交互,當(dāng)然,還有作者建議的參考書目,供那些想要深入學(xué)習(xí)的讀者參考。
應(yīng)該指出,ArduPilot庫的使用并非Pixhawk自動(dòng)駕駛儀所獨(dú)有,還可以擴(kuò)展到許多其他平臺(tái)。但是,作者喜歡根據(jù)其性能來采用這種組合。這意味著,本書提供了基于這些庫的實(shí)訓(xùn),并允許終用戶對(duì)其工作進(jìn)行調(diào)整以適應(yīng)廣泛的自動(dòng)駕駛儀和測(cè)試平臺(tái)。
先驗(yàn)知識(shí)
本書的讀者至少應(yīng)具有高中學(xué)歷或技術(shù)學(xué)士學(xué)位。
必需的知識(shí)
編程:了解如何使用Arduino是必要的起點(diǎn)。
經(jīng)濟(jì)實(shí)力:進(jìn)行自動(dòng)駕駛研究時(shí),購買各種零部件的成本較高。你應(yīng)該有能力購買或組裝自己的飛行器和相應(yīng)的零件。
英語:為了解決某些問題,通常需要訪問國外的論壇和商店,或觀看英語視頻,因此有必要具有中等英語水平。
好有但非必需的知識(shí)
數(shù)學(xué):你應(yīng)該了解向量和矩陣的基本推導(dǎo)以及基本運(yùn)算。
物理和控制:你應(yīng)該了解阻尼諧振蕩器和PD控制的概念、力和扭矩的概念、坐標(biāo)系的使用以及如何求解運(yùn)動(dòng)和力的分量。
預(yù)期結(jié)果
通過閱讀本書,你將能夠:
以先進(jìn)的方式對(duì)Pixhawk進(jìn)行編程。Pixhawk是ETH創(chuàng)建的開源自動(dòng)駕駛儀,廣泛用于自動(dòng)駕駛儀的研發(fā)領(lǐng)域。
使用ArduPilot庫,該庫是世界上大多數(shù)用戶進(jìn)行自動(dòng)駕駛儀研究和開發(fā)的軟件開發(fā)接口之一。
以一種非常具體的方式利用四軸飛行器模擬和實(shí)現(xiàn)任何空中、地面和水上自動(dòng)駕駛的基本半自動(dòng)控制。
將理論與實(shí)踐相結(jié)合,開發(fā)自動(dòng)駕駛儀。
在自動(dòng)駕駛儀的設(shè)計(jì)過程中選擇硬件和軟件組件。
使用與本書介紹的技術(shù)兼容的其他硬件和軟件開發(fā)包。
熟悉該領(lǐng)域常用的科學(xué)和技術(shù)術(shù)語。
熟悉該領(lǐng)域相關(guān)的文章和書籍。
通過全向飛行器的基本理論,將四軸飛行器應(yīng)用的知識(shí)擴(kuò)展到三維飛行器上(即可以實(shí)現(xiàn)“任意方向”和“任意位置”)。
在構(gòu)建自己的自動(dòng)駕駛儀(通過編程微控制器、數(shù)字信號(hào)處理器(DSP)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、嵌入式卡或任何其他方法)時(shí),確定與自動(dòng)駕駛相關(guān)的復(fù)雜事項(xiàng)和操作流程。
許可證
ArduPilot庫和Mission Planner軟件是GPLv3免許可證軟件,可以按照自由軟件基金會(huì)(www.fsf.org/)所述的GNU GPLv3條款和限制重新分發(fā)或修改它們。
發(fā)布代碼和程序的目的是希望它們有用,但沒有任何保證,甚至沒有對(duì)特定用途的適銷性的隱含保證。有關(guān)更多詳細(xì)信息,請(qǐng)參見GNU項(xiàng)目的“通用公共許可證”部分。
ArduPilot庫可以從http://ardupilot.org/dev/docs/apmcopter-programming-libraries.html下載。
可以從http://ardupilot.org/planner/下載Mission Planner軟件。
Pixhawk自動(dòng)駕駛儀具有屬于Lorenz Meier的CC-BY-SA 3.0許可證(https://creativecommons.org/licenses/bysa/3.0/deed.es)。
其官方文檔位于https://dev.px4.io/en/contribute/licenses.html。
PX4庫具有修改的BSD許可證(https://opensource.org/licenses/BSD-3-Clause)。
幾乎所有終端都是公共領(lǐng)域的軟件。我們建議使用terminal.exe、putty或任何其他等效工具。
Java SE開發(fā)工具包8u111更新了名為jdk-8u111-windows-i586.exe的可執(zhí)行文件,它屬于Oracle,并且僅在需要正確執(zhí)行包含在庫中的Eclipse版本的情況下才需要從www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html下載。
責(zé)任條款
出版商、作者、ArduPilot或Pixhawk項(xiàng)目的開發(fā)社區(qū)都不對(duì)讀者使用本書知識(shí)設(shè)計(jì)、編程或操作的任何飛行器或機(jī)器人承擔(dān)任何責(zé)任。
每一位讀者都有責(zé)任做到以下幾點(diǎn):
1.閱讀并正確理解這本書的全文。
2.對(duì)個(gè)人項(xiàng)目有適當(dāng)?shù)臋?quán)限和安全措施。
3.為項(xiàng)目使用合適的材料和設(shè)備。
無論是出版商、作者,還是ArduPilot或Pixhawk項(xiàng)目的開發(fā)社區(qū),都不會(huì)回復(fù)與每個(gè)讀者的個(gè)人項(xiàng)目相關(guān)的問題或看法,無論這些項(xiàng)目有多重要或多緊急。要明白,這本書包含了足夠詳細(xì)的資料,在非常特殊的情況下,也可以訪問在線論壇:
http://discuss.px4.io/
https://discuss.ardupilot.org/
http://ardupilot.org/dev/docs/apmcopter-programming-libraries.html的社區(qū)版塊
無論是出版商、作者,還是ArduPilot或Pixhawk項(xiàng)目的開發(fā)社區(qū),都不對(duì)讀者在軟件安裝過程中或之后對(duì)他們的計(jì)算機(jī)設(shè)備或嵌入式系統(tǒng)造成的損害負(fù)責(zé),每個(gè)讀者都有責(zé)任按照所提供的說明進(jìn)行操作。
無論是出版商還是作者,都不對(duì)ArduPilot開發(fā)社區(qū)或Pixhawk項(xiàng)目所產(chǎn)生的代碼和語法變化負(fù)責(zé)。這是可以理解
譯者序
前言
致謝
部分 引言
第1章 硬件和軟件說明 2
1.1 自動(dòng)駕駛儀 2
1.2 自動(dòng)駕駛儀的種類:SDK與GUI 3
1.3 SDK的種類 4
1.4 Pixhawk自動(dòng)駕駛儀(硬件) 5
1.5 克隆版本與原始版本 8
1.6 商業(yè)自動(dòng)駕駛儀與你自己的設(shè)計(jì) 8
1.7 ArduPilot庫(軟件) 9
1.8 兼容性和類似項(xiàng)目 9
1.9 硬件和軟件之間的困惑 10
1.10 本章小結(jié) 10
第2章 ArduPilot工作環(huán)境 11
2.1 ArduPilot庫的相關(guān)文件類型 11
2.2 特定數(shù)據(jù)類型 11
2.3 所用程序的描述和流程 12
2.3.1 編碼和編譯 13
2.3.2 連接和加載接口 13
2.3.3 物理執(zhí)行 13
2.3.4 顯示 13
2.3.5 反饋 14
2.4 上傳自定義代碼到自動(dòng)駕駛儀 14
2.5 使用Eclipse創(chuàng)建新項(xiàng)目 16
2.6 錯(cuò)誤校驗(yàn) 21
2.7 ArduPilot庫中直接使用Arduino是否可行 26
2.8 本章小結(jié) 27
第3章 概念和定義 28
3.1 輔助組件 28
3.1.1 無刷電機(jī) 28
3.1.2 ESC 29
3.1.3 螺旋槳 30
3.1.4 框架 30
3.1.5 特殊連接器 31
3.1.6 遙測(cè)模塊(無線串行通信) 32
3.1.7 鋰電池 33
3.1.8 電池測(cè)試儀或電池監(jiān)測(cè)器 33
3.1.9 GPS模塊 34
3.1.10 分配器 34
3.1.11 電源模塊 35
3.1.12 硅線 36
3.1.13 熱電偶 36
3.1.14 緊扣件 36
3.1.15 被動(dòng)防振模塊 36
3.1.16 遙控器 37
3.1.17 嵌入式車載電腦 37
3.1.18 特殊Pixhawk組件 38
3.2 計(jì)算效率與數(shù)學(xué)等式 38
3.3 使用變量、函數(shù)、模塊和對(duì)象 39
3.3.1 變量 39
3.3.2 結(jié)構(gòu)體 39
3.3.3 函數(shù) 40
3.3.4 模塊 40
3.4 getter和setter的概念 42
3.5 方向和位置的概念 42
3.6 安裝和編碼之間的區(qū)別 44
3.7 ArduPilot代碼的常用部分 44
3.8 ArduPilot代碼編程的常用模型 45
3.9 本章小結(jié) 46
參考資料和建議網(wǎng)站 47
第二部分 順序操作模式
第4章 基本輸入和輸出操作 51
4.1 頭文件 52
4.2 設(shè)置 54
4.2.1 寫入終端 54
4.2.2 讀取終端 56
4.2.3 讀取無線電信號(hào) 57
4.3 輔助通道與狀態(tài)機(jī)簡(jiǎn)介 62
4.3.1 內(nèi)部傳感器讀取位置和方向 64
4.3.2 外部位置傳感器讀數(shù)(GPS) 68
4.3.3 讀取模擬傳感器 72
4.3.4 信號(hào)濾波 73
4.3.5 讀寫數(shù)字 75
4.3.6 電池讀數(shù) 77
4.3.7 通過主LED使用視覺警報(bào) 78
4.4 本章小結(jié) 79
第5章 高級(jí)操作 80
5.1 有線和無線串行通信 80
5.2 通信程序 83
5.2.1 發(fā)送數(shù)據(jù)的過程 84
5.2.2 數(shù)據(jù)驗(yàn)證過程 87
5.2.3 基本“校驗(yàn)和”方法的描述 87
5.2.4 XOR“校驗(yàn)和”方法的描述 87
5.3 輪詢 89
5.4 通過串行通信和開發(fā)板從外部設(shè)備讀取信息 97
5.5 寫入無刷電機(jī)(BLDC電機(jī)) 99
5.5.1 代碼優(yōu)化 106
5.5.2 寫入電機(jī)的簡(jiǎn)化函數(shù) 106
5.6 寫入標(biāo)準(zhǔn)直流電機(jī)(有刷) 110
5.7 使用步進(jìn)電機(jī) 117
5.8 使用伺服電機(jī)執(zhí)行輔助任務(wù) 118
5.9 ArduPilot兼容電機(jī)總結(jié) 121
5.10 數(shù)據(jù)的使用與存儲(chǔ) 121
5.11 使用Mission Planner GUI繪制SD數(shù)據(jù) 126
5.12 時(shí)間管理 133
5.13 本章小結(jié) 135
第6章 控制具有平穩(wěn)飛行模式的四軸飛行器 136
6.1 多軸飛行器的基本建模 140
6.2 第二個(gè)例子:雙軸飛行器(同軸電機(jī)分析) 149
6.3 速度運(yùn)動(dòng)學(xué)關(guān)系 155
6.3.1 動(dòng)態(tài)平移方程 157
6.3.2 動(dòng)態(tài)旋轉(zhuǎn)方程 158
6.4 飛行模式 161
6.5 解耦的任務(wù) 163
6.6 控制方法 165
6.7 閉環(huán)與開環(huán) 165
6.8 飽和PD控制(飛行的軟模式基本控制) 166
6.9 無人機(jī)飛行的實(shí)施 175
6.10 本章小結(jié) 180
參考資料 180
第三部分 實(shí) 時(shí) 模 式
第7章 實(shí)時(shí)工作環(huán)境 184
7.1 鏈接器 184
7.2 調(diào)度程序說明 184
7.3 實(shí)時(shí)模式/調(diào)度程序模式下的ArduPilot常用部件 185
7.4 測(cè)量任務(wù)執(zhí)行時(shí)間 186
7.5 本章小結(jié) 190
第8章 應(yīng)用程序代碼 191
8.1 radio.pde模塊 194
8.2 control.pde模塊 194
8.3 data.pde模塊 197
8.4 pose.pde模塊 200
8.5 本章小結(jié) 201
參考資料 202
附錄1 與其他SDK命令的比較 203
附錄2 設(shè)置擴(kuò)展代碼 205
附錄3 擴(kuò)展頭文件 206
附錄4 完整功能代碼 210
附錄5 有用的關(guān)鍵字 215
附錄6 安裝ArduPilot庫 216
附錄7 推力矢量 234
附錄8 全向性 236
附錄9 擴(kuò)展功率的方法 239
附錄10 四軸飛行器設(shè)計(jì)總結(jié) 241
附錄11 使用頭文件 245