首页>参考读物>计算机科学与技术>人工智能

无人机编程实战:基于ArduPilot和Pixhawk
作者 : [墨]胡里奥·阿尔贝托·门多萨—门多萨(Julio Alberto Mendoza-Mendoza) [墨]维克多·冈萨雷斯—维雷拉(Victor Gonzalez-Villela) [墨]加布里埃尔·塞普尔韦达—塞万提斯(Gabriel Sepulveda-Cervantes) [墨]毛里西奥·门德斯—马丁内斯(Mauricio Mendez-Martinez) [墨]温贝托·索萨—阿苏埃拉(Humberto Sossa-Azuela) 著
译者 : 徐坚 张利明 吴文峰 李佳蓓 译
出版日期 : 2021-08-05
ISBN : 978-7-111-68758-0
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 259
开本 : 16
原书名 : Advanced Robotic Vehicles Programming: An ArduPilot and Pixhawk Approach
原出版社: Apress
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书包括三个部分,首先介绍自动驾驶仪和库的特性。然后着重介绍对ArduPilot库的重要部分的理解,其中描述了代码的每个主要组成部分。第三部分是高级特性部分,目的是将获得的知识扩展到实时应用程序。每个部分都详细描述了代码及其组件、应用程序和交互。

图书特色

无人机编程实战
基于ArduPilot和Pixhawk
Advanced Robotic Vehicles Programming
An ArduPilot and Pixhawk Approach
[墨] 胡里奥·阿尔贝托·门多萨–门多萨(Julio Alberto Mendoza-Mendoza) 维克多·冈萨雷斯–维雷拉(Victor Gonzalez-Villela)
加布里埃尔·塞普尔韦达–塞万提斯(Gabriel Sepulveda-Cervantes)
毛里西奥·门德斯–马丁内斯(Mauricio Mendez-Martinez)
温贝托·索萨–阿苏埃拉(Humberto Sossa-Azuela)                                                          著
基于开源平台轻松构建和开发自己的无人机
提供相关配套代码下载

图书前言

