首页 理论教育 机器人程序设计语言

机器人程序设计语言

时间:2022-02-11 理论教育 版权反馈
【摘要】:许多机器人控制器是用专用程序设计语言实现的。GRL是一种用于编写大型模块化控制系统的函数程序设计语言。另一种用于并发机器人软件的重要程序设计语言是反应式行动规划系统,或缩写为RAPS。还有其它一些考虑到机器人身上发生的推理和学习的语言。到目前为止,ALisp只在仿真中被用于机器人学问题,不过它为建造通过与环境交互进行学习的机器人提供了一套非常有前途的方法。

许多机器人控制器是用专用程序设计语言实现的。例如,许多用于包容体系结构的程序是用Brook (1990)定义的行为语言实现的。这种语言是一种基于规则的实时控制语言,它可以编译成 AFSM 控制器。在类似于Lisp语言的语法中,每条单独的规则都被编译成AFSM,多个AFSM通过一组局部或全局的信息传递机制加以整合。

与包容体系结构类似,行为语言被限制在它所关注的简单AFSM上,这些AFSM的模块之间的通信流具有相对狭窄的定义。近来的研究都建立在这种思想之上,从而引出了一系列在实质上类似于行为语言,但是执行的时候更强大和快得多的程序设计语言。一种这样的语言是通用机器人语言(generic robot language),或缩写为GRL(Horswill,2000)。GRL是一种用于编写大型模块化控制系统的函数程序设计语言。正如在行为语言中一样,GRL采用有限状态机作为它的基本建造模块。在此之上,它比行为模型提供了范围更宽的结构用于定义通信流,以及不同模块之间的同步约束。用GRL写的程序可以被编译成高效的指令语言,例如C语言。

另一种用于并发机器人软件的重要程序设计语言(以及相关的体系结构)是反应式行动规划系统,或缩写为RAPS(Firby,1994)。RAPS使程序员能够对目标、与这些目标相关的规划(或不完全策略)和那些有可能使规划成功的条件进行指定。重要的是,RAPS 还提供了一些措施用于处理那些在实际机器人系统中不可避免发生的失败。程序员可以指定检测各种失败的例行程序,并为每一种失败提供处理异常的过程。在三层体系结构中,RAPS 通常用在执行层,处理那些不需要重新进行规划的偶发事件。

还有其它一些考虑到机器人身上发生的推理和学习的语言。例如,GOLOG(Levesque等人,1997b)是一种将思考式问题求解(规划)和反应式控制的直接确定进行无缝结合的程序设计语言。用GOLOG写的程序通过情景演算(第10.3节)进行形式化表示,并使用了非确定性的行动算子的附加选项。除了用可能的非确定性行动指定控制程序以外,程序员还必须提供机器人及其环境的完整模型。一旦控制程序到达一个非确定性的选择点,一个规划器(具有理论证明机的形式)就被触发,用来决定下一步该做什么。这样,程序员就能够指定部分控制器,并依靠内置的规划器来做出最终的控制选择。GOLOG的优美性体现在它对反应和思考的无缝整合上。尽管GOLOG需要很强的条件(完全可观察性、离散的状态、完整的模型),它已经为一系列室内移动机器人提供了高级控制。

CES,“嵌入式系统C++语言”(C++for embedded systems)的简写,是C++的一种语言扩展,它集成了概率和学习(Thrun,2000)。CES 的数据类型为概率分布,允许程序员对不确定信息进行计算,而不必耗费实现概率技术通常所需的努力。更为重要的是,CES 使得根据实例训练机器人软件成为可能,与在第二十章中讨论的学习算法非常类似。CES使程序员能够在代码中留出“缝隙”由学习函数——典型的是诸如神经网络这样的可微分参数化表示方法——进行填补。然后这些函数再通过明确的训练阶段来归纳地学习,训练者必须指定所期望的输出行为。CES 已被证实能够在部分可观察的和连续的领域内很好地工作。

ALisp(Andre和Russell,2002)是Lisp的一种扩展。ALisp允许程序员指定非确定性的选择点,这与GOLOG中的选择点类似。不过,ALisp通过强化学习来归纳地学习正确的行动,而不是依靠定理证明机进行决策。因此ALisp可以看作是用来将领域知识——尤其是关于所期望行为的分层“子程序”结构的知识——结合到强化学习机中的一种灵活手段。到目前为止,ALisp只在仿真中被用于机器人学问题,不过它为建造通过与环境交互进行学习的机器人提供了一套非常有前途的方法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