Connecting Artificial Brains to Robots in a Comprehensive Simulation Framework:The Neurorobotics Platform

郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布

FRONTIERS IN NEUROROBOTICS, (2017)

  神经科学、计算机科学和生物学领域的联合努力允许设计基于脉冲神经网络的大脑生物现实模型。为了正确验证这些模型,需要在动态和丰富的感官环境中的一个实现样例,其中模型暴露于现实的感觉运动任务。由于这些大脑模型的复杂性,在现阶段无法处理实时约束,因此不可能将它们嵌入到现实世界的任务中。相反,该实现样例也必须被模拟。虽然有足够的工具来模拟复杂的神经网络或机器人及其环境,但到目前为止还没有工具可以轻松地在大脑和身体模型之间建立通信。神经机器人平台是一个新的基于网络的环境,旨在通过为科学家和技术开发人员提供软件基础设施来填补这一空白,使他们能够将大脑模型连接到机器人身体和环境的详细模拟,并使用由此产生的神经机器人系统进行计算机实验。为了简化工作流程并降低所需的编程技能水平,该平台为实验序列和条件、环境、机器人和脑-体连接器的规范提供了编辑器。除此之外,还提供了各种现有的机器人和环境。这项工作展示了在人脑项目(HBP)的子项目10"神经机器人"1中开发的神经机器人平台的第一个版本的架构。在当前状态下,神经机器人平台允许研究人员使用模拟设计和运行神经机器人的基本实验。机器人和模拟环境与大脑模型的简化版本相关联。我们通过三个示例实验来说明该平台的功能:在移动机器人上实现的Braitenberg任务、基于机器人控制器的感觉运动学习任务以及在iCub人形机器人上嵌入视网膜模型的视觉跟踪。这些用例允许评估神经机器人平台在机器人任务和神经科学实验中的适用性。

1 https://www.humanbrainproject.eu.

Keywords: neurorobotics, robot simulation, brain simulation, software architectures, robot programming, web technologies

