《使用分层的方法设计机器人软件.docx》由会员分享,可在线阅读,更多相关《使用分层的方法设计机器人软件.docx(6页珍藏版)》请在优知文库上搜索。
1、机器人软件架构使用分层的方法设计机器人软件名目1 .驱动层2 .平台层3 .算法层4 .用户接口层机器人软件架构是典型的掌握回路的层次集,包含了高端计算平台上的高级任务规划、运动掌握回路以及最终的现场可编程门阵列(FPGA)。在这中间,还有循环掌握路径规划、机器人轨迹、障碍避让和很多其他任务。这些掌握回路可在不同的计算节点(包括台式机、实时操作系统以及没有操作系统的自定制处理器)上以不同的速率运行。在某些时候,系统中的各个部分必需一同运行。通常状况下,这需要在软件和平台间预定义一个特别简洁的界面一就如掌握和监测方向与速度般简洁。共享软件栈的不同层次的传感器数据是个不错的想法,但会给集成带来相当
2、大的麻烦。每个参加机器人设计的工程册或科学家的理念都有所不同,举例来说,同一个架构对于计算机科学家来说运作良好,而在机械工程师那里可能就无法正常工作。如图1所示,拟议的移动机器人软件架构由下列图形所表示的三至四层系统构成。软件中的每一层只取决于特定的系统、硬件平台或机器人的终极目标,与其上下层的内容完全不相关。典型的机器人软件包括驱动程序、平台和算法层组件,而具备用户交互形式的应用包含了用户界面层(该层可能不需要完全自主实现)。-UserVideo or ImageDisplayRobot HealthDisplaySensor DataDisplay(/)Tele-operationoInt
3、erfaceLayerAlgorithmLayerPath PlanningObstacleAvoidanceMapping &LocalizationTask DefinitionPlatformLayerSensor Fusion Image Processing KinematicsSensor InterfaceActuatorInterfaceDriverLayer图1.机器人参考架构该范例中的架构为带有机械手臂的自主移动机器人,它能够执行路径规划、障碍避让和地图绘制等任务。这类机器人的应用范围在真实世界特别广泛,包括农业、物流或搜寻和救援。板载传感器包括编码器、惯性测量单元(IMU
4、),摄像头和多个声纳及红外(IR)传感器。传感器聚变可以用来整合针对本地化的编码器和IMU数据,并定义机器人环境地图。摄像头则用于识别载板机械手臂握住的物体,而机械手臂的位置由平台层上执行的运动学算法所掌握,声纳和红外传感器可以避开障碍物。最终,转向算法被用来掌握机器人的移动,即车轮或履带的移动。图2就是基于移动机器人架构的美国宇航局机器人。图2.SuperDroidRobots设计的移动机器人开发人员可以借助NILabVIEW系统设计软件来实现这些移动机器人的平台层。LabVIEW可用于设计简单的机器人应用一从机械手臂延长到自主车辆开发。该软件提取I/O并可与多种硬件平台集成,关心工程师和科
5、学家提高了他们的开发效率。NlComPaCtRQ硬件平台在机器人开发中特别常用,它包括了集成的实时处理器与FPGA技术。LabVlEW平台的内置功能可实现每一层之间的数据通信,通过网络传输数据并显示在PC主机上。1 .驱动层顾名思义,驱动层主要处理机器人操控所需的底层驱动函数。在这一层的组件取决于系统中的传感器和执行器,以及运行着驱动软件的硬件。一般状况下,这一层的模块采集工程单位(位置,速度,力气等等)中激励器的设定值,生成底层信号来创建相应的触发,其中可能包括关闭这些设定值循环的代码。同样的,该层的模块还能采集原始传感器数据,将其转换成有用的工程单位,并将传感器值传输至其它架构层。图3中的
6、驱动层代码就是使用LabVIEWFPGA模块开发的,并在CompactRIO平台的嵌入式FPGA模块上执行。声纳、红外和电压传感器都连接在FPGA的数字I/O引脚上,信号在连续循环结构中进行处理,这些结构在FPGA上真正的并行执行。这些函数输出的数据被发送到平台层上进行进一步处理。SonarI。Pea怦 JvUSOnar 2 E99erSonartngger 2 rmI ft 1 Sonar trigger 11JVU Sonar 1 triggerIR read loopLlRearIR (volts) eAARear IR*i , Sonarl (in)Sonar 2 (in)图3.传感器
7、和激励器的驱动层界面驱动层可以连接到实际的传感器或激励器,或连接环境仿真器中的I/O。除了驱动层以外,开发人员无需修改系统中的任何层,就能在仿真和实际硬件之间进行切换0图4为LabVIEW机器人模块2022,它包含了基于物理学的环境仿真器,因此用户可在硬件和仿真之间切换,除了硬件1/0模块以外就无需修改任何代码。开发人员可以使用例如LabVIEW机器人环境仿真器等工具来在软件中快速验证他们的算法。图4.假如需要进行仿真,必需要在驱动层中使用环境仿真器。2 .平台层平台层中的代码对应了机器人的物理硬件配置。该层中底层的信息和完整的高层软件之间能够进行双向转换,频繁地在驱动层和高层算法层之间切换。
8、如图5所示,我们使用了LabVlEWFPGA读/写结点从FPGA中接受原始红外传感器数据,并且在CompactRIO实时掌握器上进行数据处理。我们使用LabVlEW函数将原始传感器数据转换成有用的数据一在本案例中为距离,并推断我们是否在4米至31米的范围之外。Calibrate IR?DzERearIR (VOft5) Calibration ParametersDC;Rear distance (m)IR rangeIR distance chart图5.平台层在驱动层和算法层之间进行转换3 .算法层该层中的组件代表了机器人系统中高层的掌握算法。图6呈现了机器人需要完成任务,可以看到算法层中
9、的模块采集系统信息,如位置、速度或处理后的视频图像,并基于全部反馈信息作出掌握打算。该层中的组件能够为机器人环境规划地图,并依据机器人四周的障碍物规划路径。图6中的代码显示的是使用矢量场直方图(VFH)避障的范例。在该范例中,距离数据从平台层发送至距离传感器,再由VFH模块接收。VFH模块的输出数据包含了路径方向,该信息直接发送到平台层上。在平台层上,路径方向输入至转向算法,并生成底层代码,然后直接发送到驱动层上的电机上。图6.算法层依据反馈信息作出掌握打算算法层组件的另一个范例是搜寻红色的球状物体,并使用机械手臂将它捡起的机器人。该机器人凭借其设定的方式,在避让障碍的同时探究环境一这就需要搜
10、寻算法与避障算法相结合。在搜寻时,平台层模块会处理图像,并且返回物体是否找到的信息。球被检测到以后,算法会生成一条运动轨迹,手臂端点依据它就能抓住并捡起球体。范例中的每个任务都具有一个高层目标,与平台或物理硬件无关。假如机器人拥有多个高层目标,那么这一层还豳包含仲裁来为目标排序。4 .用户接口层用户接口层中的应用程序并不需要完全独立,它为机器人和操作员供应了物理互动,或在PC主机上显示相关信息。图7显示的是图形用户界面,上面包含板载相机上的实时图像数据,以及地图上四周障碍的XY轴坐标。伺服角度掌握让用户可以旋转与相机连接的板载伺服电机.在该层中还能读取鼠标或嬉戏杆的输入数据,或驱动简洁的文本显
11、示。该层中的组件,例如GUl的优先级特别低;而急停按钮等类似组件则需要以确定性的方式与代码捆绑。图7.用户接口层允许用户与机器人进行交互或显示信息依据目标硬件不同,软件层可能分布于多个不同目标。在很多状况下,各个层都在一个计算平台上运行。对于不确定的应用程序,软件目标为运行WindOWS或LinLIX系统的单台PC0对于需要更为严格定时限制的系统,软件目标为单个处理节点,且具备实时操作系统。鉴于CompactRIO与NISingle-BoardRIO的小体积、供电要求和硬件架构,它们对于移动应用程序来说是抱负的计算平台。驱动程序、平台和算法层可在实时处理器和FPGA上分布,如图8所示,假如需要
12、,用户界面层可在一台主机PC上运行。电机驱动器或传感器过滤器等高速组件可在FPGA架构上确定地运行,无需占用处理器的时钟周期。平台和算法层上的中层掌握代码可以以优先循环的方式在实时处理器上确定地运行,而内置的以太网硬件可将信息传输到主机PC上生成用户界面层。User interface LayerHost PCAlgorithm&PlatformLayersEmbeddedProcessorDriverLayerProgrammableFPGAanddirectconnectivitytoI/O图8.映射到CompactRIO或NISingle-BoardRIO嵌入式系统的移动机翳人参考架构文献中有关移动机器人软件架构的简要介绍表明白该主题还存在很多不同方法来创建机器人软件。本文就如何构建移动机器人软件给出了一种广义的答案:然而任何设计都需要预先作出考虑与规划,才能适应架构。作为回报,一个定义明确的架构有助于开发人员轻松地并行处理项目,将软件划分成明确的界面层次。此外,将代码划分成具有明确的输入和输出功能模块有助于今后项目中的代码组件复用。了解更多自主和机器人设计系统