使用分层的方法设计 机器人软件

目录
驱动层
平台层
算法层
用户接口层
机器人软件架构是典 型的控制回路的层次 集, 包含了高端计 算平台上的高级任务 规划、运动控制回路 以及最终的现场可编
程门阵列 (FPGA)。 在 这中间,还有循环控 制路径规划、机器人 轨迹、障碍避让和许 多其他任务。 这些 控制回路可在不同计算节点(包括台式 机、实时操作系统以 及没有操作系统的自 定制处理器)上以不 同的速率运行。
在某些时候,系统中 的各个部分必须一同 运行。 通常情况 下,这需要在软件和 平台间预定义一个非 常简单的界面—就如
控制和监测方向与速 度般简单。 共享软 件栈的不同层次的传 感器数据是一个不错 的想法,但会给集成 带来相当大的麻 烦。
每个参与机器 人设计的工程师或科 学家的理念都有所不 同,举例来说,同一 个架构对于计算机科 学家来说运作良好,
而在机械工程师那里 可能就无法正常工 作。
如图1所示,拟议的 移动机器人软件架构 由下列图形所表示的 三至四层系统构 成。 软件中的每一 层只取决于特定的系
统、硬件平台或机器 人的终极目标,与其 上下层的内容完全不 相关。 典型的机器 人软件包括驱动程 序、平台和算法层组

件,而具备用户交互 形式的应用包含了用 户界面层(该层可能 不需要完全自主实 现)。

图2. SuperDroid Robots设计的 移动机器人
开发人员可以借助NI LabVIEW (http://www.ni.com/labview/zhs) 系统设计软件来实现 这些移动机器人的平 台层。 LabVIEW可用
2/4 www.ni.com
开发人员可以借助NI LabVIEW (http://www.ni.com/labview/zhs) 系统设计软件来实现 这些移动机器人的平 台层。 LabVIEW可用
于设计复杂的机器人 应用—从机械手臂延 伸到自主车辆开 发。 该软件提取 I/O并可与多种硬 件平台集成,帮助工
程师和科学家提高了 他们的开发效率。 NI CompactRIO (http://www.ni.com/compactrio/zhs) 硬件平台在机器人开
发中十分常用,它包 括了集成的实时处理 器与FPGA技 术。 LabVIEW平台 的内置功能可实现每 一层之间的数据通
信,通过 络传输数 据并显示在PC主机 上。
1. 驱动层
顾名思义,驱动层主 要处理机器人操控所 需的底层驱动函 数。 在这一层的组 件取决于系统中的传 感器和执行器,以及
运行着驱动软件的硬 件。 一般情况下, 这一层的模块采集工 程单位(位置,速 度,力量等等)中激 励器的设定值,生成
底层信 来创建相应 的触发,其中可能包 括关闭这些设定值循 环的代码。 同样 的,该层的模块还能 采集原始传感器数
据,将其转换成有用 的工程单位,并将传 感器值传输至其它架 构层。 图3中的驱 动层代码就是使用LabVIEW FPGA模块 (
http://sine.ni.com/nips/cds/view/p/lang/zhs/nid/11834) 开发的,并在 CompactRIO (http://www.ni.com/compactrio/zhs)
平台的嵌入式 FPGA模块上执 行。 声纳、红外和 电压传感器都连接在 FPGA的数字 I/O引脚上,信 在连续循环结构中进

行处理,这些结构在 FPGA上真正的并 行执行。 这些函数 输出的数据被发送到 平台层上进行进一步 处理。

图4. 如果需要进行仿真, 必须要在驱动层中使 用环境仿真器。
2. 平台层
平台层中的代码对应 了机器人的物理硬件 配置。该层中底层的 信息和完整的高层软 件之间能够进行双向 转换,频繁地在驱动
层和高层算法层之间 切换。如图5所示, 我们使用了LabVIEW FPGA (http://www.ni.com/fpga/zhs)读/写结点从 FPGA中接受原始

红外传感器数据,并 且在 CompactRIO (http://www.ni.com/compactrio/zhs)实时控制器上进行数 据处理。 我们使用 LabVIEW函将原始传感器数据转 换成有用的数据—在 本案例中为距离,并 判断我们是否在4米 至31米的范围之 外。

图6. 算法层根据反馈信息 作出控制决定
算法层组件的另一个 范例是搜索红色的球 状物体,并使用机械 手臂将它拾起的机器 人。该机器人凭借其 设定的方式,在避让
障碍的同时探索环 境——这就需要搜索 算法与避障算法相结 合。在搜索时,平台 层模块会处理图像, 并且返回物体是否找
到的信息。球被检测 到以后,算法会生成 一条运动轨迹,手臂 端点根据它就能抓住 并拾起球体。
范例中的每个任务都 具有一个高层目标, 与平台或物理硬件无 关。 如果机器人拥 有多个高层目标,那 么这一层还需包含仲
裁来为目标排序。
4. 用户接口层
用户接口层中的应用 程序并不需要完全独 立,它为机器人和操 作员提供了物理互 动,或在PC主机上 显示相关信息。 图
7显示的是图形用户 界面,上面包含板载 相机上的实时图像数 据,以及地图上周围 障碍的XY轴坐 标。 伺服角度控制
让用户可以旋转与相 机连接的板载伺服电 机。 在该层中还能 读取鼠标或游戏杆的 输入数据,或驱动简 单的文本显示。 该

层中的组件,例如 GUI的优先级非常 低;而急停按钮等类 似组件则需要以确定 性的方式与代码捆 绑。

图8. 映射到 CompactRIO (http://www.ni.com/compactrio)或NI Single- Board RIO 嵌入式系统的移动机 器人参考架构
文献中有关移动机器 人软件架构的简要介 绍表明了该主题还存 在很多不同方法来创 建机器人软件。 本 文就如何构建移动机
器人软件给出了一种 广义的答案;然而任 何设计都需要预先作 出考虑与规划,才能 适应架构。作为回 ,一个定义明确的
架构有助于开发人员 轻松地并行处理项 目,将软件划分成明 确的界面层次。 此 外,将代码划分成具 有明确的输入和输出
功能模块有助于今后 项目中的代码组件复 用。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年3月21日
下一篇 2016年3月21日

相关推荐