目录
实时系统介绍
最近准备将之前开发的应用从 TX2 移植到 S32V 上,实验室同学负责 RTLinux 的移植以及 ROS2 到 RTLinux 的移植,我则负责将软件从 ROS1 迁移到 ROS2 上,并针对部分应用开发实时版本。这一方面是为了保证部分应用的执行是确定(determinism)的,另一方面也是为了提高编写的自动驾驶应用的质量,更合理地利用开发板硬件资源。因此,这里就把我最近学习实时应用编程的一些知识整理成文档以便日后查阅以及探讨学习。
本文将从实时计算的定义、实时应用编程的注意事项、ROS2 对实时应用编程的支持进行介绍,最后对本文的主要内容做一个总结。
实时计算的定义
这部分主要会介绍实时系统中的关键术语、理解实时系统时的两个注意事项以及实时系统的分类[1]。
关键术语
首先介绍实时系统中的几个关键术语,对于从概念上直观了解实时系统的特点还是有帮助的。
Determinism
: 给定一个已知输入,一个确定性系统的输出永远都是相同的,而非确定性系统的输出则可能存在随机变化。Deadline
: 一个特定任务必须在 deadline 规定的有限时间窗口内完成Quality of Service
: 描述网络的整体性能,包括:带宽、吞吐量、可用性、抖动率