首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自主机器人软件开发技术之现状简析

由于自主机器人软件在功能和非功能方面的特殊性,使其在开发、运行和维护方面面临诸多挑战,也给计算机软件技术提出了新的要求。

软件结构:从整体上看,自主机器人软件遵循感知-决策-实施(perceive-decide-act)的封闭控制环路,即获取感知信息,据此进行行为决策,并采取相应的行为。为支持这一控制环路,自主机器人软件采用了多种软件结构和模型,包括:(1)基于对象的模型,即将控制环路以及相关功能用对象技术来进行封装和实现。其优点是具有良好的程序结构和可重用性,有众多程序设计语言的支持(如C++、Python和Java等),可有效支持自主机器人软件的功能层、控制层和交互层的开发;缺点是对象无法主动感知环境变化,不具备自主和自发的行为,一旦实例化之后其结构和行为将无法改变等。因而,对象模型在支持自主机器人软件的决策层、管理层等方面有其局限性。(2)基于构件的模型。该模型支持对机器人软件进行粗粒度的封装,并有效支持软件重用,可通过构件接口的灵活组装来形成满足自主机器人软件的不同需求。赛德克·本萨利姆(Saddek Bensalem)等人提出了基于形式化构件的方法以及相应的体系结构LAAS来开发可信的自主机器人软件;阿尼斯·科巴(Anis Koubaa)等人基于构件技术提出了一个面向自主协同服务机器人的软件体系结构COROS。但构件模型很少关心自主机器人软件决策层的行为自主性和自发性问题以及管理层的自我管理问题,也没有为此提供相应的支持,因而在支持自主机器人软件的自主决策层、自我管理层等方面有其局限性。(3)基于主体(agent)的模型。主体是指能与环境进行交互并能实施自主行为的实体,它通常采用反应式、审慎式的软件结构,以支持其自主的行为决策。这类模型能够为自主机器人软件在决策层、管理层的开发提供元层支持。例如,布鲁克斯(Brookes)采用包容(subsumption)的反应式结构来支持机器人软件的开发,魏长云等提出了基于主体的认知模型来支持自主机器人软件的开发。

编程语言:现有的机器人编程语言大致分为两类:一类是通用程序设计语言,另一类是专用程序设计语言,如RoboML、VPL等等。这些程序设计语言表现出不同的范型,包括描述型和命令型。描述型程序设计语言采用描述性的方式来表示机器人程序的结构和行为,适合于对机器人的行为进行决策和控制。命令型程序设计语言采用过程式的方式来表示机器人的动作、行为和执行时序,适合于对机器人的功能进行编程。据统计,尽管在某些特定的机器人应用领域,人们采用专门的机器人编程语言来编写机器人程序,但在学术界和工业界应用较广泛的仍然是C、C++、Python等通用程序设计语言。但通用程序设计语言没有为机器人行为的自主性、自发性和自我管理能力提供元级支持。为此,程序员不得不做大量的封装,以满足此类开发的需要。这不仅降低了软件开发效率,还影响了软件的质量,导致自主机器人软件难于维护、改进和扩展。近年来,人们提出借助面向主体程序设计技术及其语言来支持自主机器人的编程,如GOAL语言基于认知结构支持面向目标的任务分解和行为自主决策,Golog语言采用逻辑符号支持对机器人的行为进行知识表示和决策推理等。

开发框架:机器人软件的开发框架通常基于某些基础语言(如C、C++或者Java),通过提供可重用的软件开发包和软件工具来支持机器人软件的开发。这些基础语言通常是通用的,它们没有为机器人软件的开发提供特殊的支持。为此,开发框架利用基础语言封装并实现了机器人软件的一组功能和行为,形成了面向机器人软件的可重用开发包。程序员通过重用这些软件开发包来快速、高效且高质量地开发出机器人软件。此外,开发框架还提供了支持机器人软件部署、运行和维护的一组工具和基础设施。这方面的代表性工作是机器人操作系统(ROS),它提供了一种开放的分布式架构,采用可重用构件的方式来支持多语言(包括C++、Python、Lisp)的机器人编程。其他的开发框架有YARP、OROCOS、ORCA、Open-RTM和Open-RDK、Pancakes等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200923A0JR8H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券