基于Zynq SoC器件Aerotenna实现首次ArduPilot兼容无人机飞行

FPGA/ASIC技术

204人已加入

描述

借助赛灵思 Zynq SoC 器件的处理能力和 I/O 功能,Aerotenna 实现首次 ArduPilot 兼容无人机 (UAV) 飞行

无人机 (UAV) 和无人机行业正在迅猛发展并成功进军新的商业和消费市场。无人机的发展潜力不断推动新的创新型应用发展,例如 3D 建模、军事援助和交付服务。

问题在于这些应用正日渐复杂化,要求越来越高的处理能力和越来越多的 I/O(输入 / 输出)接口,但可用的无人机平台并没有以相同的步伐发展。随着飞行所需的软硬件的持续发展,大多数无人机平台的功能已经达到极限。

Aerotenna 的研究小组已经成功试飞一款无人机,该无人机采用赛灵思 Zynq®-7000 All Programmable SoC 构建的板件。这次飞行标志着 Aerotenna 实施高计算强度微波传感产品发布计划的开始。该小组选用 Zynq SoC 的原因是其他同类解决方案无法提供所需的处理能力。采用这种新的平台(图 1),Aerotenna 计划通过部署自己的微波型防撞系统来改善无人飞行体验。

当今无人机技术的局限

无人机行业发展的主要动力一直源于飞行变得尽量经济实惠价,简化和删除一切不必要的功能。若用户想要购买的产品恰恰是能以最简单的方式满足用户需求的产品,这便是件好事。但是,对 Aerotenna 这样的开发商来说,其任务是寻求新的、复杂的应用,因此有必要开发和构建属于自己的无人机平台,使其能够为自己的创意提供处理速度支持。

当今的标准无人机平台受到的另一个重大局限是,缺乏对处理器的输入输出连接。因此,飞行控制系统很容易占用处理器的最大容量和 I/O 功能,给新传感器和新应用留下的空间很小。

标准处理器板所包含的大部分 I/O 已经被飞行所需的各种组件占用殆尽。这些功能组件包括用于量化飞行器方向的惯性测量传感器、用于判断高度的气压计和高度计以及用于对用户输入进行解码的 RC 接收器。任何用于添加更多特性的剩余 I/O 不能提供太多选择,一般局限于满足最常见的需求,比如摄像头或用于导航的 GPS。市场上目前尚不存在一种能够兼容多种不同类型传感器和外部接口的单个平台。

Aerotenna 的研发团队认为突破这些局限的途径是全新开发一种板件设计。Aerotenna 一直在优化一种新的无人机平台,该平台将在其他平台表现差强人意的方面崭露头角。Aerotenna 使用赛灵思提供的 Zynq SoC 器件来实现这一目标。其优异的设计将提供新一代 UAV 所需的显著增强的处理器速度和 I/O 功能。

为什么选择 Zynq SoC?

Aerotenna 选择 All Programmable Zynq SoC 作为构建我们强大平台的基础。Zynq SoC 芯片内部的双核 ARM® Cortex™-A9 APU 能实现无与伦比的处理器速度。在芯片结构、多处理器功能及 I/O 访问速度方面,市场上的廉价无人机平台解决方案均无法与 Zynq SoC 匹敌。因此 Zynq SoC 是新一代平台的理想选择。

目前,市场上的大部分飞行控制平台均基于微控制器单元 (MCU)。由于处理能力及 I/O 扩展能力有限,该架构会制约传感器融合的潜力。

Zynq SoC 在处理能力和 I/O 功能方面具有明显优势:双核 ARM 处理器与 FPGA 逻辑相结合,可实现一种软硬件协同设计方法,从而能够将一部分时序

关键型处理任务交付给可编程逻辑来处理。与基于 MCU 的平台相比,Zynq SoC 具有更丰富的 I/O 外设和存储器接口功能。选择 Zynq SoC 的另一个原因是,飞行控制程序可能会相当庞大,并且要求极为高速的 CPU,而 Zynq SoC 能够轻松地驾驭飞行控制程序的复杂性。同时,该器件还有大量剩余功能,为飞行控制程序的扩展留出了充裕的空间。

