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

雷锋网按:本文作者Top Liu,易科机器人实验室系统设计师,机器人技术传播者,译著有《机器人编程实战》、《嵌入式机器人学》等。雷锋网独家发布,转载请联系授权。

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

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

1.系统架构设计

2.具体功能的算法实现

3.编码与集成

由于笔者所从事工作性质,主要集中在:1.系统设计和2.算法的研究上,3.coding的机会并不是很多。第二个原因是:如果1、2工作完成后,3的工作其实和机器人本身并不大,计算机专业恐怕会做的更好。因此本文主要就1给出一些总结和建议。另外,由于所研究的算法过(wu)于(fa)先(ying)进(yong),通常会在专业的学术期刊上发表,在此也不做过多讨论。

一、机器人系统架构

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

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

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

图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机器人系统典型的结构是中建立有三个抽象层,分别称为