您的浏览器不支持JavaScript,请开启后继续
一本书看懂多旋翼无人机

一本书看懂多旋翼无人机

  • 作者
  • 李德强 著

本书以四旋翼无人机为例,讲解多旋翼无人机的飞行理论与控制体系,从螺旋桨、电动机、电调、动力电池、机架等角度介绍硬件结构与飞行原理。通过开源自驾仪Pixhawk和开源飞行控制程序PX4介绍了全自动多旋翼无人机控制系统的整个实现过程。内容涵盖了从硬件组装清单到飞控程序下载编译的整个过程,并对如何使用地面站程序对飞控进行航前校准和参数设定做了说明。 本书将飞行理论与设...


  • ¥138.00

ISBN: 978-7-122-36117-2

版次: 1

出版时间: 2020-08-01

图书介绍

ISBN:978-7-122-36117-2

语种:汉文

开本:16

出版时间:2020-08-01

装帧:平

页数:478

编辑推荐

1、本书从飞行原理、硬件组装及软件系统开发几个方面,系统介绍了多旋翼无人机的开发设计理论和组装设计方法,内容由浅入深,可帮助读者完成从入门到进阶的过程。 2、内容全面,涵盖了多旋翼无人机设计的各个方面,可参考性强。 3、本书内容基于作者自行设计制作多旋翼无人机的经验,操作性强。 4、提供了控制系统设计的源代码,并做了修改与简化,更利于读者参考学习。

图书前言

2016年,偶然的一次冲动,我想要自己制作一套四旋翼无人机。虽然当时可以购买现成的商业自驾仪和下载开源飞控程序,但是为了深刻体会无人机的控制原理,我还是决定要自己从零开始。我一边到处查找相关资料,一边向相关朋友请教。同时,购买了很多配件和控制板,自己尝试组装四旋翼无人机和编写控制程序。起初,我买了很多竹条,用手钻打洞,做成机架,安装电动机和螺旋桨。当时的我没有任何理论基础,写完程序之后也没有使用任何仿真程序进行飞行模拟,而是直接用一只手举着飞机,另一只手在电脑上调节参数。我在家里一间10m2的房间里进行测试,有几次程序出现错误,失控的螺旋桨将卧室里的地板、门框都打坏了。有一次螺旋桨甚至在我的右胳膊上割开一条一寸多长的伤口。有朋友对我开玩笑说:“这是我听说过唯一一个因为编程而导致的流血事件!”经过不断地修改程序和试飞,不断地分析总结问题并修正,飞机终于在一年之后离开地面飞上了天空。
虽然我自己开发的飞控程序与商业无人机没有可比性,也没有那些开源飞控程序功能强大、稳定,但是对于我个人来说,这架无人机从无到有的整个过程,让我从本质上理解了多旋翼无人机的控制体系和飞行原理,这对我后来学习并理解PX4开源无人机飞控程序有很大的帮助。之后,我开始接触开源自驾仪Pixhawk和开源飞行控制程序PX4,这使得我从实践回归理论,对多旋翼无人机有了更深入的理解。
后来我自己创办了“编程外星人”公众号和“问渠网”,每个星期都会通过公众号和网站发布对多旋翼无人机的学习笔记和心得体会。基于这些笔记与心得,在对多旋翼无人机的理论体系做了梳理与思考后,我补充了大量内容,形成了本书。
本书以四旋翼无人机为例,讲解多旋翼无人机的飞行理论与控制体系。从螺旋桨、电动机、电调、动力电池、机架等角度介绍其硬件结构与原理;讲述多旋翼无人机如何产生飞行动力,如何完成六个自由度的飞行动作。通过开源自驾仪Pixhawk和开源飞行控制程序PX4介绍全自动多旋翼无人机控制系统的整个实现过程,内容涵盖了从硬件组装清单到飞控程序下载编译的整个过程,并对如何使用地面站程序对飞控进行航前校准和参数设定做了说明。
本书将飞行理论与设计实现相互结合,通过对PX4飞控程序的分析、讲解、修改和完善,梳理了多旋翼无人机的相关知识。包括:飞控程序的架构设计、开源操作系统、驱动程序、状态估计、控制算法、导航系统等,以及如何通过对多旋翼无人机的动力系统建模实现半物理仿真和趣味航线飞行等。
本书编写时所参考的PX4源代码的版本号为1.8.2,在此版本下源代码共有329万行之多,其中包括Nuttx操作系统源代码259万行,PX4飞控程序54万行。并且这只包括C/C++源代码,而不包括Xml、Python、Shell脚本等其他工具类代码。PX4飞控程序中参与编译的模块有50多个,代码量庞大而且复杂。因为PX4源代码中很多函数的参数都非常多,变量的命名也参差不齐,代码为了适应多变的条件,处理逻辑非常之复杂。如果将大量这样的代码直接引用到本书当中,会使得读者理解源代码有很大的困难。因此,为了方便读者对源代码进行阅读和理解,本书中所引用的源代码是从PX4程序中部分摘取的,并进行了大量的简化和修改,所以本书中的源代码与PX4飞控程序中的源代码并不完全一致,但是却更便于学习和掌握。
书中内容涉及的知识很多,在编写过程中难免会出现疏漏和不足,敬请广大读者朋友和专家批评指正!
本书的编写几乎花费了我全部的业余时间和精力,如果没有家人的大力支持和很多好朋友的建议和指导,我根本无法做到。在此特别感谢我的家人、朋友为我所做的一切!

