微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 机器人技术 > 机器人开发工具中的可复用性软件模块

机器人开发工具中的可复用性软件模块

时间:12-06 来源:互联网 点击:
机器人开发平台的进展主要集中在如何让开发人员着手工作,但它们也提供更急需的软件部件重用方法,如从一个机器人项目到另一个机器人项目。

设计者有很多现成可用的机器人开发平台。
机器人平台的工具正在逐步成熟,但仍有路要走。
机器人开发环境使设计者能够快速完成设计到测试思想的重复。

玩具、游戏和“真实世界”应用之间的界限正在模糊。原本针对严格真实世界应用的技术却不断在更大规模的电动玩具、小器具和计算机游戏市场上找到自己的用途。与此同时,娱乐设备中的新型工程创新有越来越多的机会流入真实世界的应用。对于很多低价消费电子产品(如娱乐装置),消费市场现在能接受的产品支持寿命周期远小于那些高价产品,如汽车、其它车辆、工业与医疗设备,以及大型中心办公室设备等。这些消费电子产品的较短支持寿命周期允许(甚至要求)用更高级技术进步来鉴别其工作。

为了制造工业机器人和半自动系统,开发人员使用的技术正日益跨越工业技术与消费、家用技术的边界,如电动玩具、小器具、游戏机和其它个人娱乐设备。不幸的是,与 上世纪80 年代初的 PC 类似,今天机器人的软件兼容性仍有很大的改进余地。去年以来开始出现的公开式机器人开发平台试图解决更快启动机器人设计项目的问题。实现这一目标的部分方法是提供一种开发软件部件的机制,设计者可将其用于一个机器人项目的开发,然后在其它机器人项目中获得重用。自从本动手项目的第一部分发表以来(参考文献 1),我又多知道了两个公开的机器人开发平台,一个来自 CoroWare,另一个则来自 Gostai(见附文“更多平台”)。

机器人开发平台及其不断成长和发展是实现今天和未来项目复杂程度的增减,使其达到某种可控水平以保持设计者生产率的重要基础。本动手项目主要关注 Lego NXT Mindstorms 平台与 National Instruments 的 LabView 环境。我也在微软的 Robotics Studio 上花了一些时间。

项目

本项目的硬件清单依据是 Brady Duggan 的一次展示,他是 National Instruments 的一名软件工程师。Duggan 演示了一个用于电子“牧羊犬”的非官方参考设计。他使用了别人已在类似项目中用过的硬件配置,其价值是能为快速启动和运行提供极大的帮助。硬件配置包括National Instruments基于德州仪器公司 TMS320VC33的Speedy-33 DSP模块,它连接到一块来自HiTechnic公司的原型板。该板再连接到Lego NXT控制器,后者控制Lego积木块简单平台的传动电机(图 1)。

Speedy-33有两个间距约5英寸的话筒,电路板支持48kHz的话筒采样。LabView支持对电路板的直接编程,如同LabView支持的其它硬件部件一样。Speedy-33用作机器人的耳朵。因为我需要在短时间内了解有关声音的更多信息,因此决定Speedy-33只作为一个传感器,然后把数据送给NXT。项目后续内容将包括实现两个单元之间的双向通信,这样声音探测算法可以在判断声音信号相对机器人的位置时,混合来自机器人平台的信息。

为简化项目的复杂性,我选择了一个800Hz的声源,它在整个测试期间都保持可辨别。选择这个频率的原因是:参考算法的实验表明,系统在较高频率下比低频有更高的成功率,如440Hz。只寻找一个音调使 LabView DSP模块包中的DSP函数更容易使用。实际上,算法会将话筒信号与目标频率作交叉关联,通过比较各个话筒峰值的采样点,确定相对相位差。对于以后再做的项目,系统的终极目标是采用机器人平台的运动反馈,在一个多噪声环境中探测到任意声音信号的相位差,能检测出预定的任何信号。为实现这个终极目标,机器人平台必须探测出自己的惯性位置,这样在平台旋转或移动时,就可以准确地将运动传送给检测算法。这种功能需要为机器人平台增加陀螺和加速度传感器,如HiTechnic公司的产品。

HiTechnic原型板基本是Speedy-33 接口与 NXT 接口之间的一个桥梁,这样,不需要在 NXT 上建立新的代码就可以实现两个部件的连接。原型板可以使设计者建立自己的传感器,并更简便地将其与 NXT 使用的物理接口与逻辑接口相连接。HiTechnic 板对 NXT 表现为遵循 NXT 传感器协议的定制传感器。对本项目,我使用了六个数字端口,用于从 Speedy-33 向 NXT 的通信。Speedy-33 有一个密封的外壳,可支持多种外设的端口。但要用到六个数字 I/O 端口,我就必须从外壳中取出板子,否则就无法连接数字 I/O。不过,本项目不必对 HiTechnic 原型板作直接编程。

我喜欢简单化和节省时间,因此实现了一种从 Speedy-33; 到NXT 控制器的单向通信。我知道建立一种双向通信方法会花时间,并增加对调试阶段的需求。Speedy-33 会在检测到目标声音时报告出声音的左、右方位。NXT 控制程序必须知道 Speedy-33 是否刷新了记录,因此我将六个数字脚中的两个用作计数器,其它四个脚表示从左至右之间的某个位置,四个脚可表示声源的 16 个位置。这种方法使 Speedy-33 只有在听到目标声音时才发送一个更新,并且当出现一个新的声音位置更新时,机器人控制器负责作出识别。

如 Speedy-33 一样,我用 LabView 为 NXT 编程。但是,在为它们编程之间存在着微妙但却重要的差异。LabView 并不像 LabView 系列中的那些普通硬件部件一样正式地支持 NXT。如要用 LabView 建立 NXT 代码,就必须将程序结构用作 NXT 工具集插件。即使是普通的程序结构(如循环与比较)也必须来自插件工具集,而不是普通的位置。这种限制仍允许你打开和固定住与 NXT 专用工具集菜单,这样便于使用,而不会误打开用于其它目标的工具。

NXT 装有一只 32 bit ARM (www.arm.com) 处理器,为该系统提供了大量的处理能力。由于 Speedy-33 的检测算法只有在听到目标声音时才会更新方向信息,因此 NXT 可以在两次方向更新之间显示状态信息或保持空闲。使用这个检测算法时,声音越接近两只话筒的等分位置,就越难以判断声音的方向。这种现象的部分原因是声源到达每只话筒的时间差小于采样速率。对本项目,这种情况是可以接受的。这种现象亦表明,由于机器人一直在调整,声音的方向也越来越接近两只话筒的中心。因此,随着被检声音的方向与两只话筒距离的接近,电机的运动也应越来越小。否则,运动粗放的机器人会在两个位置之间来回弹跳。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top