本书的目的是讲授ArduPilot库的功能以及以四旋翼通用多旋翼飞机为例的Pixhawk自动驾驶仪,同时也提供了其他类型的定制飞行器(参见附录8)、陆地或水上交通工具,以及与上述库兼容的其他自动驾驶仪扩展知识的指南。
本书包括三个部分:第一部分(引言)介绍自动驾驶仪和库的特性;第二部分(顺序操作模式)着重于对ArduPilot库的最重要部分的理解,描述了代码的每个主要组成部分;第三部分(实时模式)介绍高级特性,目的是将获得的知识扩展到实时应用程序。每个部分都详细描述了代码及其组件、应用程序和交互,当然,还有作者建议的参考书目,供那些想要深入学习的读者参考。
应该指出,ArduPilot库的使用并非Pixhawk自动驾驶仪所独有,还可以扩展到许多其他平台。但是,作者喜欢根据其性能来采用这种组合。这意味着,本书提供了基于这些库的实训,并允许最终用户对其工作进行调整以适应广泛的自动驾驶仪和测试平台。
先验知识
本书的读者至少应具有高中学历或技术学士学位。
必需的知识
编程:了解如何使用Arduino是必要的起点。
经济实力:进行自动驾驶研究时,购买各种零部件的成本较高。你应该有能力购买或组装自己的飞行器和相应的零件。
英语:为了解决某些问题,通常需要访问国外的论坛和商店,或观看英语视频,因此有必要具有中等英语水平。
最好有但非必需的知识
数学:你应该了解向量和矩阵的基本推导以及基本运算。
物理和控制:你应该了解阻尼谐振荡器和PD控制的概念、力和扭矩的概念、坐标系的使用以及如何求解运动和力的分量。
预期结果
通过阅读本书,你将能够:
以先进的方式对Pixhawk进行编程。Pixhawk是ETH创建的开源自动驾驶仪,广泛用于自动驾驶仪的研发领域。
使用ArduPilot库,该库是世界上大多数用户进行自动驾驶仪研究和开发的软件开发接口之一。
以一种非常具体的方式利用四轴飞行器模拟和实现任何空中、地面和水上自动驾驶的基本半自动控制。
将理论与实践相结合,开发自动驾驶仪。
在自动驾驶仪的设计过程中选择硬件和软件组件。
使用与本书介绍的技术兼容的其他硬件和软件开发包。
熟悉该领域常用的科学和技术术语。
熟悉该领域相关的文章和书籍。
通过全向飞行器的基本理论,将四轴飞行器应用的知识扩展到三维飞行器上(即可以实现“任意方向”和“任意位置”)。
在构建自己的自动驾驶仪(通过编程微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、嵌入式卡或任何其他方法)时,确定与自动驾驶最相关的复杂事项和操作流程。
许可证
ArduPilot库和Mission Planner软件是GPLv3免许可证软件,可以按照自由软件基金会(www.fsf.org/)所述的GNU GPLv3条款和限制重新分发或修改它们。
发布代码和程序的目的是希望它们有用,但没有任何保证,甚至没有对特定用途的适销性的隐含保证。有关更多详细信息,请参见GNU项目的“通用公共许可证”部分。
ArduPilot库可以从http://ardupilot.org/dev/docs/apmcopter-programming-libraries.html下载。
可以从http://ardupilot.org/planner/下载Mission Planner软件。
Pixhawk自动驾驶仪具有属于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)。
几乎所有终端都是公共领域的软件。我们建议使用terminal.exe、putty或任何其他等效工具。
Java SE开发工具包8u111更新了名为jdk-8u111-windows-i586.exe的可执行文件,它属于Oracle,并且仅在需要正确执行包含在库中的Eclipse版本的情况下才需要从www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html下载。
责任条款
出版商、作者、ArduPilot或Pixhawk项目的开发社区都不对读者使用本书知识设计、编程或操作的任何飞行器或机器人承担任何责任。
每一位读者都有责任做到以下几点:
1.阅读并正确理解这本书的全文。
2.对个人项目有适当的权限和安全措施。
3.为项目使用合适的材料和设备。
无论是出版商、作者,还是ArduPilot或Pixhawk项目的开发社区,都不会回复与每个读者的个人项目相关的问题或看法,无论这些项目有多重要或多紧急。要明白,这本书包含了足够详细的资料,在非常特殊的情况下,也可以访问在线论坛:
http://discuss.px4.io/
https://discuss.ardupilot.org/
http://ardupilot.org/dev/docs/apmcopter-programming-libraries.html的社区版块
无论是出版商、作者,还是ArduPilot或Pixhawk项目的开发社区,都不对读者在软件安装过程中或之后对他们的计算机设备或嵌入式系统造成的损害负责,每个读者都有责任按照所提供的说明进行操作。
无论是出版商还是作者,都不对ArduPilot开发社区或Pixhawk项目所产生的代码和语法变化负责。这是可以理解的,因为软件和硬件在不断发展。本书应该作为一个基础模板,以便理解未来的修改。
警告
在某些国家和地区,飞行器和所有类型的交通工具的使用都受到税收和法律的限制,因为设备、建筑物、生物和人都可能会受到影响。
即使用户拥有操作飞行器的所有合法许可,本书的目的也是教用户开发原型,因此用户测试必须在具有足够安全条件的封闭空间或为这些实验设计的开放非公共空间中进行。
读者必须避开公共场所或禁区。读者要对自己的测试负责,请避免侵权和事故。
特别注意锂聚合物电池。这些电池可能是易燃易爆的,这是额外的风险。
最后,如果缺乏必要的保养和设计,则使用飞行器及其部件的成本可能会变得昂贵,因此这是读者的责任。
在任何情况下,无论紧急程度如何,作者都不会对私人或公共项目做出答复。相反,我们建议读者在论坛上寻求答案。

上架指导

人工智能\无人机

封底文字

