基于FPGA的教学机器人的平台的设计

FPGA/ASIC技术

190人已加入

描述

赛灵思 Spartan FPGA 为强大的教学工具奠定基础。这种教学工具能够根据学生的需要自我改造。

可能没有比机器人更能吸引初中生及高中生对科学技术感兴趣的教学设备了。对初中生和高中生来说,摆弄机器人是一种掌握新概念,亲眼见识技术使用情况的实践方式。构建机器人能够激发学生们克服智力难题,取得优异的科学、技术成绩。

为此,我藉此文介绍一种可供教师用于技校的机器人教学活动的教学平台。该平台理念是我任教的高中(意大利米兰附近的ITCS Erasmo da Rotterdam)提出来的。当时只是为了入围 RoboCup青少年机器人世界杯(RoboCup Junior)。我们队参加的是“救援机器人”组别的比赛,即让机器在重现的灾害场景中发现受害者。这些机器人必须完成复杂程度不同的多重任务,比如在平坦路面上沿直线行走,判断通过崎岖地形上各障碍物的路径,以及拯救部分指定的受害者等。

与其它采用不同类型的微型计算机的普通传播平台相比,我们采用 FPGA 的设计具有开放、灵活、可不断发展演进,以及可重复使用等基本特性。

我们使用 Digilent Nexys2 教学开发板,在赛灵思 Spartan®-3E 器件的基础上制作了该机器人的 2011 版。在撰写本文时,我们正在把这个版本移植到 Spartan-6 FPGA 上,以便参加将在 2012 年 4 月举行的下一届意大利青少年机器人世界杯比赛。按计划,下一版本(2013 版)将运行于Zynq ™ -7000 可扩展处理平台器件上。

用这种方法,我们设计出的一种救援机器人能够年复一年不断发展演进, 从第一种原型发展到了现有的Nessie 2011 版本(Nessie 由 Nexys和尼斯湖水怪(Loch Ness Monster)而得名,尼斯湖水怪的长脖子与我们的机器人相似)。FPGA 具有高度的灵活性,可以在不改变其基本物理结构以及保持相同的设计基础架构同时,让机器人的架构随学生知识的增长而重构。

挑战
ITCS Erasmo da Rotterdam 是一所位于意大利北部米兰近郊的技校,学生参差不齐,难以教导他们深入学习科技知识。

从四年前开始,我决定创办一个开放空间,后来我取名为“机器人教学永久实验室”,在那里学生们可以采用与标准课堂授课完全不同的方法开展实验。在此,他们可以在互动环境中接触技术学科,探讨一些异乎寻常的主题内容,选修一些自己感兴趣的课程,安排好自己工作并从实践中直接得到反馈。换句话说,他们根据由来已久且为人熟知的“情景认知”模型[1] 在“积极学习空间”中开展实验。在这里,同学们不仅可以相互协作或同辅导员合作,同时还可在达成共识的基础上追求共同的目标。

在这个学习空间中,学生扮演掌握多种解决方案的“认知学徒”。而教师则充当“专家”角色,负责提出实际任务和策略的具体流程,让学生们独立尝试,需要时才予以辅导。

为不同学科的汇聚和知识的交流提供肥沃的温床,机器人是自然之选。我们认为参加青少年机器人世界杯比赛的乐趣强烈地刺激了学生对科技实验的积极参与。

解决方案
我认识到,要让这种方法有效,我必须提议数字电子学和信息学等普通课程涵盖的课题,但主要针对哪些比学生们能够独立解决的应用更复杂的应用。这样他们就需要分工合作,或者需要得到能够提出正确模型的资深教师的协助。

我知道需要制作什么,但我不知道怎么制作。一切都必须在实验室中提出和开发出来,由学生共同探讨设计,寻找解决方案。

在经过一番深思熟虑之后,我得出一个结论:最可行的就是采用一种基于某种灵活的平台(如 FPGA),而不是标准微型计算机上的解决方案。这是因为 FPGA 是唯一能够满足特性要求且能够跟上实验活动的动态和演变范围的器件。

