本書以四旋翼無(wú)人機(jī)為例,講解多旋翼無(wú)人機(jī)的飛行理論與控制體系,從螺旋槳、電動(dòng)機(jī)、電調(diào)、動(dòng)力電池、機(jī)架等角度介紹硬件結(jié)構(gòu)與飛行原理。通過(guò)開(kāi)源自駕儀Pixhawk和開(kāi)源飛行控制程序PX4介紹了全自動(dòng)多旋翼無(wú)人機(jī)控制系統(tǒng)的整個(gè)實(shí)現(xiàn)過(guò)程。內(nèi)容涵蓋了從硬件組裝清單到飛控程序下載編譯的整個(gè)過(guò)程,并對(duì)如何使用地面站程序?qū)︼w控進(jìn)行航前校準(zhǔn)和參數(shù)設(shè)定做了說(shuō)明。
本書將飛行理論與設(shè)計(jì)實(shí)現(xiàn)相互結(jié)合,通過(guò)對(duì)PX4飛控程序的分析、講解、修改和完善,梳理了多旋翼無(wú)人機(jī)的相關(guān)知識(shí)。包括:飛控程序的架構(gòu)設(shè)計(jì)、開(kāi)源操作系統(tǒng)、驅(qū)動(dòng)程序、狀態(tài)估計(jì)、控制算法、自主導(dǎo)航系統(tǒng)等,以及如何通過(guò)對(duì)多旋翼無(wú)人機(jī)的動(dòng)力系統(tǒng)建模實(shí)現(xiàn)半物理仿真和趣味航線飛行等。
本書可為從事無(wú)人機(jī)設(shè)計(jì)制作的技術(shù)人員提供幫助,可供無(wú)人機(jī)愛(ài)好者自學(xué),還可供大學(xué)院校相關(guān)專業(yè)師生學(xué)習(xí)參考。
第1章多旋翼無(wú)人機(jī)簡(jiǎn)介
1.1 多旋翼機(jī)發(fā)展簡(jiǎn)史 2
1.1.1 多旋翼機(jī)的起源 2
1.1.2 逐漸復(fù)蘇 4
1.1.3 多旋翼機(jī)的春天 5
1.2 無(wú)人機(jī)與航空模型 6
1.2.1 機(jī)型分類 6
1.2.2 航空模型飛機(jī) 10
1.2.3 全自動(dòng)無(wú)人機(jī) 10
1.3 開(kāi)源飛控簡(jiǎn)介 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 動(dòng)力來(lái)源 15
2.1.2 垂向運(yùn)動(dòng) 17
2.1.3 飛行姿態(tài) 18
2.2 飛行原理 22
2.2.1 滾轉(zhuǎn)角與定高飛行 22
2.2.2 滾轉(zhuǎn)角與水平運(yùn)動(dòng) 23
2.3 十字形與叉形四旋翼 26
2.3.1 運(yùn)動(dòng)方向與姿態(tài) 26
2.3.2 混合控制方法 27
第3章硬件結(jié)構(gòu)設(shè)計(jì)
3.1 螺旋槳 30
3.1.1 制作材料 30
3.1.2 直徑、螺距與弦長(zhǎng) 30
3.1.3 多葉螺旋槳 31
3.1.4 靜平衡與動(dòng)平衡 32
3.2 有刷電機(jī)與無(wú)刷電機(jī) 32
3.2.1 電磁鐵轉(zhuǎn)動(dòng)原理 32
3.2.2 有刷電機(jī) 34
3.2.3 無(wú)刷電機(jī) 35
3.2.4 相關(guān)參數(shù) 37
3.3 電調(diào)與PWM信號(hào) 37
3.3.1 電調(diào) 37
3.3.2 PWM信號(hào) 38
3.3.3 直流有刷電調(diào) 39
3.3.4 直流無(wú)刷電調(diào) 39
3.3.5 電調(diào)安全保護(hù)機(jī)制 40
3.3.6 最大和最小行程校準(zhǔn) 41
3.4 動(dòng)力電池 41
3.4.1 電池電壓 41
3.4.2 電池容量與放電倍率 43
3.5 遙控器 44
3.5.1 遙控器與接收機(jī) 44
3.5.2 美國(guó)手與日本手 45
3.6 機(jī)架設(shè)計(jì) 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 接口說(shuō)明 53
4.2 硬件清單與組裝說(shuō)明 57
4.2.1 硬件清單 57
4.2.2 組裝說(shuō)明 58
第5章開(kāi)源飛控程序
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手動(dòng)模式 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ù)存儲(chǔ) 94
6.1.2 內(nèi)部通信總線 95
6.1.3 外部通信總線 95
6.1.4 驅(qū)動(dòng)程序 96
6.1.5 飛行控制器 97
6.2 源代碼結(jié)構(gòu)設(shè)計(jì) 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)行平臺(tái)(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è)計(jì)與實(shí)現(xiàn) 132
6.3.3 uORB使用方法 145
6.4 Mavlink 147
6.4.1 整體功能設(shè)計(jì) 147
6.4.2 Mavlink主程序 148
6.4.3 MavlinkStream發(fā)送器 154
6.4.4 MavlinkReceiver接收器 159
第7章開(kāi)源操作系統(tǒng)NuttX
7.1 NuttX概述 175
7.1.1 NuttX簡(jiǎn)介 175
7.1.2 系統(tǒng)特性 175
7.1.3 支持的平臺(tái) 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 信號(hào)量接口 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 多級(jí)反饋隊(duì)列 212
8.1.3 搶占式優(yōu)先級(jí)調(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 信號(hào)量與鎖 237
8.5.1 互斥信號(hào)量 238
8.5.2 同步信號(hào)量 244
8.5.3 互斥鎖與條件變量 245
第9章驅(qū)動(dòng)程序
9.1 系統(tǒng)級(jí)驅(qū)動(dòng)程序 251
9.1.1 通用接口函數(shù) 251
9.1.2 注冊(cè)驅(qū)動(dòng)程序 255
9.1.3 編寫驅(qū)動(dòng)程序 258
9.1.4 LED燈驅(qū)動(dòng)程序 266
9.2 SPI驅(qū)動(dòng)程序 268
9.2.1 SPI總線協(xié)議 268
9.2.2 SPI管腳配置 269
9.2.3 SPI驅(qū)動(dòng)類 275
9.2.4 SPI氣壓計(jì)驅(qū)動(dòng)程序 279
9.3 I2C驅(qū)動(dòng)程序 287
9.3.1 I2C總線協(xié)議 287
9.3.2 I2C驅(qū)動(dòng)類 288
9.4 應(yīng)用級(jí)驅(qū)動(dòng)程序 289
9.4.1 準(zhǔn)備工作 289
9.4.2 實(shí)現(xiàn)驅(qū)動(dòng)程序 292
第10章遙控器協(xié)議
10.1 PWM 297
10.1.1 PWM信號(hào)使用 297
10.1.2 PWM信號(hào)采集 298
10.2 PPM 302
10.2.1 PPM信號(hào)使用 302
10.2.2 PPM信號(hào)采集 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 控制模式及其開(kāi)關(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 安全開(kāi)關(guān) 356
第12章?tīng)顟B(tài)估計(jì)
12.1 傳感器校準(zhǔn) 360
12.1.1 加速度計(jì) 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)解算與速度位置估計(jì) 380
12.3.1 坐標(biāo)系變換 380
12.3.2 姿態(tài)解算 383
12.3.3 速度位置估計(jì) 385
第13章飛行控制方法
13.1 反饋、PID、串級(jí)控制 389
13.1.1 反饋控制 389
13.1.2 PID控制 391
13.1.3 串級(jí)控制 392
13.2 姿態(tài)控制 394
13.2.1 姿態(tài)控制原理 394
13.2.2 姿態(tài)控制過(guò)程 395
13.3 位置控制 400
13.3.1 位置控制原理 400
13.3.2 位置控制過(guò)程 403
13.4 混合控制器 408
13.4.1 多旋翼混控原理 408
13.4.2 混控配置文件 413
13.4.3 PWM輸出 417
第14章航線規(guī)劃全自動(dòng)飛行
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è)計(jì) 428
14.2.1 導(dǎo)航引擎 428
14.2.2 自動(dòng)任務(wù)設(shè)計(jì) 433
14.2.3 自動(dòng)起飛與降落 438
14.2.4 自動(dòng)航跡點(diǎn)任務(wù) 438
14.2.5 自動(dòng)返航 440
14.2.6 目標(biāo)跟隨與其他導(dǎo)航模式 443
第15章動(dòng)力學(xué)建模及半物理仿真
15.1 動(dòng)力學(xué)建模 445
15.1.1 動(dòng)力模型 445
15.1.2 受力運(yùn)動(dòng) 446
15.2 半物理仿真 448
15.2.1 使用jMavSim仿真程序 448
15.2.2 自行編寫仿真程序 450
第16章外部控制與趣味航線
16.1 外部控制系統(tǒng) 458
16.1.1 方案設(shè)計(jì) 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