目前存在多种类型的飞行软件程序,它们都行为各异且复杂性不同。Aerotenna 决定使用的飞行控制软件名为 ArduPilot,这是由运行在 Dronecode 上的 APM(自动驾驶仪)提供的。它比大多数飞行控制软件复杂,但提供大量较简单程序所不具备的。

ArduPilot 飞行控制系统的复杂性随着开源社区为 APM 项目添加的内容越来越多而不断增加功能,例如路点导航和多种飞行模式,以满足用户的特定应用。

什么是 ARDUPILOT?

ArduPilot 是一种专为无人机构建的开源自动驾驶仪软件程序。该软件程序由开发人员和爱好者组成的庞大群体不断更新和改进。从最初为开源 Arduino 微处理器构建的相当简单的软件起步,不断壮大和复杂化,APM 项目如今已经兼容众多无人机平台。目前,该程序内含超过 70 万行代码,是一种非常精细的飞行控制系统。

该代码分为两个部分:高层次层和硬件抽象层 (HAL)。高层次层负责调度任务及根据输入的数据做出决策。HAL 是用于访问硬件的存储器的低层次代码。只需调整用于平台专用存储器访问的 HAL,这种代码结构划分就能将整个系统移植到其他平台。 而且,不管采用什么样的平台,上层次的代码只负责以相同的方式从 HAL 中提取数据。

随着开源社区为 APM 项目添加的内容越来越多,ArduPilot 飞行控制系统日趋复杂。因此,行业已经达到硬件的极限,正期待新一代能够推动持续增长的平台问世。

显著改进

将 ArduPilot 移植到 Zynq SoC 的初步工作(由谷歌无人机讨论组的 John Williams 牵头)于 2014 年完成,该工作为将 APM 移植到同一赛灵思平台上铺平了道路。随着无人机令人惊叹的新世界的开启,Williams 注意到 Zynq SoC 在提供定制 I/O 和实时图像处理方面的巨大潜力。有趣的是,Williams 是开发 PetaLinux 初始工具的公司 PetaLogix 的创始人。

赛灵思于 2012 年收购了这家公司。

Aerotenna 团队从硬件和固件两个方向继续推动这些设计工作,并于 2015 年 10 月完成采用 Zynq SoC 的 ArduPilot 的首飞。Aerotenna 团队在 PetaLinux 操作系统上运行 ArduPilot 飞行控制软件。 这一惊世壮举标志着无人机技术和功能的一次飞跃。

在处理能力和 I/O 功能方面,Aerotenna 团队的飞行控制解决方案远远领先于同类的其他无人机解决方案,这都归功于 Zynq SoC 中的双 ARM 内核。这一飞跃将为众多需要更强计算能力的新无人机应用打开大门。借助于为爱好者以及开发人员构建的充足硬件接口,Aerotenna 团队旨在确保提供切实的改进。无人机平台是在 Linux 操作系统上运行的,由于 Linux 的可编程性和多功能性,这种平台容纳多种类型应用的灵活性更高。作为最为强大的用户可编程操作系统之一,Linux 让 Aerotenna 团队得以按照自己的需要精确地定制系统。

Aerotenna 团队在商用现成的 DJI F550 机身上完成了首次飞行测试,并计划在更多机身上测试其基于 Zynq SoC 的飞行控制器。Aerotenna 团队准备以八角片上驾驶仪 (OcPoC) 平台构成部分的形式推出这款平台。

任重道远的征程

全新打造一套定制化飞行控制平台是一次任重道远的征程,这不仅需要理想的工程人员团队,还需要完成大量的学习,才能完成。从无到有,需要对该系统做出大量的决策。为了运行飞行控制程序,必须使用操作系统。实时操作系统 (RTOS) 即时处理进入的数据,造成的缓存延迟可忽略不计。因此,RTOS 非常适用于运行飞行控制等时间敏感型任务。其缺陷在于难以将这类系统与 ArduPilot 接口,因为部分数据处理任务需要在操作系统自身重新实现。

这就是 Aerotenna 团队转而选择 Linux 操作系统的原因。虽然 Linux 操作系统不是实时系统,但实现软硬件联合设计要容易得多,进而能将系统的多功能性最大化。赛灵思提供名为 PetaLinux 的强大嵌入式 Linux 操作系统,该系统可与 Zynq SoC 及其他赛灵思器件兼容的。

