侵权投诉
焊接机器人 喷涂机器人 搬运机器人 装配机器人 切割机器人 其它机器人
订阅
纠错
加入自媒体

解析:机器人系统架构有哪些特殊技巧?

2016-12-20 09:14
九一隐士
关注

机器人编程涉及控制系统的设计与实现,包括环境感知、交互、移动及行为的控制。

一个理想的机器人编程过程包括(假定硬件已经一切就绪):

1.系统架构设计

2.具体功能的算法实现

3.编码与集成

一、机器人系统架构

“架构可定义为组件的结构及它们之间的关系,以及规范其设计和后续进化的原则和指南。简言之,架构是构造与集成软件密集型系统的深层次设计。”

系统架构也可称其为如何实施解决方案的一个策略性设计(例如基于组件的工程标准、安全)和解决方案做什么的功能性设计(如算法、设计模式、底层实现)。

解析:机器人系统架构有哪些特殊技巧?

图1 机器人功能分解

另外,软件工程的基本要求包括模块化、代码可复用、功能可共享。使用通用的框架,有利于分解开发任务及代码移植。机器人软件同样遵从软件工程的一般规律。说白了,架构就是你如何把机器人的功能打散,再如何把代码组织起来。一个清晰的与项目相匹配的架构直接决定了你的开发效率甚至最终功能的成败。

从人类第一台可编程的机器人开发伊始,架构问题就与之相伴而生。早在1996年,Garlan和Shaw在《软件架构:一门新兴学科的展望》就总结了移动机器人的基本设计需求, 如:(1) 慎思规划和反应式行为;(2)容许不确定性;(3)考虑危险;(4)灵活性强。针对这些要求,他们评估了四种用于移动机器人的架构,包括控制回路(control loop)、分层(layers)、隐式调用(implicit invocation)、黑板(blackboard)。经过了几十年的实践,一些架构被逐渐淘汰,一些架构逐渐被完善起来。

注意:现在很多机器人开发者一上手就是ROS,虽然ROS是一种比较不错的系统架构,它的基于node的思想在当时是非常先进的,在今天已成为主流。但我们也要清楚,它只是其中一种架构,尤其是在小型嵌入式设备上定制机器人系统时,其他的架构可能会更有效率。另外Master中央控制模式,也是单机时代的产物,在多机的情形就不是很适用。

1.S-P-A结构

解析:机器人系统架构有哪些特殊技巧?

图2 机器人的“see-think-act”工作模式

解析:机器人系统架构有哪些特殊技巧?

图3 “传感——计划——行动”(SPA)结构

机器人天然的工作模式是“see-think-act”,所以自然而然的就形成了“传感——计划——行动”(SPA)结构:从感知进行映射,经由一个内在的世界模型构造,再由此模型规划一系列的行动,最终在真实的环境中执行这些规划。与之对应的软件结构称为经典模型,也称为层次模型、功能模型、工程模型或三层模型,这是一种由上至下执行的可预测的软件结构,

SPA机器人系统典型的结构是中建立有三个抽象层,分别称为行驶层(Pilot)(最低层)、导航层(Navigator)(中间层)、规划层(Planner)(最高层)。传感器获取的载体数据由下两层预处理后再到达最高“智能”层作出行驶决策,实际的行驶(如导航和低层的行驶功能)交由下面各层执行,最低层再次成为与小车的接口,将驾驶指令发送给机器人的执行器。

缺点:这种方法强调世界模型的构造并以此模型规划行动,而构造符号模型需要大量的计算时间,这对机器人的性能会有显著的影响。另外,规划模型与真实环境的偏差将导致机器人的动作无法达到预期的效果。

2.基于行为的结构

解析:机器人系统架构有哪些特殊技巧?

图4 基于行为的结构

由于SPA系统过于死板,出现了另一种实现方法:基于行为的方法。基于行为方法前身是反应式系统,反应式系统并不采用符号表示,却能够生成合理的复合行为。基于行为机器人方案进一步扩展了简单反应式系统的概念,使得简单的并发行为可以结合起来工作。

小历史:Joe Jones和Daniel Roth于2003年出版的《Robot Programming:A Practical Guide to Behavior-Based Robotics》以及使用基于行为系统的iRobot扫地机器人的大获成功(通过基于行为的系统可有效实现遍历、避免在某处卡死等多个目标的达成),标志着当年基于行为系统结构的统治地位。短短十年间,SLAM的迅速兴起,基于地图的规划和导航再次兴起,很多人似乎忘记了或压根就没听说过Behavior-Based Robotics的存在。

解析:机器人系统架构有哪些特殊技巧?

图5 《基于行为的机器人编程》

基于行为的软件模型是一种由下至上的设计,因而其结果不易预测,每一个机器人功能性(functionality)被封装成一个小的独立的模块,称为一个“行为”,而不是编写一整个大段的代码。因为所有的行为并行执行,所以不需要设置优先级。此种设计的目的之一是为了易于扩展,例如便于增加一个新的传感器或向机器人程序里增加一个新的行为特征。所有的行为可以读取载体所有传感器的数据,但当归集众多的行为向执行器产生单一的输出信号时,则会出现问题。

1  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号