李德强

精彩书摘

本书以四旋翼无人机为例,讲解多旋翼无人机的飞行理论与控制体系,从螺旋桨、电动机、电调、动力电池、机架等角度介绍硬件结构与飞行原理。通过开源自驾仪Pixhawk和开源飞行控制程序PX4介绍了全自动多旋翼无人机控制系统的整个实现过程。内容涵盖了从硬件组装清单到飞控程序下载编译的整个过程,并对如何使用地面站程序对飞控进行航前校准和参数设定做了说明。
本书将飞行理论与设计实现相互结合,通过对PX4飞控程序的分析、讲解、修改和完善,梳理了多旋翼无人机的相关知识。包括:飞控程序的架构设计、开源操作系统、驱动程序、状态估计、控制算法、自主导航系统等,以及如何通过对多旋翼无人机的动力系统建模实现半物理仿真和趣味航线飞行等。
本书可为从事无人机设计制作的技术人员提供帮助,可供无人机爱好者自学,还可供大学院校相关专业师生学习参考。

目录

第1章多旋翼无人机简介
1.1 多旋翼机发展简史 2
1.1.1 多旋翼机的起源 2
1.1.2 逐渐复苏 4
1.1.3 多旋翼机的春天 5
1.2 无人机与航空模型 6
1.2.1 机型分类 6
1.2.2 航空模型飞机 10
1.2.3 全自动无人机 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 基本姿态 15
2.1.1 动力来源 15
2.1.2 垂向运动 17
2.1.3 飞行姿态 18
2.2 飞行原理 22
2.2.1 滚转角与定高飞行 22
2.2.2 滚转角与水平运动 23
2.3 十字形与叉形四旋翼 26
2.3.1 运动方向与姿态 26
2.3.2 混合控制方法 27
 
第3章硬件结构设计
3.1 螺旋桨 30
3.1.1 制作材料 30
3.1.2 直径、螺距与弦长 30
3.1.3 多叶螺旋桨 31
3.1.4 静平衡与动平衡 32
3.2 有刷电机与无刷电机 32
3.2.1 电磁铁转动原理 32
3.2.2 有刷电机 34
3.2.3 无刷电机 35
3.2.4 相关参数 37
3.3 电调与PWM信号 37
3.3.1 电调 37
3.3.2 PWM信号 38
3.3.3 直流有刷电调 39
3.3.4 直流无刷电调 39
3.3.5 电调安全保护机制 40
3.3.6 最大和最小行程校准 41
3.4 动力电池 41
3.4.1 电池电压 41
3.4.2 电池容量与放电倍率 43
3.5 遥控器 44
3.5.1 遥控器与接收机 44
3.5.2 美国手与日本手 45
3.6 机架设计 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编译环境搭建 68
5.1.3 Ubuntu编译环境搭建 71
5.1.4 PX4飞控程序编译与烧写 73
5.1.5 QGroundControl下载与编译 75
5.2 航前准备与航前校准 77
5.2.1 航前准备 78
5.2.2 航前校准 84
5.3 飞行模式 86
5.3.1 Stabilized增稳模式 87
5.3.2 Manual手动模式 87
5.3.3 Altitude高度模式 87
5.3.4 Position位置模式 88
5.3.5 Mission任务模式 89
5.3.6 Hold定点模式 89
5.3.7 Takeoff/Land起飞降落模式 90
5.3.8 Return返航模式 90
5.3.9 Acro/Rattitude特技姿态模式 91
5.3.10 Offboard离线模式 92
5.3.11 Follow Me跟随模式 92

