本書以四旋翼無人機(jī)為例,講解多旋翼無人機(jī)的飛行理論與控制體系,從螺旋槳、電動機(jī)、電調(diào)、動力電池、機(jī)架等角度介紹硬件結(jié)構(gòu)與飛行原理。通過開源自駕儀Pixhawk和開源飛行控制程序PX4介紹了全自動多旋翼無人機(jī)控制系統(tǒng)的整個實(shí)現(xiàn)過程。內(nèi)容涵蓋了從硬件組裝清單到飛控程序下載編譯的整個過程,并對如何使用地面站程序?qū)︼w控進(jìn)行航前校準(zhǔn)和參數(shù)設(shè)定做了說明。
本書將飛行理論與設(shè)計實(shí)現(xiàn)相互結(jié)合,通過對PX4飛控程序的分析、講解、修改和完善,梳理了多旋翼無人機(jī)的相關(guān)知識。包括:飛控程序的架構(gòu)設(shè)計、開源操作系統(tǒng)、驅(qū)動程序、狀態(tài)估計、控制算法、自主導(dǎo)航系統(tǒng)等,以及如何通過對多旋翼無人機(jī)的動力系統(tǒng)建模實(shí)現(xiàn)半物理仿真和趣味航線飛行等。
本書可為從事無人機(jī)設(shè)計制作的技術(shù)人員提供幫助,可供無人機(jī)愛好者自學(xué),還可供大學(xué)院校相關(guān)專業(yè)師生學(xué)習(xí)參考。
第1章多旋翼無人機(jī)簡介
1.1 多旋翼機(jī)發(fā)展簡史 2
1.1.1 多旋翼機(jī)的起源 2
1.1.2 逐漸復(fù)蘇 4
1.1.3 多旋翼機(jī)的春天 5
1.2 無人機(jī)與航空模型 6
1.2.1 機(jī)型分類 6
1.2.2 航空模型飛機(jī) 10
1.2.3 全自動無人機(jī) 10
1.3 開源飛控簡介 11
1.3.1 Arduino飛控 12
1.3.2 Crazyflie迷你飛行器 12
1.3.3 APM飛控 12
1.3.4 Pixhawk與PX4 13
第2章飛行原理
2.1 基本姿態(tài) 15
2.1.1 動力來源 15
2.1.2 垂向運(yùn)動 17
2.1.3 飛行姿態(tài) 18
2.2 飛行原理 22
2.2.1 滾轉(zhuǎn)角與定高飛行 22
2.2.2 滾轉(zhuǎn)角與水平運(yùn)動 23
2.3 十字形與叉形四旋翼 26
2.3.1 運(yùn)動方向與姿態(tài) 26
2.3.2 混合控制方法 27
第3章硬件結(jié)構(gòu)設(shè)計
3.1 螺旋槳 30
3.1.1 制作材料 30
3.1.2 直徑、螺距與弦長 30
3.1.3 多葉螺旋槳 31
3.1.4 靜平衡與動平衡 32
3.2 有刷電機(jī)與無刷電機(jī) 32
3.2.1 電磁鐵轉(zhuǎn)動原理 32
3.2.2 有刷電機(jī) 34
3.2.3 無刷電機(jī) 35
3.2.4 相關(guān)參數(shù) 37
3.3 電調(diào)與PWM信號 37
3.3.1 電調(diào) 37
3.3.2 PWM信號 38
3.3.3 直流有刷電調(diào) 39
3.3.4 直流無刷電調(diào) 39
3.3.5 電調(diào)安全保護(hù)機(jī)制 40
3.3.6 最大和最小行程校準(zhǔn) 41
3.4 動力電池 41
3.4.1 電池電壓 41
3.4.2 電池容量與放電倍率 43
3.5 遙控器 44
3.5.1 遙控器與接收機(jī) 44
3.5.2 美國手與日本手 45
3.6 機(jī)架設(shè)計 46
3.6.1 選材 46
3.6.2 布局 47
3.6.3 軸距 48
3.6.4 涵道 49
3.6.5 腳架 49
第4章自駕儀與硬件組裝
4.1 Pixhawk自駕儀 51
4.1.1 概覽 51
4.1.2 接口說明 53
4.2 硬件清單與組裝說明 57
4.2.1 硬件清單 57
4.2.2 組裝說明 58
第5章開源飛控程序
5.1 飛控程序下載與編譯 64
5.1.1 PX4飛控程序下載 64
5.1.2 Fedroa編譯環(huán)境搭建 68
5.1.3 Ubuntu編譯環(huán)境搭建 71
5.1.4 PX4飛控程序編譯與燒寫 73
5.1.5 QGroundControl下載與編譯 75
5.2 航前準(zhǔn)備與航前校準(zhǔn) 77
5.2.1 航前準(zhǔn)備 78
5.2.2 航前校準(zhǔn) 84
5.3 飛行模式 86
5.3.1 Stabilized增穩(wěn)模式 87
5.3.2 Manual手動模式 87
5.3.3 Altitude高度模式 87
5.3.4 Position位置模式 88
5.3.5 Mission任務(wù)模式 89
5.3.6 Hold定點(diǎn)模式 89
5.3.7 Takeoff/Land起飛降落模式 90
5.3.8 Return返航模式 90
5.3.9 Acro/Rattitude特技姿態(tài)模式 91
5.3.10 Offboard離線模式 92
5.3.11 Follow Me跟隨模式 92
第6章飛控架構(gòu)與通信協(xié)議
6.1 架構(gòu)總覽 94
6.1.1 數(shù)據(jù)存儲 94
6.1.2 內(nèi)部通信總線 95
6.1.3 外部通信總線 95
6.1.4 驅(qū)動程序 96
6.1.5 飛行控制器 97
6.2 源代碼結(jié)構(gòu)設(shè)計 98
6.2.1 編譯目標(biāo)目錄(build) 99
6.2.2 編譯配置目錄(cmake) 101
6.2.3 外部通信接口(Mavlink) 109
6.2.4 內(nèi)部通信接口(msg) 116
6.2.5 運(yùn)行平臺(platforms) 120
6.2.6 ROM文件系統(tǒng)(ROMFS) 124
6.2.7 功能源代碼(src) 127
6.2.8 其他工具(Tools) 130
6.3 uORB 130
6.3.1 基本通信原理 130
6.3.2 uORB設(shè)計與實(shí)現(xiàn) 132
6.3.3 uORB使用方法 145
6.4 Mavlink 147
6.4.1 整體功能設(shè)計 147
6.4.2 Mavlink主程序 148
6.4.3 MavlinkStream發(fā)送器 154
6.4.4 MavlinkReceiver接收器 159
第7章開源操作系統(tǒng)NuttX
7.1 NuttX概述 175
7.1.1 NuttX簡介 175
7.1.2 系統(tǒng)特性 175
7.1.3 支持的平臺 178
7.2 用戶接口 183
7.2.1 任務(wù)控制接口 183
7.2.2 任務(wù)調(diào)度接口 188
7.2.3 調(diào)度控制接口 190
7.2.4 消息隊(duì)列接口 192
7.2.5 信號量接口 193
7.2.6 環(huán)境變量 196
7.2.7 文件系統(tǒng)接口 197
7.2.8 網(wǎng)絡(luò)接口 197
7.3 NuttShell(NSH) 199
7.3.1 概覽 199
7.3.2 常用命令 201
第8章進(jìn)程、線程及工作隊(duì)列
8.1 任務(wù)調(diào)度 211
8.1.1 并行任務(wù) 211
8.1.2 多級反饋隊(duì)列 212
8.1.3 搶占式優(yōu)先級調(diào)度 213
8.2 多進(jìn)程 214
8.2.1 什么是進(jìn)程 214
8.2.2 創(chuàng)建進(jìn)程 216
8.3 多線程 224
8.3.1 什么是線程 224
8.3.2 創(chuàng)建線程 225
8.3.3 線程與進(jìn)程的區(qū)別 230
8.4 工作隊(duì)列 232
8.4.1 什么是工作隊(duì)列 232
8.4.2 加入工作隊(duì)列 235
8.5 信號量與鎖 237
8.5.1 互斥信號量 238
8.5.2 同步信號量 244
8.5.3 互斥鎖與條件變量 245
第9章驅(qū)動程序
9.1 系統(tǒng)級驅(qū)動程序 251
9.1.1 通用接口函數(shù) 251
9.1.2 注冊驅(qū)動程序 255
9.1.3 編寫驅(qū)動程序 258
9.1.4 LED燈驅(qū)動程序 266
9.2 SPI驅(qū)動程序 268
9.2.1 SPI總線協(xié)議 268
9.2.2 SPI管腳配置 269
9.2.3 SPI驅(qū)動類 275
9.2.4 SPI氣壓計驅(qū)動程序 279
9.3 I2C驅(qū)動程序 287
9.3.1 I2C總線協(xié)議 287
9.3.2 I2C驅(qū)動類 288
9.4 應(yīng)用級驅(qū)動程序 289
9.4.1 準(zhǔn)備工作 289
9.4.2 實(shí)現(xiàn)驅(qū)動程序 292
第10章遙控器協(xié)議
10.1 PWM 297
10.1.1 PWM信號使用 297
10.1.2 PWM信號采集 298
10.2 PPM 302
10.2.1 PPM信號使用 302
10.2.2 PPM信號采集 303
10.3 S.BUS 310
10.3.1 S.BUS接口配置 310
10.3.2 S.BUS協(xié)議格式 312
10.3.3 S.BUS協(xié)議解析 313
第11章飛控狀態(tài)與命令執(zhí)行
11.1 主狀態(tài)與切換 319
11.1.1 主狀態(tài)定義與切換條件 319
11.1.2 主狀態(tài)切換命令與響應(yīng) 325
11.2 導(dǎo)航狀態(tài)與控制模式 337
11.2.1 導(dǎo)航狀態(tài)定義與切換條件 337
11.2.2 控制模式及其開關(guān)條件 343
11.3 飛控鎖定與解鎖 347
11.3.1 飛控鎖定保護(hù) 347
11.3.2 鎖定與解鎖狀態(tài) 347
11.4 其他功能 350
11.4.1 起飛點(diǎn)設(shè)置 350
11.4.2 航燈設(shè)置 354
11.4.3 安全開關(guān) 356
第12章狀態(tài)估計
12.1 傳感器校準(zhǔn) 360
12.1.1 加速度計 360
12.1.2 陀螺儀 366
12.1.3 磁羅盤 369
12.1.4 水平儀 372
12.2 卡爾曼濾波 375
12.2.1 卡爾曼濾波原理 375
12.2.2 公式推導(dǎo) 377
12.3 姿態(tài)解算與速度位置估計 380
12.3.1 坐標(biāo)系變換 380
12.3.2 姿態(tài)解算 383
12.3.3 速度位置估計 385
第13章飛行控制方法
13.1 反饋、PID、串級控制 389
13.1.1 反饋控制 389
13.1.2 PID控制 391
13.1.3 串級控制 392
13.2 姿態(tài)控制 394
13.2.1 姿態(tài)控制原理 394
13.2.2 姿態(tài)控制過程 395
13.3 位置控制 400
13.3.1 位置控制原理 400
13.3.2 位置控制過程 403
13.4 混合控制器 408
13.4.1 多旋翼混控原理 408
13.4.2 混控配置文件 413
13.4.3 PWM輸出 417
第14章航線規(guī)劃全自動飛行
14.1 導(dǎo)航基本原理 425
14.1.1 導(dǎo)航目標(biāo) 425
14.1.2 搜索算法 426
14.1.3 預(yù)設(shè)航線 427
14.2 導(dǎo)航模塊設(shè)計 428
14.2.1 導(dǎo)航引擎 428
14.2.2 自動任務(wù)設(shè)計 433
14.2.3 自動起飛與降落 438
14.2.4 自動航跡點(diǎn)任務(wù) 438
14.2.5 自動返航 440
14.2.6 目標(biāo)跟隨與其他導(dǎo)航模式 443
第15章動力學(xué)建模及半物理仿真
15.1 動力學(xué)建模 445
15.1.1 動力模型 445
15.1.2 受力運(yùn)動 446
15.2 半物理仿真 448
15.2.1 使用jMavSim仿真程序 448
15.2.2 自行編寫仿真程序 450
第16章外部控制與趣味航線
16.1 外部控制系統(tǒng) 458
16.1.1 方案設(shè)計 458
16.1.2 功能實(shí)現(xiàn) 460
16.2 趣味航線規(guī)劃 470
16.2.1 等邊三角形 470
16.2.2 圓形 473
16.2.3 三葉草 474
16.2.4 阿基米德螺旋線 476
參考文獻(xiàn) 478