目录
驱动层
平台层
算法层
用户接口层
机器人软件架构是典 型的控制回路的层次 集, 包含了高端计 算平台上的高级任务 规划、运动控制回路 以及最终的现场可编
程门阵列 (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 嵌入式系统的移动机 器人参考架构
文献中有关移动机器 人软件架构的简要介 绍表明了该主题还存 在很多不同方法来创 建机器人软件。 本 文就如何构建移动机
器人软件给出了一种 广义的答案;然而任 何设计都需要预先作 出考虑与规划,才能 适应架构。作为回 报,一个定义明确的
架构有助于开发人员 轻松地并行处理项 目,将软件划分成明 确的界面层次。 此 外,将代码划分成具 有明确的输入和输出
功能模块有助于今后 项目中的代码组件复 用。

使用分层的方法设计 机器人软件相关推荐

  1. 1.使用适配器模式设计一个仿生机器人:要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人发声方法talk(),机器人移动方法move()等。如果希望在不改变已有Bird类代码的基础上

    1.使用适配器模式设计一个仿生机器人:要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人发声方法talk(),机器人移动方法move()等.如果希望在不改变已有Bird类代码的基础上 ...

  2. 看完这篇电磁兼容分层与综合设计法,EMC你还不懂就没救了

    摘要 按照产品在电磁兼容设计时所采取的各项措施的重要性为先后,分为若干层次进行设计,并加以综合分析进行适当调整直到完善,这就是本文提出的" 电磁兼容分层与综合设计法".可以做到电磁 ...

  3. 协作机器人_协作机器人软件开发

    协作机器人 当我遇到机器人操作系统时,我正在网上寻找具有机器人技术的开源项目. 我很感兴趣地阅读了他们的网站,因为这是我第一次看到一个专门为机器人编写代码的开源项目. 更好的是,他们正在为Ubuntu ...

  4. 20-40K| 梅卡曼德视觉算法工程师、机器人软件、相机产品经理招聘

    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁.如果你需要我们帮助你发布实习或全职岗位,请添加微信号「dddvision」. 公司介绍 梅卡曼德机器人由 ...

  5. 《领域驱动设计:软件核心复杂性应对之道(修订版)》—第2章 2.1节模式:Ubiquitous Language...

    本节书摘来自异步社区<领域驱动设计:软件核心复杂性应对之道(修订版)>一书中的第2章,第2.1节模式:Ubiquitous Language,作者[美]埃里克•埃文斯(Eric Evans ...

  6. 千鸟弹幕机器人_千鸟熊猫TV直播弹幕机器人软件

    千鸟熊猫TV弹幕机器人软件是一款非常好用的刷人气软件.对于自己喜爱新主播却没有方法帮助他们聚集人气,这时熊猫TV弹幕机器人可以派上用场啦!只需要在软件界面写好内容后就可自动后持续刷出弹幕,造成直播间人 ...

  7. java设计是什么软件下载_用Java设计下载软件

    用Java设计下载软件 HTTP 协议的简介 HTTP协议是一种超文本传输协议(Hypertext Transfer Protocol),工作于网络应用层,自1990年起广泛应用于WWW 的全球信息服 ...

  8. fir1截止频率计算_数字信号处理 实验五:FIR数字滤波器设计与软件实现

    10.5 实验五:FIR数字滤波器设计与软件实现 10.5.1 实验指导 1.实验目的 (1)掌握用窗函数法设计FIR数字滤波器的原理和方法. (2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和 ...

  9. 诺宝机器人编程入门教程_(完整)VEX 机器人软件编程教程

    1 VEX 机器人软件编程教程 一.使用注意事项 ❖ 如果是没有购买序列号的用户, 安装了软件, 打开软件时会弹出一个注册 的窗口,中文版点暂不注册按钮便可以试用.英文版点 Run in Evalua ...

  10. 引物设计软件_你的引物设计进行得如何了?这份PCR引物设计及软件使用技巧供你参考...

    点击蓝字 关注我们 自从1985年Karny Mullis发明了聚合酶链式反应以来,PCR技术已成为分子生物学研究中使用最多.最广泛的手段之一,而引物设计是PCR技术中至关重要的一环.使用不合适的PC ...

最新文章

  1. hibernate学习和各种关系总结
  2. 动态规划训练12 [G - You Are the One HDU - 4283 ]
  3. springboot启动_Spring boot启动原理解析
  4. Python sqlalchemy orm 多对多外键关联
  5. 手机相机里面的m_传玉晶光担任新款iphone后置相机广角、超广角镜头主要供应商...
  6. 两大方案,只为写出更安全的代码!
  7. Java程序员须知的七个日志管理工具
  8. 推荐一个站点:里面有很多不错的长文
  9. python 正则表达式语法
  10. mysql是slot_技术分享 | MySQL 主机该如何配置 fs.aio-max-nr
  11. AutoCAD 二次开发之 ObjectARX 环境搭建
  12. Android一键反编译工具 jadx
  13. 产品经理常见沟通问题
  14. pg数据库表存放在哪里_pg数据库系统表
  15. 物联网需要php和嵌入式吗,物联网与嵌入式两者是什么关系
  16. Recoil 的使用
  17. 网站api自己怎么写_短视频文案怎么写?看这4个素材网站就够了
  18. Java连接数据库通用的增删改操作
  19. 中科院大学计算机科学与技术王伟强,王伟强-中国科学院大学-UCAS
  20. 如何用mysql求质数_PLSQL计算质数

热门文章

  1. 计算平均指令时间_欧姆龙PLC指令应用案例(问答解析)
  2. PPT幻灯片放映计时器
  3. STM32 flash 大小
  4. 迈高图手机版_迈高图地图下载
  5. php酒店系统论文,基于PHP的酒店管理系统PHP1008(毕业设计+论文)
  6. 计算机酒店管理论文,计算机专业酒店管理系统毕业论文.doc
  7. java开发英语词典app_英语词典app哪个好 5款好用的英语词典app推荐
  8. 图解通信原理与案例分析-13:无线对讲机案例--频率调制实现语音点对点无线通信
  9. 高等数学--数学分析一
  10. FPGA 38译码器