我最初选择的是基于 Spartan-3E的教学板卡,因为它能够提供我们一直寻求的必要特性,即开放性、灵活性、演进能力、硬件的重复利用性以及性能的丰富性。

 开放性。由于学生必须积极参与整个设计流程, 从传感器接口到CPU,再从 CPU 到激励器。
 灵活性。因为系统的整个架构以及器件的性质和类型不应事先确定,必须从创造性学习环境所激发的研究过程中产生。
 演进能力。因为在每次青少年机器人世界杯结束后,学生都必须认识到他们作品的缺陷,了解如何进行适当修改,试图找出更先进的解决方案。该系统必须与学生的专业知识保持同步发展。
 可重用性。以避免硬件和学校经费不必要的浪费。
 低成本、高性能。我们必须控制没有得到完全定义但需要高度并行运行的大量器件和外设。该 CPU 的功能应非常强大,但架构相对简单,易于接口。

NESSIE 2012:方框图及描述
我们用基于板载 Spartan 3E-1200 的Diligent 板卡来实现我们的目标,这成为四年期项目开发的统一主线。从图 1 可以看到,学生们设计的救援机器人发生了明显的变化。2008 年它还只是勉强能动,到 2011 年它让我们从 65 支参赛团队中脱颖而出,顺利杀入 15 强,成功进入决赛。

学生的专业知识年复一年地增长,为救援机器人的进一步改进奠定了基础。这些改进我们准备用在参加今年4 月举办的青少年机器人世界杯大赛的救援机器人上。

首先我们从 Spartan-3E 升级到Spartan-6 系列,将标准处理器本地总线的总线基础架构升级为 AXI4 接口。其次,我们对部分用于跟踪基准线的关键传感器进行了修改,重新设计了电机接口,将用于自动速度控制的 PID算法直接移植到了 FPGA 架构中。

图 2 是目前设计的完整的系统方框图。从这个图上可以清楚地看到丰富的教学课题,便于教员在数字控制系统课程中讲授。同样显而易见的是,与采用标准微型计算机制作的机器人平台相比,从性能方面来说,该系统具有高度的并行性。

此外,机器人实验室中开展的活动对我们学校普通教学课程带了了良好影响。FPGA 已成为让技术理论迅速有效地变为现实的工具,从而激发学生对涉及的课题产生出浓厚的兴趣。

管理 NESSIE 的行走问题
在有 Spartan-6 系列提供丰富的可用资源的情况下,我面临的问题是如何将在连续系统上分析得到的 PID 控制方法变为现实,运用到数字系统中,让学生有机会亲手解决方程组的数字化问题,并立即将其对应到数字电子电路的元件。

我从典型的 PID 方程式入手:

FPGA

将其转换成另一种典型的有限差分算法:

FPGA

其中,Kp 为比例放大率,TI 和 TD 为积分运算和导数运算的时间常数,TC为采样周期。根据 W. Zhao 等撰写的《用于小型机器人的闭环控制系统的FPGA 实现方案》[2] 一文中提出的建议,我把该模型转换为如下的非常简单的迭代算法:

FPGA

其中
Δa(n) 可通过下列算式得出:

FPGA

迭代的步骤为:

FPGA

Ki 系数可通过下列算式得出:

FPGA

其中 PID 参数可以采用 Ziegler Nichols 方法实证性地微调。

图 3 大致绘出了 FPGA 实现方案的 PID RTL 模型。图 4 是我们为Nessie 参加 2012 年青少年机器人世界杯大赛设计的完整行走控制 IP。

FPGA

 

FPGA

从老师的观点出发,这种方法极富成效,因为它采用线性转换,且其从概念到立即实现物理系统这个相关转化容易做到。这个过程鼓励学生尝试更多实验,深入掌握和学习这个系统。

如何让 NESSIE 的眼睛感知光线
作为一个救援机器人,Nessie 的任务是在人为重现的灾难场景中发现受害者。机器人在崎岖地形上行进、越过障碍物和瓦砾、搜寻待拯救的受害者,都需要用视觉跟随白色背景上的一道黑线。

有效的跟踪系统是决定青少年机器人世界杯大赛中所取成绩的关键。成功完成有引导的赛段是机器人有足够的时间完成其它比赛项目的必备起点,包括避开障碍物和瓦砾,以及拯救受害者等。