1. INTRODUCTION

  开发模仿神经系统功能的神经启发计算范式是一个成熟的研究领域,有助于我们理解人脑。大脑是一个复杂的结构,设计能够模仿这种结构的模型尤其困难。大脑功能建模需要了解每个子系统(感觉、运动、情绪等)如何工作,这些子系统如何相互作用,以及作为一个整体,它们如何在与环境的相互作用中产生复杂的行为。此外,众所周知,在发育过程中,大脑是由经验和环境塑造的(Benefiel and Greenough, 1998; Briones et al., 2004)。因此,研究机器人的感觉和运动模型时,需要将机器人的感觉和运动模型嵌入到一个真实的大脑环境中。由于先进的大脑模型过于复杂,无法实时模拟,研究人员面临着两难境地。要么简化大脑模型,直到可以实时模拟。在这种情况下,大脑模型可以嵌入在现实世界中运行的物理机器人中,但可以研究的大脑模型的复杂性非常有限。或者保持大脑模型的复杂性。在这种情况下,大脑模型没有限制;然而,现在已经不可能将大脑嵌入到现实世界的任务中。相反,也必须模拟实现样例。

  虽然存在足够的工具来模拟复杂的神经网络模型(Gewaltig and Diesmann, 2007)或机器人及其环境(Koenig and Howard, 2004),但迄今为止还没有工具允许研究人员轻松地将真实的大脑模型连接到机器人,并将其嵌入丰富的感官环境模型中。

  这种工具需要能够协调和同步两个仿真,以及管理它们之间的数据交换。这种模拟的目的是研究和量化大脑模型的行为。因此,我们不仅需要一个复杂且现实的实验环境,而且还需要一个可控且可测量的装置,在那里可以产生刺激,可以测量反应。事实上,真实环境的复杂性和参数本质上很难控制,甚至不可能控制。此外,由于复杂的神经元动力学和网络规模,设计用于在不同水平上正确再现大脑活动的大脑功能模型无法实时执行(Kunkel et al., 2014)。这就是我们提出使用数字模拟器实现现实场景的原因。我们提出的主要限制是有一个模拟器,可以运行在一个"较慢"的时间(由大脑模拟所需的计算时间限制),而且时间可以在不影响模拟质量的离散间隔采样。

  这种方法背后的想法是提供一个工具链,使研究人员能够使用模拟控制以及最先进的工具,如机器人和大脑模型以及以适当方式连接它们的方法(即,将脉冲神经网络连接到机器人传感器和执行器)。Gamez et al. (2012)提出了第一种用于连接脉冲神经网络和机器人的方法。iSpike是一个C++语言库,它提供了脉冲神经网络模拟器和ICUB类人机器人之间的接口。它采用了一种受生物启发的方法,将机器人的感官信息转换为脉冲信号,然后传递给神经网络模拟器,并将网络输出的脉冲信号解码为电机信号,然后发送给机器人进行控制。神经模拟器[BRIAN (Goodman and Brette, 2008)]和用于生物医学应用的物理引擎SOFA (Allard et al., 2007)之间的另一个通信接口克隆(Voegtlin, 2011)已使用共享内存和信号量开发。与iSpike和Clone最相似的系统是为CRONOS和SIMNOS机器人创建的界面(Gamez et al., 2006),该界面将来自机器人的视觉和本体感受数据编码为脉冲,然后传递给在SpikeStream中模拟的脉冲神经网络。来自网络的脉冲电机输出被转换回用于控制机器人的实际值。该系统被用于开发一个脉冲神经网络,控制SIMNOS的眼球运动,学习运动输出和视觉输入之间的关联,并使用想象和情感模型来避免负面刺激。所有这些系统都为特定的机器人平台提供了一个接口,能够处理脉冲/数字输入并适当地转换它们。加上机器人平台的限制,它们不提供转换框架,允许用户编写自己的传递函数。允许处理模拟机器人平台的更通用系统是AnimatLab (Cofer et al., 2010b)。AnimatLab目前有两种不同的神经模型可供使用。一个是一个抽象的发放率神经元模型,另一个是一个更现实的基于电导的IF脉冲神经模型。还可以添加新的神经和生物力学模型作为插件模块。有几种不同的关节类型和不同的身体类型,可以使用主机。尽管AnimatLab没有提供一套全面的神经元和学习模型,但基于该工具的一些行为实现是可用的,例如蝗虫跳跃(Cofer et al., 2010a)或优势和从属小龙虾(Issa et al., 2012)。尽管上述一些工具代表了将人工大脑与机器人连接起来的良好尝试,但由于我们强调的局限性(机器人平台限制,缺乏转换框架),这些工具在机器人和神经科学界并不常见。对于我们的框架,我们决定使用广泛使用的大脑模型模拟器以及机器人和环境模拟器。这一战略选择应该能够轻松吸引这些平台的用户。我们将这些模拟器嵌入到一个综合框架中,允许用户设计和运行神经机器人实验。根据我们的方法,Weidel et al. (2015, 2016)提出使用MUSIC中间件(Djurfeldt et al., 2010)将广泛使用的神经模拟工具NEST (Gewaltig and Diesmann, 2007)与机器人模拟器Gazebo (Koenig and Howard, 2004)相结合。

  在此,我们描述了HBP神经机器人平台的首次发布,该平台为科学家和技术开发人员提供了一套工具,使他们能够将大脑模型与机器人身体和环境的详细模拟相连接,并将由此产生的神经机器人系统用于电子实验和技术开发。神经机器人平台(NRP)还提供了一个全面的开发框架,包括用于创建实验、环境以及大脑和机器人模型的编辑器。这些工具可以通过Web访问,从而允许他们使用平台,而无需繁琐地安装软件包。此外,通过网络,研究人员可以与同事或科学界合作并分享他们的模型和实验。

  尽管如上述工作所证实的,虚拟机器人和环境的建模能力已经存在,尽管各种实验室已经用简单的大脑模型建立了闭环装置(Ros et al., 2006; Denoyelle et al., 2014),该平台是第一个允许机器人和大脑详细模型耦合的平台。这使得我们有可能进行实验,探索低水平大脑回路和高水平功能之间的联系。

  该平台的目的有两个:一方面,该平台可用于测试大脑区域的神经科学模型,甚至基于神经生理学数据重建这些区域;另一方面,机器人专家可以利用这样一个平台来开发更多受生物启发的控制架构。物理模拟和神经模拟正确同步,它们通过传递函数交换数据,传递函数将来自机器人的感官信息(摄像机图像、编码器等)从一侧转化为大脑输入(电流和脉冲),并将网络输出从另一侧转化为运动指令。此外,该平台还提供了一个Web界面,因此可以从更广泛的用户群轻松访问和使用。通过该web界面,用户还可以访问用于从头开始构建实验的编辑器,并在不安装任何软件的情况下运行实验,从而受益于支持NRP的可用计算和存储平台。因此,NRP为神经机器人的实验设计和仿真提供了一个完整的框架。NRP开发的支柱之一是现有软件的重用和扩展,因此许多组件是使用适当选择的现有软件实现的。

2. PLATFORM REQUIREMENTS

2.1. Functional Requirements

  为了获得NRP的功能要求,我们首先确定了创建神经机器人实验所需的功能。在这方面,我们遵循软件工程概念和术语将平台功能逐项作为需求(IEEE, 1998)。这些特性可以分为两类:设计特性和仿真特性,每类都有自己的功能需求。

  在神经机器人实验的设计过程中,用户应该能够定义它的所有属性,这包括:

  • 通过从头开始或从预先存在的模型定义运动学和动态属性以及外观来设计合适的机器人模型;
  • 通过使用对象库,可以创建机器人可以在其中运行的丰富环境模型;
  • 大脑模型的设计,无论是从头开始还是通过选择一个现有模型,将耦合到机器人;
  • 脑-体整合,以指定大脑模型和机器人应如何在感觉和运动数据交换方面耦合以创建神经机器人;
  • 能够改变实验本身的动态属性,例如定义在模拟过程中可以触发的事件和适当的响应行为。

  定义完所有属性后,即可开始模拟。在执行过程中,NRP应提供:

  • 世界维护和同步机制,以便不仅模拟物理模型和神经模型,而且同步两个模拟并在它们之间交换数据,提供设计阶段定义的闭环控制机制。必须可以启动、暂停、停止和重置模拟。模拟应该对先前定义的触发事件做出反应;
  • 运行模拟的适当交互式可视化,包括一个GUI和实用程序,用于查看模拟的详细信息,如大脑活动或机器人参数。此外,用户应该能够使用上述相同的设计功能,在模拟启动后进行实时编辑并与之交互。

  可以在附录A中找到完整的功能要求列表,而平台功能的概述如图1所示。

