机器人软件架构是典型的操控回路的层次集, 包括了高端核算渠道上的高档使命规划、运动操控回路以及终究的现场可编程门阵列(FPGA)。 在这中心,还有循环操控途径规划、机器人轨道、妨碍躲避和许多其他使命。 这些操控回路可在不同的核算节点(包括台式机、实时操作体系以及没有操作体系的自定制处理器)上以不同的速率运转。
在某些时分,体系中的各个部分有必要一起运转。 通常情况下,这需求在软件和渠道间预界说一个十分简略的界面—就如操控和监测方向与速度般简略。 共享软件栈的不同层次的传感器数据是一个不错的主意,但会给集成带来相当大的费事。 每个参加机器人规划的工程师或科学家的理念都有所不同,举例来说,同一个架构关于核算机科学家来说运作杰出,而在机械工程师那里或许就无法正常作业。
如图1所示,拟议的移动机器人软件架构由下列图形所表明的三至四层体系构成。 软件中的每一层只取决于特定的体系、硬件渠道或机器人的终极方针,与其上基层的内容彻底不相关。 典型的机器人软件包括驱动程序、渠道和算法层组件,而具有用户交互方法的运用包括了用户界面层(该层或许不需求彻底自主完成)。
图1. 机器人参阅架构
该典范中的架构为带有机械手臂的自主移动机器人,它能够履行途径规划、妨碍躲避和地图制作等使命。 这类机器人的运用规模在实在国际十分广泛,包括农业、物流或查找和救援。 板载传感器包括编码器、惯性丈量单元(IMU)、摄像头和多个声纳及红外(IR)传感器。 传感器聚变能够用来整合针对本地化的编码器和IMU数据 ,并界说机器人环境地图。 摄像头则用于辨认载板机械手臂捉住的物体,而机械手臂的方位由渠道层上履行的运动学算法所操控,声纳和红外传感器能够避开妨碍物。 最终,转向算法被用来操控机器人的移动,即车轮或履带的移动。 图2便是依据移动机器人架构的美国宇航局机器人。
开发人员能够凭仗NI LabVIEW 体系规划软件来完成这些移动机器人的渠道层。 LabVIEW可用于规划杂乱的机器人运用—从机械手臂延伸到自主车辆开发。 该软件提取I/O并可与多种硬件渠道集成,协助工程师和科学家提高了他们的开发功率。 NI CompactRIO 硬件渠道在机器人开发中十分常用,它包括了集成的实时处理器与FPGA技能。 LabVIEW渠道的内置功用可完成每一层之间的数据通信,经过网络传输数据并显现在PC主机上。
1. 驱动层
望文生义,驱动层首要处理机器人操控所需的底层驱动函数。 在这一层的组件取决于体系中的传感器和履行器,以及运转着驱动软件的硬件。 一般情况下,这一层的模块收集工程单位(方位,速度,力气等等)中鼓励器的设定值,生成底层信号来创立相应的触发,其间或许包括封闭这些设定值循环的代码。 相同的,该层的模块还能收集原始传感器数据,将其转化成有用的工程单位,并将传感器值传输至其它架构层。 图3中的驱动层代码便是运用LabVIEW FPGA模块 开发的,并在CompactRIO渠道的嵌入式FPGA模块上履行。 声纳、红外和电压传感器都衔接在FPGA的数字I/O引脚上,信号在接连循环结构中进行处理,这些结构在FPGA上真实的并行履行。 这些函数输出的数据被发送到渠道层进步跋涉一步处理。
图3. 传感器和鼓励器的驱动层界面
驱动层能够衔接到实践的传感器或鼓励器,或衔接环境仿真器中的I / O。 除了驱动层以外,开发人员无需修正体系中的任何层,就能在仿真和实践硬件之间进行切换 。图4为LabVIEW机器人模块 2011,它包括了依据物理学的环境仿真器,因而用户可在硬件和仿真之间切换,除了硬件I / O模块以外就无需修正任何代码。 开发人员能够运用例如LabVIEW机器人环境仿真器等东西来在软件中快速验证他们的算法。
2. 渠道层
渠道层中的代码对应了机器人的物理硬件装备。该层中底层的信息和完好的高层软件之间能够进行双向转化,频频地在驱动层和高层算法层之间切换。如图5所示,咱们运用了LabVIEW FPGA读/写结点从FPGA中承受原始红外传感器数据,而且在CompactRIO实时操控器进步行数据处理。 咱们运用LabVIEW函数将原始传感器数据转化成有用的数据—在本事例中为间隔,并判别咱们是否在4米至31米的规模之外。
图5. 渠道层在驱动层和算法层之间进行转化
3. 算法层
该层中的组件代表了机器人体系中高层的操控算法。图6出现了机器人需求完成使命,能够看到算法层中的模块收集体系信息,如方位、速度或处理后的视频图画,并依据一切反应信息作出操控决议。该层中的组件能够为机器人环境规划地图,并依据机器人周围的妨碍物规划途径。图6中的代码显现的是运用矢量场直方图(VFH)避障的典范。在该典范中,间隔数据从渠道层发送至间隔传感器,再由VFH模块接纳。VFH模块的输出数据包括了途径方向,该信息直接发送到渠道层上。在渠道层上,途径方向输入至转向算法,并生成底层代码,然后直接发送到驱动层上的电机上。
图6. 算法层依据反应信息作出操控决议
算法层组件的另一个典范是查找赤色的球状物体,并运用机械手臂将它捡起的机器人。该机器人凭仗其设定的方法,在躲避妨碍的一起探究环境——这就需求查找算法与避障算法相结合。在查找时,渠道层模块会处理图画,而且回来物体是否找到的信息。球被检测到今后,算法会生成一条运动轨道,手臂端点依据它就能捉住并捡起球体。
典范中的每个使命都具有一个高层方针,与渠道或物理硬件无关。 假如机器人具有多个高层方针,那么这一层还需包括裁定来为方针排序。
4. 用户接口层
用户接口层中的运用程序并不需求彻底独立,它为机器人和操作员供给了物理互动,或在PC主机上显现相关信息。 图7显现的是图形用户界面,上面包括板载相机上的实时图画数据,以及地图上周围妨碍的XY轴坐标。 伺服视点操控让用户能够旋转与相机衔接的板载伺服电机。 在该层中还能读取鼠标或游戏杆的输入数据,或驱动简略的文本显现。 该层中的组件,例如GUI的优先级十分低;而急停按钮等相似组件则需求以确认性的方法与代码绑缚。
依据方针硬件不同,软件层或许散布于多个不同方针。 在许多情况下,各个层都在一个核算渠道上运转。 关于不确认的运用程序,软件方针为运转Windows或Linux体系的单台PC。 关于需求更为严厉守时约束的体系,软件方针为单个处理节点,且具有实时操作体系。
鉴于 CompactRIO与NI Single-Board RIO 的小体积、供电要求和硬件架构, 它们关于移动运用程序来说是抱负的核算渠道。驱动程序、渠道和算法层可在实时处理器和FPGA上散布,如图8所示,假如需求,用户界面层可在一台主机PC上运转。电机驱动器或传感器过滤器等高速组件可在FPGA架构上确认地运转,无需占用处理器的时钟周期。渠道和算法层上的中层操控代码能够以优先循环的方法在实时处理器上确认地运转,而内置的以太网硬件可将信息传输到主机PC上生成用户界面层。
图8. 映射到CompactRIO或NI Single-Board RIO嵌入式体系的移动机器人参阅架构
文献中有关移动机器人软件架构的扼要介绍表明晰该主题还存在许多不同方法来创立机器人软件。 本文就怎么构建移动机器人软件给出了一种广义的答案;但是任何规划都需求预先作出考虑与规划,才干习惯架构。作为报答,一个界说清晰的架构有助于开发人员轻松地并行处理项目,将软件划分红清晰的界面层次。 此外,将代码划分红具有清晰的输入和输出功用模块有助于今后项目中的代码组件复用。