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

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

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


图1. 机器人参考架构
该范例中的架构为带 有机械手臂的自主移 动机器人,它能够执 行路径规划、障碍避 让和地图绘制等任 务。 这类机器人的
应用范围在真实世界 十分广泛,包括农 业、物流或搜索和救 援。 板载传感器包 括编码器、惯性测量 单元(IMU)、摄
像头和多个声纳及红 外(IR)传感 器。 传感器聚变可 以用来整合针对本地 化的编码器和IMU 数据 ,并定义机器 人环境地图。
摄像 头则用于识别载板机 械手臂握住的物体, 而机械手臂的位置由 平台层上执行的运动 学算法所控制,声纳 和红外传感器可以开障碍物。 最后, 转向算法被用来控制 机器人的移动,即车 轮或履带的移动。 图2就是基于移动机 器人架构的美国宇航

局机器人。


图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上真正的并 行执行。 这些函数 输出的数据被发送到 平台层上进行进一步 处理。


图3. 传感器和激励器的驱 动层界面
驱动层可以连接到实 际的传感器或激励 器,或连接环境仿真 器中的I / O。 除了驱动层以 外,开发人员无需修 改系统中的任何层就能在仿真和实际硬 件之间进行切换 。 图4为LabVIEW机器 人模块 (http://www.ni.com/labview/robotics/zhs) 2011,它包含了
基于物理学的环境仿 真器,因此用户可在 硬件和仿真之间切 换,除了硬件I / O模块以外就无 需修改任何代码。
开发人员可以使用例 如LabVIEW机器 人环境仿真器 (https://decibel.ni.com/content/docs/DOC-14193)等工具来在软件中快
速验证他们的算法。
图4. 如果需要进行仿真, 必须要在驱动层中使 用环境仿真器。

3/4 www.ni.com


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

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


图5. 平台层在驱动层和算 法层之间进行转换
3. 算法层
该层中的组件代表了 机器人系统中高层的 控制算法。图6呈现 了机器人需要完成任 务,可以看到算法层 中的模块采集系统信
息,如位置、速度或 处理后的视频图像, 并基于所有反馈信息 作出控制决定。该层 中的组件能够为机器 人环境规划地图,并
根据机器人周围的障 碍物规划路径。图6 中的代码显示的是使 用矢量场直方图 (VFH)避障的范 例。在该范例中,距
离数据从平台层发送 至距离传感器,再由 VFH模块接收。 VFH模块的输出数 据包含了路径方向, 该信息直接发送到平

台层上。在平台层 上,路径方向输入至 转向算法,并生成底 层代码,然后直接发 送到驱动层上的电机 上。


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

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


图7. 用户接口层允许用 户与机器人进行交互 或显示信息
根据目标硬件不同, 软件层可能分布于多 个不同目标。 在很 多情况下,各个层都 在一个计算平台上运 行。 对于不确定的
应用程序,软件目标 为运行 Windows或 Linux系统的单 台PC。 对于需要 更为严格定时限制的 系统,软件目标为单
个处理节点,且具备 实时操作系统。
鉴于 CompactRIO (http://www.ni.com/compactrio/zhs)与NI Single- Board RIO (http://www.ni.com/singleboard/zhs)
4/4 www.ni.com
鉴于 CompactRIO (http://www.ni.com/compactrio/zhs)与NI Single- Board RIO (http://www.ni.com/singleboard/zhs)
的小体积、供电要求 和硬件架构, 它们 对于移动应用程序来 说是理想的计算平 台。驱动程序、平台 和算法层可在实时处
理器和FPGA上分 布,如图8所示,如 果需要,用户界面层 可在一台主机PC上 运行。电机驱动器或 传感器过滤器等高速
组件可在FPGA架 构上确定地运行,无 需占用处理器的时钟 周期。平台和算法层 上的中层控制代码可 以以优先循环的方式

在实时处理器上确定 地运行,而内置的以 太网硬件可将信息传 输到主机PC上生成 用户界面层。


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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值