2.2. Non-functional Requirements

  还定义了几个非功能性需求:

  • 可用性和用户体验——该平台应该易于广泛的用户访问,这些用户可能没有神经科学或机器人领域的经验。这应该通过以用户为中心的设计、直观的工具和一致的用户体验来实现。此外,平台还应提供额外的用户级别,以便专家用户具有更详细的设计能力。
  • 开源——NRP应该依赖现有的构建块,尤其是开源的构建块,因为该平台必须向广泛的受众发布。
  • 互操作性——每个允许保存或加载数据的软件组件都应尽可能使用众所周知的数据格式。
  • 软件质量——为了确保软件质量,平台的开发应遵循软件工程实践,例如保持任务跟踪系统、使用带有代码审查和持续构建的版本控制以及采用标准软件开发方法。

2.3. Integration with Other HBP Platforms

  NRP是人类大脑计划中开发的六个平台之一。除了神经机器人平台,HBP还开发了神经信息学平台、大脑模拟平台、高性能和数据分析平台、神经形态计算平台和医学信息学平台。其中大多数通过Web提供服务,并建立在一组通用的API和服务之上,称为HBP协作门户。它提供以下服务:

  • 身份验证、访问权限和用户配置文件。为用户提供了单点登录机制,因此他们可以使用相同的凭据访问每个HBP平台。
  • 文档库。用户可以访问文档存储库,他们可以在其中存储和管理他们的项目。它支持NRP的一项要求,即用户与团队成员共享他们的模型(大脑、连接、环境、机器人或实验)的可能性。
  • 协作API。具有相关库的基于Web的应用程序,允许每个平台的Web界面具有相同的外观和感觉,并作为协作门户中的插件实现。

  所有HBP平台之间都应该提供某种程度的集成。为此,未来短期的发展计划包括将神经机器人平台与大脑模拟平台、神经形态计算平台的整合,而在长期的整合中,还将提供与高性能计算和分析平台的整合。
  大脑模拟平台旨在为科学家提供工具,以使用来自HBP内部和外部的数据重建和模拟大脑和脑组织的支架模型。大脑模拟平台将与NRP集成,以模拟各种细节级别的大脑模型。此外,除了大脑模拟平台,还将收集脚手架大脑模型,并将它们用于平台中。
  神经形态计算平台提供对内置于定制硬件中的大规模神经形态计算系统的远程访问。与传统的HPC资源相比,神经形态系统提供更高的速度(实时或加速模拟时间)和更低的能耗。因此,平台的集成将提供一个替代的神经模拟后端,更适合需要高计算负担的模拟,例如涉及可塑性和学习的实验。

3. SOFTWARE ARCHITECTURE

  Neurorobotics平台基于三层架构,如图2所示。

  从离用户最远的一层开始,这些层如下:

  1. 模拟神经机器人实验的软件组件;
  2. REST服务器或后端;
  3. 实验模拟查看器(ESV),一个图形用户界面,以及Robot Designer(一个用于设计物理模型的独立应用程序)。

  第一层包括模拟神经机器人实验所需的所有软件组件。世界模拟引擎(WSE)负责模拟机器人及其环境。大脑模拟器负责模拟控制机器人的神经网络。闭环引擎(CLE)实现了每个实验的独特逻辑,并协调了两个模拟器和ESV之间的交互。
  第二层包含REST服务器,也称为后端,它接收来自ESV的请求并将它们转发给相应的组件,后者主要通过ROS实现所请求的服务。因此,REST服务器充当图形用户界面(前端)和神经机器人实验所需的各种模拟引擎之间的中继。出于实际原因,REST服务器提供的服务与ESV GUI中显示的高级功能紧密耦合。因此,任何与REST服务器交互的图形控件都有相应的服务。更改模拟状态的操作(例如启动、停止或暂停模拟)作为单个参数服务实现。
  ESV是所有神经机器人实验的基于网络的图形用户界面。使用ESV,用户可以控制和可视化神经机器人实验。ESV还提供了多个编辑器来配置实验协议以及实验的环境、大脑模型、大脑与机器人的连接(Brain Interface and Body Integrator)等部分。Robot Designer是一种工具,旨在允许设计机器人模型的过程,这些模型可以包含在NRP上可执行的仿真设置中。该工具是作为3D建模工具Blender 3D2的插件开发的。

2 https://www.blender.org/.

 

3.1. Brain Simulator

  大脑模拟器的目标是模拟大脑回路,该回路由脉冲神经网络(SNN)实现。

  存在多种SNN模拟器,具有不同的详细程度,从更抽象的点神经元模拟(将神经网络视为有向图)到形态准确的模拟(将轴突和树突的特性考虑在内)。
  在NRP内部,目前支持的模拟器是NEST (Gewaltig and Diesmann, 2007),一种具有在高性能计算平台上运行能力的点神经元模拟器,它也是大脑模拟平台的模拟后端之一。NEST通过使用PyNN抽象层(Davison et al., 2008)得到支持,该抽象层为不同的模拟器和神经形态处理单元提供相同的接口,即用于模拟SNN的专用硬件,如SpiNNaker (Khan et al., 2008),由神经形态计算平台提供。NEST和PyNN都提供了方便的机制来设计神经网络。此外,它们是神经科学界最常用的工具之一。另一方面,它们提供的唯一API是用Python编写的,这在很大程度上限制了用于与它们交互的语言的选择。

3.2. World Simulator

  为了进行真实的实验,精确的大脑模拟必须与详细的物理模拟相结合。世界模拟器组件旨在为机器人和机器人交互的环境提供逼真的模拟。
  Gazebo被选为物理模拟器。它提供了一个多机器人环境,可以精确模拟动力学,特别是重力、接触力和摩擦力。这种动态模拟可以使用不同的支持软件库进行计算,如ODE (Drumwright, 2010)和Bullet (Coumans et al., 2013)。
  与模拟机器人的任何通信和模拟本身的控制都是通过机器人操作系统(ROS)(Quigley et al., 2009)完成的,该系统与Gazebo本地集成。

  ROS是机器人社区中广泛使用的中间件,并为用户提供C++和Python API。

 

3.3. Brain Interface and Body Integrator

  大脑接口和身体整合器(BIBI)在NRP中起着至关重要的作用,因为它是实现机器人和大脑模拟之间连接的组件。BIBI的主要特征是传递函数框架。传递函数(TF)是一种将一个模拟的输出转换为另一个模拟的合适输入的函数。因此,我们可以识别两种主要类型的传递函数:机器人到神经元的TF将来自机器人部件的信号(例如传感器读数和相机图像)转换为神经元信号,例如脉冲、发放率或电流;神经元到机器人的TF将来自单个神经元或神经元组的神经信号转换为机器人电机的控制信号。因此,这两种传递函数通过填补神经控制器和机器人之间的空白来关闭动作-感知回路。

  TF也超出了前面描述的两种类型。例如,可以将机器人-大脑-机器人回路短路,以绕过大脑模拟并仅使用经典的机器人控制器,从而产生机器人到机器人的TF。这允许通过简单地从传递函数切换到另一个,在具有相同设置的机器人控制器的经典和神经实现之间进行比较。此外,来自两个模拟的数据可以发送到循环外(到监控模块),在那里可以实时绘制、详细说明、存储或导出以使用外部工具(机器人到监控器和神经元到监控器的TF)进行数据分析。

  为了向模拟器提供适当的抽象层,提供了通用接口,然后由特定适配器实现。从机器人模拟器方面,界面按照发布-订阅设计模式(Gamma et al., 1995)建模,其中,从一方面,感觉信息预计由机器人模拟器发布,而机器人到神经元的TF订阅到主体,接收数据,而在另一侧,神经元到机器人的TF发布运动命令,模拟器预计会订阅并执行它们。这种模式被许多机器人中间件使用,例如ROS和YARP (Metta et al., 2006),因此在这种情况下实现适配器所需的工作最少。在NRP的当前实现中,已经实现了ROS主题适配器。在大脑模拟方面,TF使用设备提供刺激和测量。设备是抽象实体,必须连接到神经网络,连接到单个神经元或神经元群。在这些实体中,有脉冲发生器和电流发生器(用于输入侧),以及脉冲记录器、群体率记录器和泄漏积分器(用于输出侧)。在当前的实现中,设备被实现为PyNN对象实例的包装器,为不同的神经模拟器提供通用接口。

  TF框架使用Python编程语言实现,其中每个TF的业务逻辑驻留在函数定义中。与框架一起提供了一个常用的传递函数库,包括常见的图像处理原语和用于运动命令生成的简单转换模型。有关TF连接的信息是通过使用Python装饰器实现的自定义域特定语言(DSL)指定的,该装饰器指定传递函数的类型、设备类型和它们连接的神经元,以及TF应订阅的主题 ,或者TF应该发布哪个主题(Hinkel et al., 2015, 2017)。列表1中显示了一个传递函数实现的示例。

  在这个例子中,可以看到通过使用装饰器DSL指定了几个属性,例如TF的类型(机器人到神经元)、用于大脑模拟的设备(脉冲发生器以附加到神经元群体的泊松统计量发放)和来自机器人模拟的输入(通过ROS主题发布的相机图像)。还可以注意到,实际的业务逻辑是在函数内部实现的,特别是,图像是使用颜色检测过滤器处理的,该过滤器作为平台旁边提供的TF库的一部分实现。

  考虑到所选的物理和神经模拟器都提供Python API,因此为TF框架选择Python是最自然的选择。因此,其余的服务器端NRP组件都是用Python编写的。原则上,与C++等语言相比,这可能会引发性能问题。我们选择避免​​对开发组件的性能进行微调,因为目前模拟的瓶颈在于物理和神经模拟器。这种选择还具有显著简化开发过程的优点。

  在内部,完整的BIBI配置(包括传递函数、机器人模型和大脑模型)存储为XML文件。每个传递函数都可以保存为XML标记中的Python代码,也可以从自定义XML元素构建,稍后解析这些元素以生成等效的Python代码。描述这些函数的第二种方式更适合通过图形编辑器自动生成此类XML文件,没有Python经验的科学家也可以使用这些编辑器。