本书旨在教授如何使用ArduPilot库和Pixhawk自动驾驶仪(这两项都是开源的)对无人机进行编程,重点是四旋翼飞机,相关知识也可以用于潜艇和漫游器。
本书能将你的技能提升到一个新的水平,帮助你把从硬件到软件的理论和实践联系起来。

通过阅读本书,你将学会:
? 在任何无人驾驶飞行器上建模并实现基本控制
? 在无人机的设计过程中选择硬件和软件组件
? 使用其他兼容的硬件和软件开发包
? 该领域的流行术语
? 确定无人机操作相关的复杂性和流程

本书适合无人机及自动驾驶车辆相关领域的本科生和研究生、研究人员、创客、业余爱好者,以及任何想要在Arduino基础编程之外开发机器人的读者。

译者序

近年来,自动驾驶技术的研究如火如荼,各种飞行控制软件和无人机硬件标准也应运而生。ArduPilot是专为无人机构建的一款开源自动驾驶仪软件程序,它也是一款非常精细的飞行控制系统,提供了一整套适用于几乎所有无人机和应用程序的工具。基于它可以创建和使用可依赖的、自主的、自动驾驶的车辆系统。与此同时,Pixhawk作为无人机硬件的开放标准,为无人机系统开发提供了现成的硬件规格和指南。
为帮助读者在Pixhawk上基于ArduPilot库进行高级自动驾驶编程,本书以翔实的示例代码讲授了ArduPilot库的功能和Pixhawk自动驾驶仪。本书包括三部分:引言、顺序操作模式和实时模式。每个部分都有翔实的代码,也附有作者建议的参考资料以满足读者进一步学习的需要。通过阅读本书,读者可在本书的指导下开发原型系统。
本书的技术性、可操作性强,比较适合爱好自动驾驶编程的读者。本书的翻译工作得到了民族教育信息化教育部重点实验室、民族教育信息化教育部重点实验室2020开放基金项目以及云南师范大学2020年度研究生科研创新基金项目的资助,得到了同行、老师、学生和朋友们的帮助和鼓励,在此表示诚挚的谢意。书中文字与内容力求忠于原著,但限于译者水平有限,时间仓促,译文中难免有疏漏之处,敬请读者批评指正。

译者
2020年9月于云南昆明

图书目录

