在机器人与自主系统开发中,ROS 2 已经成为事实标准,但当它遇到 FPGA / Zynq / Kria 这类异构平台时,工程复杂度往往直线上升。
KRS(Kratos Robotics Stack) 正是为了解决这个问题而诞生的。
KRS 是一个由 Xilinx(AMD)官方推动的 开源机器人软件栈,目标非常明确:
让基于 ROS 2 的机器人应用,能够高效、可重复、工程化地运行在 Zynq 和 Kria 平台上。
先看下下面的应用视频:
🧠 什么是 KRS?
KRS(Kratos Robotics Stack) 是一个围绕 ROS 2 + FPGA 加速 构建的完整开发框架,主要面向:
-
Zynq UltraScale+ MPSoC
-
Kria SOM / Kria Robotics Stack(KR260 等)
-
需要 CPU + FPGA 异构加速 的机器人与感知系统
它并不是"又一个 ROS 发行版",而是一个 工程化工具集合 + 架构规范。
它通过与 ROS(机器人领域的通用语言)紧密集成,并结合现代 C++ 和高级综合 (HLS) 技术,以及参考开发板和设计架构,为机器人专家快速启动项目提供了可能。

KRS功能:

KRS特征
以 ROS 2 为中心
ROS之于机器人专家,正如Linux之于大多数计算机科学家和软件开发人员。它帮助机器人专家构建机器人应用程序。随着ROS 2的发布,机器人行为的生成能力已达到生产就绪状态,并有可能对众多行业产生深远影响。与那些用大量库的复制品或分支以及/或类似的机器人模拟器来重复发明轮子的新机器人平台不同,Xilinx的KRS方案满足了ROS机器人社区的需求,并基于ROS 2及其紧密集成的机器人模拟器Gazebo构建而成。

为了将 Xilinx 的硬件加速技术与 ROS 2 生态系统连接起来,并鼓励软件包维护者从中受益,Xilinx 创建了一系列 ROS 2 构建系统 ( ament) 和元构建工具 ( colcon) 的扩展,以最大限度地减少 ROS 2 软件包维护者的工作量。该架构基于三大支柱。
实时 ROS 2

实时性是机器人系统的端到端特性。运行在标量处理器(例如 CPU)上的 ROS 2 应用会受到各种不确定性因素的影响。上图展示了 OSI 模型栈中的这些不确定性因素。为了使机器人在使用 ROS 2 进行进程间、进程内或网络内信息交换时能够确定性地响应,OSI 模型栈中涉及的所有层都必须能够确定性地响应。除非所有覆盖层和底层都具有相同的时间限制,否则无法保证 ROS 2 的实时性。相应地,对于实时 ROS 2 交互,其所有层也必须是实时的。对于运行在 CPU 上的 ROS 2,需要针对每个层级解决不确定性因素。
FPGA 允许设计能够提供确定性响应的机器人电路。虽然可以仅依靠 FPGA 设计硬实时机器人系统,但当与通常运行在标量处理器 (CPU) 上的 ROS 2 进行交互时,确定性往往会受到影响。KRS 的目标是通过模块化方法提供机制来缓解标量处理器中所有这些不确定性问题。可以根据具体用例,优先选择并使用特定模块来消除所需的不确定性来源,并调整缓解措施。
一般来说,CPU 实时问题的解决方案可分为两大类:a) 在相应的抽象层中设置正确的优先级;b) 应用服务质量 (QoS) 技术。每一层都有其自身的 QoS 方法。在 OSI 模型第二层(OSI 2 层),有 IEEE 802.1Q 标准中规定的成熟 QoS 技术,以及诸如时间敏感网络 (TSN) 标准等新技术。对于 Linux 网络协议栈(OSI 模型第三层和第四层),流量控制允许配置 QoS 方法。类似地,从 Linux 内核到应用程序库,每一层都需要配置为限制最大延迟,才能使机器人系统具备实时能力。
ROS 2 加速应用
ROS 生态系统汇聚了全球数千名机器人专家,他们使用 ROS 2 抽象层开发机器人应用程序。从某种意义上说,ROS 是机器人专家构建机器人行为时常用的 API,也是机器人领域的参考软件开发工具包 (SDK)。随着机器人领域混合源代码技术生态系统的出现,在 ROS 领域,已经有许多公司围绕开源软件包提供价值,并回馈社区。

通过与 Xilinx 应用商店的连接,KRS 将 ROS 2 叠加工作区容器化为机器人加速应用。

除了扩展 ROS 2 构建系统和工具以简化 ROS 2 软件包的货币化过程外,KRS 还提供了额外的工具和扩展,以简化 ROS 2 overlay 工作区的打包和发布到 Xilinx 应用商店的过程。上面的 subverb 展示了其中一个这样的工具。
KRS 的核心理念
KRS 的设计思想可以总结为三点:
1️⃣ ROS 2 原生优先(ROS-native)

不改变 ROS 2 的使用方式
节点、话题、消息、launch 文件全部保持 ROS 生态一致
FPGA 加速被"封装"在 ROS 2 节点之下
👉 对上层算法工程师 几乎无感知
2️⃣ 异构加速可重用(Reusable Acceleration)
KRS 将 FPGA 加速抽象为 可复用组件:
图像处理
计算机视觉
运动规划
感知与控制链路
这些加速模块可以被多个 ROS 2 节点复用,而不是"一次性工程"。
3️⃣ 面向产品级部署(Production-ready)
KRS 从一开始就不是 Demo 导向,而是:
支持 Yocto / PetaLinux
支持容器化(Docker)
支持 CI / 自动化构建
面向 可量产、可维护系统
KRS 的整体架构
从官方文档来看,KRS 的结构大致分为三层:

上层:标准 ROS 2 应用
中层:KRS 提供的加速 ROS 2 组件
底层:FPGA 硬件加速(Vitis、HLS、RTL)
参考资料
https://xilinx.github.io/KRS/sphinx/build/html/docs/intro.html
https://github.com/Xilinx/Vitis_Libraries
✅ 总结一句话
KRS 不是教你"怎么用 FPGA",而是教你"如何把 FPGA 自然地用进 ROS 2 机器人系统"。
它代表了一种趋势:
FPGA 不再是孤立的硬件模块,而是 ROS 生态中的一等公民。
关于这个机器人的项目,我们后面展开聊聊:
