第1章 低空经济下的无人机 1
1.1 无人机的部分低空应用场景 1
1.1.1 测绘 1
1.1.2 农林植保和环境监测 2
1.1.3 线路巡检 3
1.2 无人机的发展趋势 3
1.2.1 无人化试飞 3
1.2.2 混合编队 4
1.2.3 无人机空战 5
1.3 理解无人机系统 5
1.3.1 无人机的主要子系统 6
1.3.2 从理论到仿真再到应用 7
第2章 无人机的导航 9
2.1 导航的概念 10
2.1.1 导航子系统常用的坐标系 10
2.1.2 常见的导航设备 10
2.2 常用的辅助导航技术 11
2.2.1 天文导航 11
2.2.2 GNSS 13
2.2.3 地形匹配导航 14
2.2.4 机器视觉 15
2.3 惯性导航的原理 22
2.3.1 递推姿态和位置 23
2.3.2 描述载体姿态的数学工具 24
2.3.3 万向锁问题 26
2.3.4 四元数和欧拉角、旋转矩阵
之间的转换 27
2.4 载体的姿态变换 30
2.4.1 四元数的定义和运算规则 30
2.4.2 用四元数求解向量的旋转变换 32
2.4.3 内旋和外旋 39
2.4.4 旋转变换与绕转向量本身的变换 42
2.5 惯导系统的姿态解算 46
2.5.1 四元数微分方程 47
2.5.2 毕卡解算 48
2.5.3 龙格库塔解算 50
第3章 无人机的飞行控制 53
3.1 飞机的飞行和姿态控制原理 54
3.1.1 常规布局的固定翼飞机 54
3.1.2 飞翼布局的固定翼飞机 59
3.1.3 直升机 61
3.1.4 多旋翼飞行器 63
3.2 飞行控制子系统 65
3.2.1 飞控系统的功能 65
3.2.2 基础概念和坐标系定义 66
3.2.3 飞控系统的构成 66
3.3 飞控系统的设计 69
3.3.1 建立飞机的动力学模型 69
3.3.2 设计姿态控制律 74
3.3.3 设计制导控制律 75
3.3.4 设计编队控制算法 80
3.4 设计控制律的理论基础:经典控制理论 84
3.4.1 控制模型和数学工具 84
3.4.2 反馈与多重闭环 85
3.4.3 系统性能分析 87
3.4.4 串联校正和频域分析 91
3.5 PID控制 98
3.5.1 PID控制器的结构 98
3.5.2 PID控制和串联校正的关系 99
3.5.3 参数整定 101
第4章 开源飞控软件PX4 102
4.1 PX4的系统架构 103
4.2 模块化设计 105
4.2.1 模板类ModuleBase 107
4.2.2 加载调用 108
4.3 uORB消息总线 108
4.3.1 块设备与uORB消息主题 109
4.3.2 uORB的接口函数和异步回调 112
4.3.3 DeviceNode管理消息主题 114
4.3.4 uORB消息的流转过程 115
4.3.5 消息队列 119
4.4 实现导航和飞控功能的模块 125
4.4.1 姿态估计模块 126
4.4.2 多旋翼姿态控制模块 133
4.4.3 制导控制模块 139
第5章 模拟飞行与数字仿真 141
5.1 模拟飞行 142
5.1.1 基于FlightGear的固定翼飞机模拟器 142
5.1.2 FlightGear和MATLAB联合仿真 146
5.1.3 用AirSim构建四旋翼飞机的模拟训练环境 149
5.2 多旋翼飞机的仿真建模 150
5.2.1 推导动力学方程组 151
5.2.2 搭建Simulink仿真模型 153
5.2.3 容器化部署 155
5.3 固定翼飞机自动驾驶仿真系统 158
5.3.1 建立动力学仿真模型 159
5.3.2 设计多个通道的控制器 160
5.3.3 坐标变换 162
5.3.4 仿真效果评估 165
5.4 重构模型与联合仿真 167
5.4.1 重构C++程序实现并行仿真 167
5.4.2 C++仿真程序驱动FlightGear 169
5.4.3 用Python编写数据分析程序 170
5.5 仿真软件FlightGear的二次开发 173
第6章 数据链和通信协议 176
6.1 数据链 177
6.2 MAVLink协议 178
6.2.1 帧结构 178
6.2.2 微服务框架与路由规则 180
6.3 STANAG 4586协议 181
6.3.1 帧结构 181
6.3.2 多态数据帧 182
第7章 开发地面控制站软件 183
7.1 解构地面站软件的功能 184
7.1.1 发布-订阅通信 184
7.1.2 使用Qt Quick编写前端窗口 187
7.1.3 数字地图和三维地理信息 187
7.1.4 多窗口层叠显示 190
7.1.5 应用程序划分 191
7.2 任务规划程序 192
7.2.1 编辑航路点 192
7.2.2 操作状态的切换 194
7.2.3 多态化的事件响应 195
7.2.4 辅助功能 196
7.3 飞行监控程序 198
7.3.1 联通前后端 199
7.3.2 分区管理各种控件 201
7.3.3 信息记录列表 205
7.3.4 多窗口布局 207
7.4 HUD屏显程序 208
7.4.1 文本和图标 209
7.4.2 数值标尺 209
7.4.3 姿态标尺 211
7.4.4 控制屏显标尺的渲染时间 213
7.5 通信服务 214
7.5.1 通信协议库 214
7.5.2 发布订阅库 215
7.5.3 数据管理 217
7.5.4 服务程序 218
第8章 图像载荷数据处理 220
8.1 使用FFmpeg处理图像编解码 221
8.1.1 YUV420和流媒体 222
8.1.2 FFmpeg初始化 223
8.1.3 压缩图像 224
8.1.4 解码和渲染图像帧 227
8.2 存取视频数据 233
8.2.1 将码流转储为视频文件 233
8.2.2 提取MP4文件的图像帧 236
8.2.3 对象存储 239
8.3 图像处理技术 241
8.3.1 平移和镜像变换 241
8.3.2 旋转变换 244
8.3.3 多路视频的拼接融合 247
8.3.4 动态目标检测 249
第9章 组装和试飞六旋翼无人机 251
9.1 试飞过程中的安全措施 252
9.1.1 人员安全防护 252
9.1.2 保护机架和设备 252
9.2 元器件选型 253
9.2.1 主要配件清单 253
9.2.2 机架安装 254
9.2.3 旋翼编号图 255
9.2.4 Pixhawk的接口 256
9.3 元器件的地面调试 257
9.3.1 连接机载元器件 257
9.3.2 刷固件库和校准调参 258
9.3.3 数据链和摄像云台 259
9.3.4 电调校准 260
9.4 装机调试 260
9.4.1 为机架装配电子元器件 260
9.4.2 遥控飞行训练 263
9.4.3 离线分析飞行数据 264
9.5 飞行试验 264
9.5.1 航前检查 265
9.5.2 任务实施 266
9.5.3 航后检查 266
参考文献 268