教程文档

UAVCAN 2019 路线图

2019-11-15 08:24:01 dynamic 6

文章原文发表在的UAVCAN论坛上:https://forum.uavcan.org/t/uavcan-2019-roadmap/666,目前有个UAVCAN使用者的调研,请帮忙填写和反馈:https://forms.gle/1DaemGoUWK4qtHz29 (请翻墙填写这个Google Form, 为了统一数据)

以下为译文,笔者:Pavel Kirienko (UAVCAN作者/维护者)

对于UAVCAN项目而言,2019年是我们项目技术基础的快速增长采用和显着进步的一年。除了协议最早用于的各种形状和大小的无人飞机以外,它还被成功地部署在其他类型的机器人和车辆应用中,从电动赛车到人造卫星。我们很高兴看到我们的工作帮助团队管理高度复杂的分布式计算系统,确保这些系统的功能安全和稳定性。

UAVCAN名称代表“不复杂的应用程序级车辆通信和联网协议”。对我们为什么选择这个名称感兴趣的人可以参考我们7月发布的文章(和视频):UAVCAN - 用于实时系统车内联网的高度可靠的发布-订阅协议 (此视频在PX4优酷上)

现在介绍一下UAVCAN的开发历史:在2014年至2016年间,该协议经历了多次设计迭代,这些迭代均受到我们从现场部署中获得的经验反馈的指导。迭代之后是一段稳定的时期,在此期间,我们不仅可以从无人机领域而且从发现该协议有用的其他领域中收集足够的经验数据。到2018年,我们新获得的丰富实践经验,对车辆计算趋势的加深了解(有时我们使用“软件定义的车辆”一词)以及一些早期采用者慷慨提供的深厚专业知识,使我们能够塑造出最终产品– UAVCAN v1.0。对这些经验数据的分析和处理,最终让我们在2018年末斯德哥尔摩峰会做出了新的设计决策。基于峰会上的决议,我们立即开始着手研究新的v1.0的核心规范和核心组件。

v1的升级路径粘连到数据类型版本控制和数据类型标识符的删除,与旧版本协议(我们称为v0)没有向后兼容性。虽然这个改变可能会对现有的生态系统带来一些损害,但我们有信心它符合当前和未来用户的利益,因为它可以实现对协议设计的两次更新,这些更新对其长期成功至关重要。

数据类型版本控制可以更改已发布的数据类型,同时确保向后兼容性和/或定义良好的迁移路径。它使完整的系统能够逐步扩展其零件,并允许供应商进行创新而不会破坏与现有安装基础的兼容性。缺乏对数据类型演变的支持将使协议具有大规模部署的风险,并可能长期阻止其自身发展。

删除数据类型标识符可解决v0的体系结构缺陷,其中数据的语法和语义由同一参数描述。这种耦合是不好的,因为它无法完成通用的接口定义。通过用称为“端口ID”的高级语义标识符替换数据类型标识符来解决此问题,让我们的协议的通信模型类似于常规的发布-订阅框架。

UAVCAN v1.0在设计时考虑了扩展性和长期稳定性。我们在制定新的核心规范时也加入了其他可靠规定,我们希望避免将来出现像当前v0到v1迭代时产生的脱节。其实,从v0更新的困难也就说明了v1.0专门解决的问题。

我们从用户那里收到的有关升级的早期反馈表明,我们可能未充分告知他们有关对现有硬件和软件的必要更改范围的信息,因此让我们在要点中进行澄清:

  • 从v0迁移到v1不需要更改硬件。

  • 可以通过将v0库与其v1替代版本交换来实现软件更改,并对应用程序逻辑进行较小的更新以适应协议体系结构的更改:
    --用端口ID替换数据类型标识符。
    --切换到新的,更简单的即插即用节点ID分配协议。
    --更新一些高级标准数据类型。

  • 只要集成商/用户能够指定要使用的协议版本(例如,通过设置适当的配置参数),就可以在同一设备中同时支持v0和v1。我们建议使用v0的复杂系统(例如UAV自动驾驶仪)在v0旁边添加对v1的支持,并在过渡期间保持两者。

  • 我们很乐意为供应商提供最佳的迁移方法。欢迎通过论坛与我们联系。