我们将通过使用内置一个光积分与吸持电路的 128x1 线性传感器阵列(即Taos 1401R-LH)来解决 Nessie 的视觉功能问题。

该线性阵列由一个集成有 128 个二极管的模块和一个使用两个电容对二极管产生的电荷进行积分和保持的模拟电路组成。其中一个电容负责采集电流,另一个则负责复制回来并在扫描和采集下一个电荷前予以保持。该传感器实际上同时执行两项操作:完成积分、采集新的测量值,同时以扫描的方式读取上一个周期中累计的电荷。一次扫描周期中积分的电荷扫描结束时即被转移到保持电容中。

每个周期开始于“开始积分”(Start Integration)信号的上升沿。在第一个时钟周期内,该信号会断开一个内部开关,以隔离保持电容,同时删除存储在积分电容器中的电荷。所有 128个二极管同时并行执行该过程。随后周期进行新的积分过程,在这个过程中传感器读取新的亮度数据的全部128 个值。与此同时,在每个上升沿,保持电容器中存储的电荷输出到输出放大器上,在模拟输出引脚上读出跨越放大器两端的电压。该电压被读取到移位寄存器中。通过这种方法,就可以一边读取上一次由光照所积累的电荷而产生的电压,一边在积分电容器中累计当前采集的值。

在此,FPGA 再度证明其价值。释放 CPU 负载,刷新积累的电流,并保存转换结果值以备进一步处理。图5 即是我们为此目的设计的 IP 的图示。它还说明了“双缓存”机制的作用,即使用 Spartan 器件上提供的内部BRAM,可以通过处理采集到的上一帧来覆盖新帧的采集。通过这种方法,我们可以加快图像处理速度,提取出机器人导航所需的全部信息。

FPGA

高中水平的数字处理
鉴于本机器人活动的教学性质,我也使用本设计向学生讲授部分简单的数字图像处理元件。

从图 2 中可以看到,我们给设计加装了一个小型图像显示器,以便显示 Taos 传感器看到的内容,同时了解如何进行处理才能提取出用于引导Nessie 完成其功能所必需的信息。图6 是一帧中采集的原始图像。

FPGA

在设计 Nessie 时,学生们必须找出一种操控扫描到的线的方法,从而在可能存在的瓦砾和废弃物之间识别黑线的位置,并定义控制两个电机速度的算法,让机器人正确地跟踪黑线行进。

通过这种方法,学生掌握了如何处理像素这样的简单问题,学习到不同的数学运算在实现这项功能上的效果。

具体来说,为了判断黑线的位置,他们会找到一些基本的运算方法:设定阈值、椒盐滤波、边缘探测和线段分割。

扫描到的线需要按不同的光强度和长度分段组合,而且所有这些对象必须正确排序,才能识别方向,引导机器人前行。这就需要在硬件 PID 环路之外使用软件实现第二个控制环路,用于优化跟踪基准线运动,根据传感器轴线和黑线之间的角度以及侧面白色区域的相对大小调整两个电机的相对速度。

激励工具
该系统的复杂程度对我的学生的年龄是适合的,经证明是一种引导他们接触更高难度的内容的良好方式,比如二维图像处理。这些初始难度的问题易于入门,能激励学生不断提升自己的技术和科学知识,通过解决更为复杂的问题掌握新的技能。根据我在高中教学的长期经验,我可以放心地说,有了这样的经验,学生会更有兴趣和动力继续技术学习,能更有把握地进入高等学府深造以及在所从事的专业领域就业。

在我讲授采用这种灵活的 FPGA平台的机器人技术的三年中,我发现我的学生对“实时”计算机系统的内在构造有了更深入的认知。他们还学习到如何设计出更具原创性的内部外设,如何增强团队合作能力,如何增强独立面对问题并找到正确的解决方案的能力。

鉴于本项目的教育目的,我们在ITCS Erasmo da Rotterdam 的团队正在鼓励学生用他们在 Nessie 上所学的知识为通过意大利的州考试,顺利毕业铺平了道路。该考试有一项单独的内容,就是学生必须论述自己的研究道路。Nessie 事实上激励部分学生以优异的成绩取得电子技术学位。

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

全部0条评论

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

×
20
完善资料,
赚取积分