迈向机器人的分布式实时框架

实时机器人应用的ROS 2.0通信评估

本文的内容来自 https://arxiv.org/pdf/1809.02595.pdf上的 实时Linux通信:对实时机器人应用程序的Linux通信堆栈的评估与Carlos San VicenteGutiérrez,Lander Usategui San Juan和 Irati Zamalloa Ugarte 一起写作的同er

实验装置概述。
在这项工作中,我们提供了一个实验性设置,以展示ROS 2.0在实时机器人应用中的适用性。 我们在Linux之上的机器人内部组件(硬件)通信案例中公开了对ROS 2.0通信的评估。 我们对最坏情况的延迟进行了基准测试,并研究了错过的最后期限,以表征用于实时应用的ROS 2.0通信。 我们通过实验证明了计算和网络拥塞如何影响通信延迟,并最终提出了一种在特定条件下减轻这些延迟并获得有限流量的设置

介绍

在机器人系统中,通常需要在严格的时间要求下执行任务。 例如,在移动机器人的情况下,如果控制器必须响应外部事件,则过多的延迟可能会导致不良后果。 此外,如果机器人以一定速度运动并且需要避开障碍物,则它必须检测到该障碍并在一定时间内停止或校正其轨迹。 否则,可能会冲突并破坏所需任务的执行。 这种情况在机器人技术中相当普遍,必须在定义良好的时序约束中执行,而时序约束通常需要实时功能。 此类系统通常具有时序要求,以通过机器人的内部网络执行任务或交换数据,这在分布式系统中很常见。 例如,机器人操作系统(ROS)[1]就是这种情况。 不满足时序要求意味着,要么系统行为下降,要么导致系统故障。

可以根据满足相应时序约束的关键程度对实时系统进行分类。 对于硬实时系统,错过最后期限被视为系统故障。 这种实时系统的示例是防抱死制动系统或飞机控制系统。 另一方面,公司的实时系统更加宽松。 在错过最后期限后交付的信息或计算被认为是无效的,但不一定会导致系统故障。 在这种情况下,缺少最后期限可能会降低系统性能。 换句话说,系统在出现故障之前可以容忍一定数量的错过的最后期限。 公司实时系统的示例包括大多数专业和工业机器人控制系统,例如协作机器人手臂,空中机器人自动驾驶仪或大多数移动机器人(包括自动驾驶汽车)的控制环。
最后,在实时性较差的情况下,错过最后期限(即使延迟交付)仍然有用。 这意味着软实时系统不一定会由于错过最后期限而失败,而是会降低实时任务在执行中的实用性。 软实时系统的示例是任何类型的远程呈现机器人(音频,视频等)。

随着ROS成为开发机器人应用程序的标准软件基础结构,ROS社区对在框架中包含实时功能的需求日益增长。 作为响应,ROS 2.0的创建是为了能够提供实时性能,但是,如先前的工作[2]和[3]所述,ROS 2.0本身需要适当的元素来包围,以提供完整的分布式机器人的实时解决方案。

对于分布式实时系统,通信需要提供服务质量(QoS)功能,以确保确定性的端到端通信。 ROS 2通信使用数据分发服务(DDS)作为其通信中间件。 DDS包含可配置的QoS参数,可以针对实时应用进行调整。 通常,DDS分发使用实时发布订阅协议(RTPS)作为传输协议,该协议封装了众所周知的用户数据报协议(UDP)。 在基于Linux的系统中,DDS实现通常使用Linux网络堆栈(LNS)进行以太网通信。

在先前的工作[2]中,我们分析了第2层服务质量(QoS)技术的使用,例如包优先级和时间敏感网络(TSN)调度机制,以将以太网交换网络中的端到端延迟绑定在一起。 在[3]中,我们分析了Linux PREEMPT-RT内核中LNS的实时性能,并观察了在混合关键流量情况下LNS上确定性通信的一些当前限制。 下一步的逻辑步骤是分析通过以太网的PREEEMPT-RT内核中ROS 2.0通信的实时性能。 先前研究ROS 2.0通信性能的工作[4]显示了可喜的结果并讨论了未来的改进。 但是,上述研究并未探讨ROS 2.0在实时应用中的适用性,并且该评估未在嵌入式平台上进行。

在这项工作中,我们专注于在机器人内部组件间通信用例中对ROS 2.0通信的评估。 为此,我们将介绍一个设置和一组基准,在这里我们将测量在不同静态负载条件下运行的两个ROS 2.0节点的端到端延迟。 我们将把注意力集中在最坏情况的延迟和错过的截止日期上,以观察ROS 2.0通信在实时应用中的适用性。 我们还将尝试展示ROS 2.0流量延迟中不同压力条件的影响。 最终,我们试图找到一种合适的配置来改善ROS 2.0的确定性,并为嵌入式平台中的此类设置建立限制。

有点背景

ROS 2堆栈概述,用于通过以太网进行机器对机器通信

ROS是用于开发机器人应用程序的框架。 一个装有机器人实用程序的工具箱,例如包括标准消息定义的通信基础结构,用于各种软件和硬件组件的驱动程序,用于诊断,导航,操纵的库等。 总而言之,ROS简化了在各种机器人平台上创建复杂而强大的机器人行为的任务。 ROS 2.0是ROS的新版本,它扩展了最初的概念(最初旨在纯粹用于研究目的),旨在为涉及机器人团队,实时系统或生产环境等的情况提供分布式和模块化的解决方案。 在ROS 2.0中引入的技术新颖性中,Open Robotics探索了ROS 2.0通信系统的几种选择。 由于与其他解决方案相比,DDS中间件的特性和优势,他们决定使用DDS中间件。 如[5]中所述,使用端对端中间件(例如DDS)的好处是维护的代码更少。 DDS在ROS 2.0中用作通信中间件,并且通常作为用户空间代码运行。 即使DDS具有指定的标准,第三方也可以审核审核,并以不同程度的互操作性实施中间件。