3.4. Closed Loop Engine

  闭环引擎(CLE)负责同步控制以及模拟和TF之间的数据交换。CLE的目的是保证两个模拟在同一时间步骤开始和运行,并且运行将使用在模拟步结束时收集的数据的TF。图3显示了一个时间步骤的典型执行序列图:在物理和神经模拟并行完成后,TF接收并处理来自模拟的数据,并产生一个输出,该输出是下一个执行的输入步骤。所提出的同步机制背后的想法是让两个模拟都运行一个固定的时间步骤,接收和处理先前步骤的输出,并产生将在未来步骤中由并发模拟处理的数据。换句话说,在当前时间步骤中由一个模拟生成的数据在下一个模拟之前无法由另一个模拟处理。这可以理解为TF引入了比模拟时间步骤更大的感官知觉和运动驱动的延迟。

  我们决定在第一个版本中不使用MUSIC进行同步,即使Weidel et al. (2015, 2016)证明它可以工作,为了在不引入任何中间层的情况下简化大脑和世界模拟之间的通信。此外,依靠已有的Python API与两个模拟器进行通信具有简化开发过程的效果。

  除了编排正在运行的模拟之外,CLE还负责通过创建世界模拟器和大脑模拟器的新专用实例以及两者之间的编排器的新实例来产生新的模拟。

3.4.1. Simulation Control

3.4.2. State Machines for Simulation Control

3.5. Backend

  后端是将用户界面连接到平台核心组件的组件,在用户界面端点上暴露一个实现RESTful API的Web服务器,并在另一个端点上通过ROS转发已处理的用户请求。该组件是用户请求的第一个处理程序。如果无法在后端完全管理它们,它们将被转发到CLE或状态机管理器,最终完成请求处理,并在必要时与模拟器进行交互。图6描述了后端架构和与其他组件交互的概览。

  后端向用户界面(ESV)提供的操作包括实验列表和操作、模拟列表、处理和创建以及后端诊断和信息的收集。

  平台上的每个可用实验都由一个名称和一组配置文件标识,包括要在ESV上显示的预览图像和代表环境、大脑、状态机和BIBI的文件,其中存储了神经种群和传递函数。实验列表和操作API允许用户列出服务器上所有可用的实验,以及单独检索和自定义实验的配置文件。

  在NRP设置中,模拟被视为可用实验之一的实例。为了创建新的模拟,用户必须以不同的方式进行,这取决于NRP是在协作门户内部还是外部访问。如果用户从协作门户访问,他们能够克隆与他们正在使用的协作存储上的可用实验之一相关的配置文件,并实例化该实验的本地副本。后端允许用户覆盖所述配置文件以及将仿真数据的CSV记录直接保存在存储上。如果用户不在协作门户中工作,他们可以直接从实验列表中选择一个实验来实例化,并且他们可以编辑它而无需实例化本地副本。

  创建模拟后,后端允许用户通过与CLE交互,根据图4中描述的模拟生命周期检索和更改其当前状态。其他API提供在运行时检索和编辑大脑配置、状态机和传递函数的功能,将任务再次委托给CLE。此外,有关模拟元数据、大脑群体和环境配置的信息可通过专用API获得。

  出于诊断目的,后端提供了一些API来检索服务器上发生的错误以及后端本身和CLE的版本。

3.6. Experiment Simulation Viewer

  实验模拟查看器是NRP的用户界面。它是作为基于Web的应用程序实现的,使用现代Web软件堆栈开发,并利用已建立的开源软件。ESV目前使用Collaboratory API集成到Collaboratory Portal (参见图7A)中。通过使用标准Web技术构建它,可以实现跨平台支持,也适用于移动设备。这种选择的缺点是使用翻译层(尽管是轻量级的)与服务器端组件交互增加了复杂性。

  ESV模拟界面嵌入了一个3D视图,允许用户查看和浏览虚拟环境,以及一个用于模拟控制的用户栏(例如,用于播放、暂停、重置或停止正在进行的模拟)。它还提供了通过在运行的模拟中改变对象的属性和监视大脑活动和实施例的状态来编辑对象的方法。此外,模拟界面包含允许用户设计和编辑实验的工具,在第3.6.3节中进行了深入解释。对运行模拟的任何修改都可以导出到用户计算机上或保存在协作存储中。

  在接下来的部分中,我们开始介绍ESV用户界面及其架构,然后我们继续描述设计工具。

3.6.1. User Interface

3.6.2. Architecture

3.6.3. Editors

3.6.3.1. Environment Editor

3.6.3.2. Brain Editor

3.6.3.3. Transfer Functions Editor

3.6.3.4. Experiment Workflow Editor

3.7. Robot Designer

  为了建立神经机器人实验,NRP不仅必须为科学家提供丰富的机器人变体可供选择,而且还让他们有机会将现有机器人的虚拟对应物或具有所需形态的机器人(可用于特定的任务)集成到他们的实验室中。因此,Robot Designer (RD)旨在成为一种建模工具,用于生成可在仿真环境中使用的几何、运动学和动态模型。

  从头开始开发用于建模和设计机器人的自定义软件(Web或桌面)是一项艰巨的任务,因此我们决定采用现有解决方案。特别是,没有找到合理的Web解决方案,并且为Web调整现有的解决方案将需要相当大的努力,这不会被可能的好处所抵消。我们选择在现有建模软件中使用Blender (一种功能强大且可扩展的开源软件),因为它适用于各种平台,安装过程简单。

  在开发机器人设计器时,考虑到了具有类似目标的Blender的现有扩展。最值得注意的是Phobos项目5和OpenGrasp模拟套件的RobotEditor (León et al., 2010; Terlemez et al., 2014)。在对竞争项目进行评估后,RobotEditor项目最终被选为Robot Designer的基础。之后,它经历了一次重大的重构,并通过NRP所需的组件进行了扩展。其中包括支持Gazebo模拟器的导入和导出文件、附加建模功能、改进的用户界面以及与协作存储的数据交换等方面。

  RD为用户提供易于使用的用户界面,允许构建机器人模型并定义运动学、动力学和几何属性。RobotEditor以机器人为中心的用户界面已经过重新设计,允许用户通过使用欧拉角或遵循Denavit-Hartenberg约定(Denavit, 1955)指定段和关节来定义机器人的运动学模型。机器人动力学模型可以通过具有惯性张量的质量实体和具有关节参数的控制器类型来创建。对于几何建模,RD可以依赖Blender提供的大量3D建模功能,尽管为机器人相关任务的自动化做了一些添加。图11A的左侧显示了Blender中的Robot Designer面板,同时编辑了一个六足机器人平台Lauron V (Roennau et al., 2014)的一部分的属性。该插件为3D视图提供叠加层,显示每个机器人关节的参考框架和名称,从而便于编辑。

  RobotEditor的原始代码进行了大量重构,并大大扩展了机器人设计器和核心框架的用户和开发人员的文档。核心框架提供了许多附加功能,例如资源处理、记录到外部文件、带有调用堆栈的调试消息以及检查功能验证的前置和后置条件的概念。

  与NRP和ROS的数据交换一直是Robot Designer开发的一个主要方面。出于这个原因,在开发过程中添加并改进了对广泛使用的统一机器人描述格式(URDF)6文件格式的支持。已经为这种文件格式生成了一个XML模式定义文件,然后它可以更容易地生成特定于语言的绑定7,只需要内部数据类型和XML文档中的表示之间的一个小接口(参见第3.3节)。

  除了导出原始URDF文件外,Robot Designer还支持NRP机器人模拟独有的新颖功能。最重要的是,这包括为CLE加载的Gazebo插件生成输入。它自动生成软件,实现位置和/或速度控制所需的关节控制器。此附加信息未包含在URDF标准中,而是与模型一起存储在同一文件中。对于NRP的用户来说,这意味着可以方便地直接在设计器中指定每个关节的不同控制器类型和参数,并在仿真中可用,而无需编写额外的关节控制器软件并在平台服务器上进行部署。Robot Designer的持久存储和数据交换机制为用户提供了将模型封装到可安装和压缩的ROS包中的选项。

  一些建模和自动化功能也被添加到功能丰富的建模软件中。通过计算机器人的完整凸包或具有固定多边形数量和与原始网格的额外安全距离的近似凸包,可以从机器人的几何模型自动创建碰撞模型(参见图11)。

  在为可变形几何体生成碰撞模型时,底层网格(每个顶点具有多个关节的线性影响)必须转换为几个不相交的刚体。RD可以根据几个规则(参见图11C-E)执行此转换,如使用MakeHuman8项目创建的网格展示所示。

  最后,添加了从数学运动学模型自动生成机器人作为实验功能。

  Robot Designer提供了一个简单的安装过程。要下载和激活软件,用户必须执行在Blender中运行的安装脚本。此脚本、机器人设计器本身及其文档托管在公开可用的存储库中。9

5 https://github.com/rock-simulation/phobos.

6 http://wiki.ros.org/urdf/XML.

7 https://pypi.python.org/pypi/PyXB.

8 http://www.makehuman.org/.

9 https://github.com/HBPNeurorobotics/BlenderRobotDesigner.

4. SOFTWARE DEVELOPMENT METHODOLOGY

  NRP是在Scrum agile软件开发框架内开发的(Schwaber and Beedle, 2002)。用Scrum的话说,开发的基本单位称为Sprint。这是一个有时间限制的工作,仅限于2或3周的特定持续时间。这种方法提供了一个反应式环境,能够处理不断变化的需求和架构规范。

  Scrum流程包括每日站立会议,每个开发团队讨论他们如何努力实现冲刺目标。在冲刺结束时,召开审查会议;整个NRP团队都在场,成员们对处于稳定开发状态的软件进行了演示。每个完成的任务都为用户提供了一个新功能,而不会破坏与当前代码库的兼容性。因此,在每个冲刺结束时,都会有一个新的可交付平台提供新功能。

  NRP软件过程使用行业标准进行质量控制。版本控制系统的验收标准包括至少由第二个程序员进行代码审查的必要性,而持续集成系统通过执行一组单元测试来确保新代码不会引入回归。此外,代码覆盖标准确保在测试期间至少覆盖80%的代码,并且编码标准由自动静态代码分析工具(PEP8和Pylint)强制执行。持续集成系统中的每个构建还生成记录API并包含软件使用示例的软件文档。表1显示了有关主要NRP存储库的质量控制统计摘要。没有存储库存在PEP8或Pylint错误。