译者序
前言
致谢
第一部分 引言
第1章 硬件和软件说明 2
1.1 自动驾驶仪 2
1.2 自动驾驶仪的种类:SDK与GUI 3
1.3 SDK的种类 4
1.4 Pixhawk自动驾驶仪(硬件) 5
1.5 克隆版本与原始版本 8
1.6 商业自动驾驶仪与你自己的设计 8
1.7 ArduPilot库(软件) 9
1.8 兼容性和类似项目 9
1.9 硬件和软件之间的困惑 10
1.10 本章小结 10
第2章 ArduPilot工作环境 11
2.1 ArduPilot库的相关文件类型 11
2.2 特定数据类型 11
2.3 所用程序的描述和流程 12
2.3.1 编码和编译 13
2.3.2 连接和加载接口 13
2.3.3 物理执行 13
2.3.4 显示 13
2.3.5 反馈 14
2.4 上传自定义代码到自动驾驶仪 14
2.5 使用Eclipse创建新项目 16
2.6 错误校验 21
2.7 ArduPilot库中直接使用Arduino是否可行 26
2.8 本章小结 27
第3章 概念和定义 28
3.1 辅助组件 28
3.1.1 无刷电机 28
3.1.2 ESC 29
3.1.3 螺旋桨 30
3.1.4 框架 30
3.1.5 特殊连接器 31
3.1.6 遥测模块(无线串行通信) 32
3.1.7 锂电池 33
3.1.8 电池测试仪或电池监测器 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 被动防振模块 36
3.1.16 遥控器 37
3.1.17 嵌入式车载电脑 37
3.1.18 特殊Pixhawk组件 38
3.2 计算效率与数学等式 38
3.3 使用变量、函数、模块和对象 39
3.3.1 变量 39
3.3.2 结构体 39
3.3.3 函数 40
3.3.4 模块 40
3.4 getter和setter的概念 42
3.5 方向和位置的概念 42
3.6 安装和编码之间的区别 44
3.7 ArduPilot代码的常用部分 44
3.8 ArduPilot代码编程的常用模型 45
3.9 本章小结 46
参考资料和建议网站 47
第二部分 顺序操作模式
第4章 基本输入和输出操作 51
4.1 头文件 52
4.2 设置 54
4.2.1 写入终端 54
4.2.2 读取终端 56
4.2.3 读取无线电信号 57
4.3 辅助通道与状态机简介 62
4.3.1 内部传感器读取位置和方向 64
4.3.2 外部位置传感器读数(GPS) 68
4.3.3 读取模拟传感器 72
4.3.4 信号滤波 73
4.3.5 读写数字 75
4.3.6 电池读数 77
4.3.7 通过主LED使用视觉警报 78
4.4 本章小结 79
第5章 高级操作 80
5.1 有线和无线串行通信 80
5.2 通信程序 83
5.2.1 发送数据的过程 84
5.2.2 数据验证过程 87
5.2.3 基本“校验和”方法的描述 87
5.2.4 XOR“校验和”方法的描述 87
5.3 轮询 89
5.4 通过串行通信和开发板从外部设备读取信息 97
5.5 写入无刷电机(BLDC电机) 99
5.5.1 代码优化 106
5.5.2 写入电机的简化函数 106
5.6 写入标准直流电机(有刷) 110
5.7 使用步进电机 117
5.8 使用伺服电机执行辅助任务 118
5.9 ArduPilot兼容电机总结 121
5.10 数据的使用与存储 121
5.11 使用Mission Planner GUI绘制SD数据 126
5.12 时间管理 133
5.13 本章小结 135
第6章 控制具有平稳飞行模式的四轴飞行器 136
6.1 多轴飞行器的基本建模 140
6.2 第二个例子:双轴飞行器(同轴电机分析) 149
6.3 速度运动学关系 155
6.3.1 动态平移方程 157
6.3.2 动态旋转方程 158
6.4 飞行模式 161
6.5 解耦的任务 163
6.6 控制方法 165
6.7 闭环与开环 165
6.8 饱和PD控制(飞行的软模式基本控制) 166
6.9 无人机飞行的实施 175
6.10 本章小结 180
参考资料 180
第三部分 实 时 模 式
第7章 实时工作环境 184
7.1 链接器 184
7.2 调度程序说明 184
7.3 实时模式/调度程序模式下的ArduPilot常用部件 185
7.4 测量任务执行时间 186
7.5 本章小结 190
第8章 应用程序代码 191
8.1 radio.pde模块 194
8.2 control.pde模块 194
8.3 data.pde模块 197
8.4 pose.pde模块 200
8.5 本章小结 201
参考资料 202
附录1 与其他SDK命令的比较 203
附录2 设置扩展代码 205
附录3 扩展头文件 206
附录4 完整功能代码 210
附录5 有用的关键字 215
附录6 安装ArduPilot库 216
附录7 推力矢量 234
附录8 全向性 236
附录9 扩展功率的方法 239
附录10 四轴飞行器设计总结 241
附录11 使用头文件 245

教学资源推荐
作者: 李进 谭毓安 著
作者: [中]石川(Chuan Shi) [美]俞士纶 (Philip S. Yu) 著
作者: [美]马修 T.梅森(Matthew T. Mason)著
作者: Nils J.Nilsson
参考读物推荐
作者: [印] 纳温·库马尔·马纳西(Navin Kumar Manaswi) 著
作者: 蒋杰 刘煜宏 陈鹏 郑礼雄等著
作者: [印] 拉蒂普·杜瓦(Rajdeep Dua)曼普里特·辛格·古特(Manpreet Singh Ghotra)著
作者: 甄建勇 王路业 著