如技术报告[6]中指出的那样,要具有实时性能,既需要确定性的用户代码,也需要实时操作系统。 在我们的案例中,我们将使用PREEMPT-RT修补的Linux内核作为实验的操作系统核心。 遵循PREEMPT-RT的编程指南并采用合适的内核配置,其他作者[7]证明有可能实现10到100微秒之间的系统等待时间响应。

通常,默认情况下,DDS实现使用Linux网络堆栈(LNS)作为传输和网络层。 这使LNS成为ROS 2.0性能的关键部分。 但是,网络堆栈并未针对有限的延迟进行优化,而是针对给定时刻的吞吐量进行了优化。 换句话说,由于网络堆栈的当前状态,将存在一些限制。 不过,LNS提供了QoS机制和线程调整,可在内核级别改善关键流量的确定性。

Linux内核中如何处理数据包的重要部分实际上与如何处理硬件中断有关。 在普通的Linux内核中,硬件中断分为两个阶段。 首先,在触发中断时调用一个中断服务例程(ISR),然后,硬件中断得到确认,工作被推迟以待稍后执行。 在第二阶段,稍后执行软中断或“下半部分”以处理来自硬件设备的数据。 在PREEMPT-RT内核中,大多数ISR被迫在专门为中断创建的线程中运行。 这些线程称为IRQ线程[8]。 通过将IRQ作为内核线程处理,PREEMPT-RT内核允许将IRQ调度为用户任务,从而设置优先级和CPU亲和力,以分别进行管理。 线程中运行的IRQ处理程序本身可以被中断,因此可以减少由于中断引起的延迟。 为了我们的特殊利益,由于我们的应用程序需要发送关键流量,因此可以将以太网中断线程的优先级设置为高于其他IRQ线程,以改善网络确定性。

普通内核和PREEMPT-RT内核之间的另一个重要区别是在执行softirq的上下文中。 从内核版本3.6.1-rt1开始,软IRQ处理程序在引发该软IRQ [9]的线程的上下文中执行。 因此,通常在网络设备IRQ线程的上下文中执行NET_RX软IRQ,它是用于接收网络数据包的软irq。 这允许对网络处理上下文进行精细控制。 但是,如果网络IRQ线程被抢占或耗尽NAPI权重时间片,则以ksoftirqd / n(其中n是CPU的逻辑数)执行该线程。

在ksoftirqd / n上下文中处理数据包对于实时性很麻烦,因为该线程被不同的进程用于延迟的工作,并且会增加延迟。 另外,由于ksoftirqd线程以SCHED_OTHER策略运行,因此可以很容易地抢先使用它。 实际上,软IRQ通常是在以太网IRQ线程和ksoftirqd / n线程的上下文中执行的,用于高网络负载和高压力(CPU,内存,I / O等)。 这里的结论是,在正常情况下,我们可以预期合理的确定性行为,但是如果网络和系统已加载,则延迟会大大增加。

潜入结果

在整个实验测试中,获得了以下结果。 可以在原始出版物中获得详细信息:

RT设置在不同系统负载下的影响。 a)没有附加负载且没有RT设置的系统。 b)系统在没有RT设置的负载下。 c)没有附加负载和RT设置的系统。 d)系统在负载和RT设置下。

阅读完整的文章, 网址https://arxiv.org/pdf/1809.02595.pdf

参考资料

[1] M. Quigley,K。Conley,B。Gerkey,J。Faust,T。Foote,J。Leibs,R。Wheeler和AY Ng,“罗斯:开源机器人操作系统”,在ICRA研讨会上在开源软件上,第 3号 3.2。 日本神户,2009年,第2页。 5,

[2] CSVGutiérrez,LUS Juan,IZ Ugarte和VM Vilches,“机器人的时间敏感网络”,CoRR,第1卷。 abs / 1804.07643,2018. [在线]。 可用: http//arxiv.org/abs/1804.07643

[3] CSVGutiérrez,L。Usategui San Juan,I。Zamalloa Ugarte和V. Mayoral Vilches,“实时Linux通信:对用于实时机器人应用程序的Linux通信堆栈的评估”,ArXiv电子版, 2018年8月。

[4] Y. Maruyama,S。Kato和T. Azumi,“探索ros2的性能”,在2016年嵌入式软件国际会议(EMSOFT)上,2016年10月,第1-10页。

[5]“ Ros 2.0设计”, http ://design.ros2.org/ 访问:2018-07-27。

[6]“实时系统简介”, http ://design.ros2.org/articles/realtime_background.html,访问:2018–04–12。

[7] F. Cerqueira和BB Brandenburg,“ Linux,抢占rt和石蕊rt中调度延迟的比较。”

[8] J. Edge,“将中断移至线程”,2008年10月,[访问:2018年4月12日]。 [线上]。 可用: https : //lwn.net/Articles/302043/

[9] J. Corbet,“软件中断和实时”,2012年10月,[访问时间:2018年4月12日]。 [线上]。 可用: https: //lwn.net/Articles/ 520076 /

翻译自: https://hackernoon.com/towards-a-distributed-and-real-time-framework-for-robots-469ba77d6c42

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值