5. USE CASES FOR THE NEUROROBOTICS PLATFORM

  为了评估NRP的功能,设计了几个实验。这些实验虽然本质上很简单,但旨在展示平台的各种功能。第一个用例只是一个概念证明:一个非常简单的大脑模型通过TF连接到机器人,以便有一个完整的动作-感知循环执行Braitenberg车辆实验(Braitenberg, 1986)。结果表明,两个模拟正确同步并且实验正确执行。

  然后,设计并实现了一个利用TF框架能力实现经典机器人控制器的实验。在这种情况下,机器人-大脑回路短路,在TF内部实现的控制器用于通过机械臂执行感觉运动学习。

  最后,为了证明框架的可扩展性,将现有的视网膜计算模型集成到平台内,用于执行仿生图像处理。

5.1. Basic Proof of Concept: Braitenberg Vehicle

  该实验旨在验证NRP框架的整体功能。通过从Braitenberg车辆中汲取灵感,我们创建了一个实验,将配备摄像头的四轮机器人(来自Clearpath Robotics的Husky机器人)放置在具有两个虚拟屏幕的环境中。屏幕可以显示红色或蓝色图像,用户可以通过使用ESV更改其显示图像与它们进行交互。机器人的行为是逆时针转动,直到它识别出红色,然后向显示红色图像的屏幕移动。

  总体控制架构可以在图12A中观察到。红色的识别是在机器人到神经元的传递函数中完成的,其中来自机器人相机的图像通过标准图像处理库OpenCV进行处理,以便找到图像的左右半部红色像素的百分比。然后将此类信息转换为发放率并作为输入发送到泊松脉冲发生器设备。这些设备为包含8个神经元的简单大脑模型提供输入。其中,三个是传感器神经元,接收来自脉冲发生器设备的输入,两个是actor神经元,编码生成的运动命令。神经网络的行为如下:如果不存在编码红色像素的输入,则两个actor神经元中的一个具有比另一个更高的发放率;同时两半图像中出现的红色越多,两个神经元以更相似的发放率发放。两个泄漏积分器设备接收来自actor神经元的输入,并用于神经元到机器人的传递函数,负责生成运动命令。特别是,这些设备的膜电位用于为左右轮生成运动命令,这样当两个actor神经元的发放率不同时,轮子朝相反的方向转动,有效地转动机器人,并且当发放率匹配时,轮子向同一方向移动,使机器人向前移动。

  实验的行为如图12B, C所示,其中可以观察到,每次图像上的红色百分比上升时,神经元7的发放率都会增加,因此它与神经元8的发放率相匹配。然后,产生的电机指令随之变化,轮子同向运动,有效地推动机器人向前运动。

5.2. Classic Robot Controller: Sensorimotor Learning

  该实验的目标是学习感觉运动协调,以便在未来的操作实验中使用目标到达任务。特别是,该实验旨在通过从当前关节配置估计工具中心点(TCP)位置来预测拟人手臂的前向模型。在目前的形式中,该实验由两个阶段组成,每次迭代都重复:在第一阶段,如图13B所示,机器人探索工作空间并通过执行随机运动(即电机咝咝声)、观察它的TCP位置和相应的关节配置;在第二阶段,通过在随机位置移动手臂并将学习的运动学模型预测的TCP与真实模型进行比较来评估模型。这个实验没有使用任何大脑模型,因此它表明NRP也提供了一个实现经典机器人控制器的框架。

  实验的控制方案如图13A所示。用于实验控制的状态机在不同阶段之间切换,并将当前阶段传达给机器人控制器。机器人控制器实现了一种监督学习方法,即运动学贝塞尔映射(KBM)(Ulbrich et al., 2012),并在机器人到机器人的传递函数中直接与模拟机器人通信。在每次迭代的学习阶段,机器人控制器以随机关节配置移动手臂,并将此信息连同附加末端执行器的真实TCP一起提供给KBM模型。在评估阶段,将手臂移动到另一个随机关节配置中,并使用KBM模型来预测新TCP的位置。该信息被发送到监控模块。监控模块还从模拟中收集信息,例如真实的TCP和关节值。该信息可以被存储、显示或进一步处理。特别是,此信息用于计算KBM预测的准确性。图13C显示了运动学模型训练的学习曲线,其中误差计算为预测TCP与真实TCP之间的空间距离。可以注意到,在训练迭代期间误差减小,达到1 cm的精度。