第6章飞控架构与通信协议
6.1 架构总览 94
6.1.1 数据存储 94
6.1.2 内部通信总线 95
6.1.3 外部通信总线 95
6.1.4 驱动程序 96
6.1.5 飞行控制器 97
6.2 源代码结构设计 98
6.2.1 编译目标目录(build) 99
6.2.2 编译配置目录(cmake) 101
6.2.3 外部通信接口(Mavlink) 109
6.2.4 内部通信接口(msg) 116
6.2.5 运行平台(platforms) 120
6.2.6 ROM文件系统(ROMFS) 124
6.2.7 功能源代码(src) 127
6.2.8 其他工具(Tools) 130
6.3 uORB 130
6.3.1 基本通信原理 130
6.3.2 uORB设计与实现 132
6.3.3 uORB使用方法 145
6.4 Mavlink 147
6.4.1 整体功能设计 147
6.4.2 Mavlink主程序 148
6.4.3 MavlinkStream发送器 154
6.4.4 MavlinkReceiver接收器 159

第7章开源操作系统NuttX
7.1 NuttX概述 175
7.1.1 NuttX简介 175
7.1.2 系统特性 175
7.1.3 支持的平台 178
7.2 用户接口 183
7.2.1 任务控制接口 183
7.2.2 任务调度接口 188
7.2.3 调度控制接口 190
7.2.4 消息队列接口 192
7.2.5 信号量接口 193
7.2.6 环境变量 196
7.2.7 文件系统接口 197
7.2.8 网络接口 197
7.3 NuttShell(NSH) 199
7.3.1 概览 199
7.3.2 常用命令 201

第8章进程、线程及工作队列
8.1 任务调度 211
8.1.1 并行任务 211
8.1.2 多级反馈队列 212
8.1.3 抢占式优先级调度 213
8.2 多进程 214
8.2.1 什么是进程 214
8.2.2 创建进程 216
8.3 多线程 224
8.3.1 什么是线程 224
8.3.2 创建线程 225
8.3.3 线程与进程的区别 230
8.4 工作队列 232
8.4.1 什么是工作队列 232
8.4.2 加入工作队列 235
8.5 信号量与锁 237
8.5.1 互斥信号量 238
8.5.2 同步信号量 244
8.5.3 互斥锁与条件变量 245

第9章驱动程序
9.1 系统级驱动程序 251
9.1.1 通用接口函数 251
9.1.2 注册驱动程序 255
9.1.3 编写驱动程序 258
9.1.4 LED灯驱动程序 266
9.2 SPI驱动程序 268
9.2.1 SPI总线协议 268
9.2.2 SPI管脚配置 269
9.2.3 SPI驱动类 275
9.2.4 SPI气压计驱动程序 279
9.3 I2C驱动程序 287
9.3.1 I2C总线协议 287
9.3.2 I2C驱动类 288
9.4 应用级驱动程序 289
9.4.1 准备工作 289
9.4.2 实现驱动程序 292

第10章遥控器协议
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协议格式 312
10.3.3 S.BUS协议解析 313

第11章飞控状态与命令执行
11.1 主状态与切换 319
11.1.1 主状态定义与切换条件 319
11.1.2 主状态切换命令与响应 325
11.2 导航状态与控制模式 337
11.2.1 导航状态定义与切换条件 337
11.2.2 控制模式及其开关条件 343
11.3 飞控锁定与解锁 347
11.3.1 飞控锁定保护 347
11.3.2 锁定与解锁状态 347
11.4 其他功能 350
11.4.1 起飞点设置 350
11.4.2 航灯设置 354
11.4.3 安全开关 356

第12章状态估计
12.1 传感器校准 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 公式推导 377
12.3 姿态解算与速度位置估计 380
12.3.1 坐标系变换 380
12.3.2 姿态解算 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 姿态控制 394
13.2.1 姿态控制原理 394
13.2.2 姿态控制过程 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章航线规划全自动飞行
14.1 导航基本原理 425
14.1.1 导航目标 425
14.1.2 搜索算法 426
14.1.3 预设航线 427
14.2 导航模块设计 428
14.2.1 导航引擎 428
14.2.2 自动任务设计 433
14.2.3 自动起飞与降落 438
14.2.4 自动航迹点任务 438
14.2.5 自动返航 440
14.2.6 目标跟随与其他导航模式 443
 
第15章动力学建模及半物理仿真
15.1 动力学建模 445
15.1.1 动力模型 445
15.1.2 受力运动 446
15.2 半物理仿真 448
15.2.1 使用jMavSim仿真程序 448
15.2.2 自行编写仿真程序 450

第16章外部控制与趣味航线
16.1 外部控制系统 458
16.1.1 方案设计 458
16.1.2 功能实现 460
16.2 趣味航线规划 470
16.2.1 等边三角形 470
16.2.2 圆形 473
16.2.3 三叶草 474
16.2.4 阿基米德螺旋线 476
 
参考文献 478

 

 

发送电子邮件联系我们