由于多轴飞行器天性不稳定,测量机身的惯性和高度是实现稳定的关键。

建造并运行这个系统的路线图看起来相当复杂,Aerotenna 团队必须克服重重严峻的挑战。这个过程的第一步是使用 FPGA 开发软件来开发系统设计,并为驱动器接口编写和创建全新的 IP。核心是位于硬件层且能以极快速度处理数据的嵌入式流程。随后,必须使用定制系统设计来部署 PetaLinux。最后,Aerotenna 团队编译并修改了 ArduPilot 系统,使之能够在 PetaLinux 和新平台上运行。

Aerotenna 团队分阶段解决这个问题,实现了概念验证。Aerotenna 团队的工作首先是接收和检测 RC 信号,然后为单个电机供电。在最后演示该概念设计后,Aerotenna 团队着手扩展 ArduPilot 赖以运行的 OcPoC 与传感器间的接口。全新编写自己的设备驱动程序是一个重大挑战。实现成功飞行最关键的传感器包括加速计、陀螺仪和气压计。由于多轴飞行器天性不稳定,
测量机身的惯性和高度对稳定性至关重要。所有这些都必须

通过使用正确的通信协议配置在 Aerotenna 团队的 FPGA 硬件设计中,并最终包含到其 PetaLinux 操作系统内。
ArduPilot 代码库包含超过 70 万行代码,因此一项重大任务就是让系统在全新的平台上运行。由于没有方便的界面以供调试惯性传感器、电动机和 RC 控制器(对其他平台一般在高质量的图形用户界面下完成),团队不得不细调数百个存储的参数值,手动调试整个系统。调试是必要的,因为每个硬件组件都有细微差别,这会导致产生的输出略有不同。因此,必须对每个组件产生的最大值和最小值进行定义。这个过程最终为 Aerotenna 团队带来顺畅可持续的飞行。

 

图 2 - OcPoC 系统将成为首款受 Zynq SoC 芯片支持的商用版飞行控制平台。

 

 

图 3 – OcPoC 被设计为一种即飞型匣子,与 IMU 传感器和 GPS 进行集成,在多功能 I/O 的作用下,用于同外部设备相连接。

OcPoC 介绍
OcPoC 项目(图 2)是 Aerotenna 的无人机飞行控制平台。借助该项目,Aerotenna 团队计划使用显著提高的处理能力、I/O 扩展,以及明显优于其他解决方案的编程灵活性来满足无人机社区的需求。虽然 Aerotenna 团队使用 Zynq SoC 支持其系统看似对运行当前的 ArduPilot 版本有误宰之嫌,但 Aerotenna 团队预计该行业将不断扩展,而且有望提供很快得到利用的潜能。

该架构为开发人员借助他们所需的全部处理能力进行创造和设计铺平了道路。采用这种新平台,Aerotenna 团队计划为兼容 OcPoC 的成像、地图和近距检测领域推出新的微波技术应用。同时,Aerotenna 团队的系统能够借助 Zynq SoC 芯片的处理功能,执行板载数据采集与分析。

Aerotenna 团队的平台将提供集成 IMU 数据获取功能,无需任何额外的传感器设置即可开发出即飞型“匣子”(图 3)。该团队将同时为所有类型的无线电导航控制提供集成导航界面。让 Aerotenna 团队的平台领先一步的地方在于,对任何外部传感器数据,都能直接通过 Zynq SoC 与 ArduPilot 程序同步开展高速数据处理。这对基于 MCU 的平台来说是不可能实现的。

Zynq SoC 的额外处理功能还能处理更复杂的飞行控制系统,以更加精细地调谐无人机的性能。这包括将 I/O 功能扩展到适应更加广泛的外部接口与传感器选项,例如实时视频流、微波近距传感器及蓝牙。

Aerotenna 团队希望,通过让自己的平台易于测试和开发新的构思,激励许多其他公司和个人为无人机行业贡献新颖的创意,不为现今可用硬件的处理局限性所阻碍。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分