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

实时机器人应用的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堆栈概述,用于通过以太网进行机器对机器通信

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

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8739 人正在系统学习中 相关资源:迈创Matrox G200eV

来源:dfsgwe1231

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年8月5日
下一篇 2018年8月5日

相关推荐