RSS
热门关键字:  数据挖掘  人工智能  数据仓库  搜索引擎  数据挖掘导论

用Java技术建造能看、能听、会说、会动的机器人 .

来源: 作者: 时间:2007-06-18 点击:

机器人在我们的世界中正在起越来越大的作用。有完成一般任务的工业装配机器人,有在倒塌的建筑物深处救生的搜索、营救机器人,还有探测广袤空间的太空探测机器人。机器人日益介入这样的一些任务,这些任务如果由人来

完成将是令人厌烦的,或者是花费巨大的,或者是危险的。

但是,为了开发有效的,费用合理的机器人系统,我们需要一个健壮的、经得起未来检验的技术框架。设备和操作系统日益多样化,硬件能力和设计有很大的不同,机器人框架必须是独立于设备和平台的就成为基本的要求。毕竟在太空探险领域,系统承包商会由于政治原因而改变。 数据挖掘研究院

早期的月球探险者曾经遇到过设备故障,据说技术手册告诉他们在所有其他的诊断方法失败时可以用月球靴子踢设备。但是,对于位于离地球141百万英里的外星上的机器人火星漫游者来说,没有人能够踢它。搜索太空生命的火星机器人可不能像普通计算机一样允许出现"蓝屏"。 数据挖掘研究院

Java技术与机器人

能听、能看、会说、会动的能力是人类能够操纵世界的关键。但是,机器人要完成这些任务必须通过软件来模拟这些功能。为了建立健壮的、独立于设备和平台的系统,Java技术有专门的内容。Java技术提供了一组经过裁剪的API以满足机器人领域的需要。Java语音API(Java Speech API)使你可以建立命令控制识别器、口述系统和语音合成器。Java媒体框架(Java Media Framework)能够用于接受和处理可视图像。 数据挖掘研究院

Simon Ritter是Sun公司的技术作者。他在Java技术的许多不同方面传授知识,特别是在机器人领域的Java技术。他开发了机器人系统软件开发工具,经常用Java技术展示机器人系统。在这些系统中,有小型的、受到资源限制的机器人,这些机器人使用了LEGO Mindstorms RCX "方块"。Ritter为建造、编程和部署他的各种LEGO机器人提供了详细指示(包括硬件和软件)。

数据挖掘实验室

对于Ritter来说,与机器人有关的标准的Java技术API的优美之处在于这些API简化了开发工作asadfdw.cn他们允许你只关注需要你处理的任务,而不需要了解整个具体的机器人系统。

数据挖掘研究院

为了避免人们认为Java技术的机器人只限于企业开发者,Ritter强调指出,用大约三十美元就可得到机器人语音合成引擎,不到一百美元就可得到webcam,大约二百美元就可买到LEGO Mindstorms 机器人。

数据挖掘实验室

语音识别 数据挖掘研究院

JSAPI(Java Speech API)为语音系统提供了简单强大的接口asadfdw.cn包括语音识别和语音合成。"JSAPI实际上并没有提供语音识别和语音合成系统"Ritter解释说,"它们向你提供的只是语音识别和语音合成系统的编程接口。"

数据挖掘实验室

有几个低廉的设备使用了JSAPI。"我用来展示的应用使用了IBM ViaVoice引擎,"Ritter指出,"这个引擎已经存在几年了,IBM非常善于实现JSAPIasadfdw.cn你可以在IBM的AlphaWorks网站免费下载。"ViaVoice引擎的价格非常合理,用不到三十美元,开发者就具备了建立语音Java应用的条件。

JSAPI语音识别功能的关键是命令控制识别器。"你首先得指定你想要系统识别的词汇,"Ritter说,"然后,必须表明当识别到这些词汇时发送那些相应的事件。"JSAPI语法允许你定义系统应该识别的词汇。"它为我们提供了跨平台的控制语音识别器的方法,"Ritter补充说。

数据挖掘研究院

JSAPI语法示例 数据挖掘实验室

grammar robot;

public <stop> = stop {stop};
public <left> = [Turn] left {left};
public <right> = [Turn] right {right};
public <forward> = [Go] Forward {forward};
public <reverse> = [Go] Back {back};
public <bye> = ([Good] Bye) | So long {bye};

数据挖掘研究院

"利用上面的代码,我定义了一组让系统识别的词汇,"Ritter解释说,"以及我想从具体的语音识别得到的事件。我可以利用可选的特点使其更复杂asadfdw.cn例如,我可以说:"bye"、"good bye"、或"so long"。所有这些词汇都是可以识别的,返回的都是同一个事件。" 数据挖掘研究院

JSAPI也可以用于口述系统,口述系统本质上是命令控制功能的超集,它不是寻找特定的词汇/命令,而是处理所说的每个词汇,用于文字处理器和浏览器数据挖掘研究院

通过编程使用给定的JSAPI语法的基本代码相对来说是简单易懂的。下面的代码经过了精简,完整的代码在Ritter的机器人SDK中给出(见本文后面的连结)。 数据挖掘实验室

利用语法格式文件建立机器人voice listener的代码示例

数据挖掘实验室

import javax.speech.*;
import javax.speech.recognition.*; 数据挖掘研究院

// Create recognizer and allocate resources
Recognizer recognizer = Central.createRecognizer(null);
recognizer.allocate(); 数据挖掘研究院

/* Add engine listener - to notify when speech engine
 * is stopped, started, etc.
 */
recognizer.addEngineListener(engineListener);

数据挖掘研究院

// Read-in grammar file
File gf = new FileReader(grammarFile);
RuleGrammar rules = recognizer.loadJSGF(gf);

/* Add result listener. VoiceListener then called when a
 *particular grammar word is recognized. The associated
 *event tag is passed to it
 */
rules.addResultListener(new VoiceListener()); 数据挖掘研究院

// Tell recognizer to commit changes
recognizer.commitChanges();
// Request focus of microphone away for other apps.
recognizer.requestFocus();
// Start listening
recognizer.resume();

数据挖掘研究院

// Remember to catch exceptions

一旦定义了JSAPI result listener,任何识别到的词汇都将产生一个事件,这个事件引起所定义的result listener (VoiceListener)方法被调用。这个方法就可以访问所传递的event tag,确定所识别的命令。

数据挖掘实验室

接受和处理语音命令的代码示例 数据挖掘研究院

import javax.speech.*;
import javax.speech.recognition.*; 数据挖掘实验室

// Called when a given grammar command is recognized
public class VoiceListener
 extends ResultAdaptor {
 public void resultAccepted(ResultEvent re) {
FinalRuleResult result = (FinalRuleResult)re.getSource();
// Get and examine grammar tag
  String[] tags = result.getTags();
  System.out.println("First tag was :" + tags[0]);
 }
}

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?