我们正在制定一个全面的迁移指南,该指南将使我们现有的用户按照可靠的实用说明将其系统从v0迁移到v1。

UAVCAN项目的一个特点在致力于开发可用软件的同时还定义和维护独立规范 - UAVCAN标准。 我们认为我们提供的技术不仅是有用有形的产品,而且还是卓越的技术/行业标准。

新的软件套件的基石是Libuavcan – 基于C++ ,功能齐全的用于安全实时系统可验证的UAVCAN v1.0实现。这项工作由亚马逊的Scott Dixon领导和贡献。我们有望在2020年第一季度发布早期的产品级版本,以便及时集成到PX4 v1.11中。

尽管Libuavcan极为重要,但仅该产品不足以使该方案得到广泛采用。如果没有复杂的诊断和调试工具,就无法完成复杂的部署,而这些诊断和调试工具又要建立在具有丰富自省功能的灵活协议实现之上。为此,我们已经发布了PyUAVCAN v0.4 3-用Python构建的UAVCAN v1的全功能实现,用于在其之上构建诊断和调试工具。这是v1的第一个完成项目。

图形用户界面是完成UAVCAN v1.0发行版本的前提的第三个也是最后一个关键部分。鉴于UI/UX专家在我们的团队中代表性不足,因此v0配备的可用性和质量有问题的用户软件也就不足为奇了。现在的界面: (我们在招人为这个界面做升级/改善)



为此,我们无法取得太大进展。我们启动了Yukon(用于构建和调试v1网络的新用户应用程序),但是由于首席开发人员的离职,这项工作在初期就停滞了。

一个可靠的,以UAVCAN团队维护的开源工具减慢了生态的扩展速度。用户软件是项目的代表,其重要性不可高估。我们认为,有一个可用性强且可靠的工具是技术推广的主要驱动因素,尤其是在大型企业中。

还有另一种现状,下面这些是UAVCAN设备供应商自己构建的UAVCAN用户界面:
VESC工具
Octanis Electron-CAN
Hitec GUI
UAVCAN-Web
(该列表肯定不完整,但是应该可以代表性得说明以上观点)

常见的问题是,虽然有各种各样的零星工具可供选择,但是如果有可靠的开源解决方案可用,那么可以完成更多的工作。

我们已经为GUI的工作起草了一份全面的工作计划,但是,由于缺少人力资源,我们无法执行该计划。为了确保项目的成功并允许核心团队进一步扩展技术范围,我鼓励采用UAVCAN构建产品和服务的采用者以下列方式之一做出以下贡献:

1)帮助我们宣传UAVCAN。理想情况下,请允许我们将您的logo放在UAVCAN首页上, 也希望您把UAVCAN加在你的宣传资料上。
2)让您的工程师参与我们的交流。大约70%的交流是完全公开的,这些交流是在论坛上,GitHub 上以及在每周一次的dev-call上进行的。
3)赞助和支持独立开发者。生态里有很多优秀的专家可以为你解决部署上的实际问题。
4)帮助我们传播UAVCAN认识。

初步协调的最佳切入点是开发者通讯(每个星期三,世界标准时间18:00);如果时间不便,我们可以组织第二个新时间。

目前,我们在new.uavcan.org上维护着UAVCAN v1的专用主页。主页是有关该项目的最新资源和资料的集合。 v1正式发布后,“new” 前缀会被删除,我们预计将与2020年第一季度与PX4 v1.11同步发布。

展望v1.0以外的未来,我们看到该项目将发展的几个主要方向:

  • 支持除CAN之外的其他传输层。目前正在积极研究将UAVCAN与以太网以及其他可靠的高通量传输用于现代车辆系统。这包括异构(不相似)传输冗余,结合了有线和无线链路的优势,可实现超可靠的应用;在WAIC项目3中概述了相关的理论基础。

  • 提高质量标准。我们一直在努力提高开源软件的质量和可靠性,这为复杂的分布式车辆系统奠定了基础。

  • 标准化。一个重要的用户慷慨地提供了必要的资源,以使UAVCAN正式标准化。在我们至少从两个主要的现场部署中收集了足够的经验数据之前,这项工作处于搁置状态。