5.3. Integration of Bioinspired Models: Retinal Vision

  为了拥有完全受生物学启发的闭环控制器,传递函数还应从一侧利用传感器信息处理的神经科学模型,另一方面利用运动生成。作为朝着这个方向迈出的第一步,NRP中包含了一个视网膜模型,作为机器人到神经元传递函数(Ambrosano et al., 2016)。

  为集成选择的模型是COREM,这是一种用于真实视网膜建模的计算框架(Martínez-Cañada et al., 2015, 2016),它提供了一个能够模拟可定制视网膜模型的通用框架。特别是,模拟器提供了一组计算视网膜微电路,可用作不同视网膜功能建模的基本构建块:一个空间处理模块(空间变体高斯滤波器),两个时间模块(低通时序过滤器和单室模型)、可配置的时间无关非线性和短期可塑性(STP)函数。

  集成工作通过为C++ COREM实现创建Python绑定并添加适当的函数来进行,这些函数可以在模型中提供相机图像并在不更改核心实现的情况下提取视网膜输出。这种实现提供了作为输出的模拟值,代表神经节细胞的突触前电流强度(Martínez-Cañada et al., 2016)。因此,视网膜模拟器现在提供了一个可由传递函数框架调用的接口。此外,视网膜模型是通过Python脚本定义的,用户可以上传该脚本。

  为了测试视网膜模拟器的正确集成,设计了第一个实验,该实验涉及通过视网膜运动识别对移动目标进行视觉跟踪。环境设置包括将模拟机器人(iCub人形机器人)放置在虚拟屏幕前。屏幕显示红色背景,绿色圆圈可控制(目标)。总体控制方案可以在图14A中观察到。该模型改进了先前设计的视觉跟踪控制器,该控制器使用第5.1节(Vannucci et al., 2015)中描述的实验的相同大脑模型实现。视网膜红绿对抗模型被用作神经元传递函数的机器人。这种对立是一种基本机制,通过它颜色信息从光感受器传输到视觉皮层(Dacey and Packer, 2003)。该模型有两个视网膜通路,其输出对出现在接受域中的绿色物体更敏感,而这些绿色物体更早被红色物体刺激,反之亦然。只有一条与目标位置相交的视网膜输出水平条纹被提取出来,并通过电流发生器设备输入到大脑模型中。大脑模型由1280个IF神经元组成,分为两层。第一层充当视网膜神经节细胞的电流到脉冲转换器,而在第二层中,每个神经元从第一层的7个神经元收集信息,充当局部脉冲积分器。因此,第二层群体对水平条纹(对应于320个像素)中目标边缘的位置进行编码。这些信息被编码为脉冲计数,然后被机器人用于神经元传递函数,以找到目标的质心。有关目标质心的信息还可用于生成电机命令,使机器人对移动目标进行视觉跟踪。

  目标检测的准确性可以在图14B中观察到,其中显示了目标以正弦运动移动而机器人眼睛保持静止的试验结果。可以注意到,模型完全捕获了目标运动,这反映在相应的大脑活动中(图14C)。图14D显示了控制器在对静态目标的阶跃响应期间的行为:眼睛能够到达目标,尽管有一些过冲。将这项任务(图14E)与目标检测(图14C)期间的大脑活动进行比较,很明显在这次试验中视网膜输出的噪音更大。这是由于视网膜固有的运动检测能力,当检测到某些运动时,神经节细胞的活动会增加。尽管如此,大脑模型中的第二层神经元(下半部分)仍然能够过滤掉第一层(上半部分)与目标无关的活动,因此可以更准确地计算其位置。同样,在机器人必须跟随线性移动的目标的任务中,眼睛运动会在视网膜输出中产生一些噪声(图14G),但控制器仍然能够提取目标位置并成功执行任务(图14F)。

6. FUTURE DEVELOPMENTS

  前面部分中详述的功能描述了Neurorobotic平台的第一个版本。该平台的开发将继续进行,以便为最终用户提供更多的模拟功能和特性。

  短期开发计划包括与大脑模拟平台和神经形态计算平台的集成,如第3节所述,以及能够编排分布式大脑模拟的CLE的扩展,使其有可能模拟更大的大脑模型,这将导致与高性能和数据分析平台的集成。

  状态机管理器将被扩展,以响应机器人行为产生的事件,例如机器人进入环境的某个区域或执行一​​个动作,允许用户设计更复杂的实验。用户还可以使用包含在ESV GUI中的图形支持来设计实验工作流程,基于时间轴的视图允许用户直接选择3D环境中的对象和属性,并根据它们在世界模拟中的状态创建事件。此外,我们计划支持全自动重复实验,包括每次试验的成功评估。

  最后,用户将可以在平台内上传自定义物理模型离线构建的环境,大大增强了环境构建能力。同时,Robot Designer将扩展为包括对外部调试器、静态类型检查和代码分析的支持。还计划将核心框架与Robot Designer分开,并将其作为一个独立项目发布,以促进Blender中的插件开发。

7. CONCLUSION

  本文介绍了在欧盟旗舰人脑项目中开发的HBP神经机器人平台的第一个版本。NRP首次为科学家们提供了一个集成的工具链,用于神经机器人学的计算机实验,即在复杂环境中模拟带有神经控制器的机器人。特别是,NRP允许研究人员设计模拟机器人身体,将这些身体连接到大脑模型,将身体嵌入丰富的模拟环境中,并校准大脑模型以匹配机器人传感器和执行器的特定特性。由此产生的设置可以允许在silico中复制经典的动物和人体实验,并最终执行在实验室环境中无法进行的实验。基于Web的用户界面允许避免软件安装,并且HBP协作门户内的集成允许访问HBP的存储和计算资源。用户可以单独或团队进行实验,这可以促进协作研究,允许共享模型和实验。

APPENDIX

A. Functional Requirements

A.1. Design and Editing

A.1.1. Robot

A.1.2. Environment

A.1.3. Brain

A.1.4. Brain–Body Interface

A.1.5. Experiment

A.2. Simulation

A.2.1. Simulation Consistency and Synchronization Mechanisms

A.2.2. Interactive Visualization

原文地址:https://www.cnblogs.com/lucifer1997/p/15075598.html