机器人在前进之二:开发工具中的可复用性软件模块

技术分类: 消费电子设计  | 2008-05-14
作者:Robert Cravotta,EDN技术编辑

  由于 URBI 是一种并行语言,它可以用互斥(互斥-排除)技术处理并行访问,保证一个时间只有一种代码能使用某种资源。URBI 支持七个混合模式,它们设定了系统应如何处理冲突性与同步任务问题。一个混合模式的例子是加法与混合模式,它将冲突任务的计算加到或平均到结果值上。队列模式实现了一种经典的互斥机制。

  为提供更好的并行支持,时间概念成为 URBI 语义中的一部分。例如,URBI 中的一个简单任务可以使一个变量在一个给定时间里或以某个给定速度达到一个值,否则就设为一个正弦振荡。这些非瞬时的任务可以与其它设定同时执行。举例来说,考虑任务 neck.val=10 time:450ms&leg.val= -45 speed:7.5 & tail.val=14 sin:4s ampli:45;。这个任务使用 "time," "speed," "sin," 和 "ampli" 修改任务完成的方式。在本例中,"neck.val" 的值将在 450 ms内达到10。其它支持的修饰语有 "phase," "getphase," 和 "smooth."。

  URBI 自身能够加快并行事件的处理速度,因为多个事件可以并行发生,并触发一些可以并行运行和重叠的代码。实际中,对 URBI 中一个事件作出反应的最简单方式是使用 “at” 命令,它看似 “if” 语句,即当检验为真时执行一条命令。不过,与 “if” 不同的是,”at” 命令会保持在后台作再次触发,而并不终止。另一种这类工具是 “whenever” 语句,它循环执行命令,直到检验为真。该语句类似于 “while” 语句,不同的是当检验为假时它保持在后台。语言还可以忽略有参数或没有参数的事件。

1】【2】【3】【4
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销