在机器人与自主系统的开发领域,ROS 2 已经成为事实上的标准。然而,当开发者希望将其部署到像 Zynq、FPGA 或 Kria 这样的异构硬件平台上时,整个工程的复杂度往往会急剧增加。
KRS(Kratos Robotics Stack)正是为了攻克这一难题而诞生的。它是由 Xilinx(现隶属于 AMD)官方推动的一个开源机器人软件栈,目标非常清晰:让基于 ROS 2 的机器人应用,能够以高效、可复现、工程化的方式在 Zynq 和 Kria 平台上顺畅运行。
那么,KRS 究竟是什么?
简单来说,KRS 是一个围绕“ROS 2 + FPGA 加速”构建的完整开发框架,主要面向以下几类平台和需求:
- Zynq UltraScale+ MPSoC
- Kria SOM / Kria Robotics Stack(例如 KR260)
- 任何需要利用 CPU + FPGA 异构加速能力的机器人与感知系统
值得注意的是,KRS 并非又一个独立的“ROS 发行版”。它的核心定位是一个工程化的工具集合与架构规范。通过紧密集成机器人领域的通用语言——ROS,并结合现代 C++、高级综合(HLS)技术以及参考设计,KRS 为机器人专家快速启动并推进项目提供了强大的支持。

KRS 的关键特性
以 ROS 2 为中心
对于机器人专家而言,ROS 的地位类似于 Linux 对于软件开发人员。它帮助构建机器人应用。随着 ROS 2 的成熟,其生产就绪的能力正对众多行业产生深远影响。与那些重复发明轮子的新平台不同,Xilinx 的 KRS 方案直接满足了 ROS 社区的需求,并完全基于 ROS 2 及其生态系统构建。
为了将 Xilinx 的硬件加速能力无缝引入 ROS 2 生态,并让软件包维护者能够轻松受益,Xilinx 创建了一系列针对 ROS 2 构建系统(ament)和元构建工具(colcon)的扩展。这套架构基于三大支柱,旨在最大程度减少开发者的适配工作量。

追求实时性的 ROS 2
实时性是机器人系统至关重要的端到端特性。运行在标量处理器(如 CPU)上的传统 ROS 2 应用会受到来自操作系统各层不确定性的影响。
FPGA 的优势在于能够设计出提供确定性响应的专用机器人电路。虽然可以完全依赖 FPGA 构建硬实时系统,但当需要与通常运行在 CPU 上的 ROS 2 交互时,这种确定性往往会打折扣。KRS 的目标是通过模块化的方法提供一套机制,来缓解标量处理器中的这些不确定性问题。开发者可以根据具体的用例,选择并组合特定的模块来消除或控制不确定性的来源。
一般来说,针对 CPU 的实时性解决方案可以分为两大类:a) 在相应的抽象层中设置正确的优先级;b) 应用服务质量(QoS)技术。从 OSI 模型的第二层(数据链路层,如 TSN 时间敏感网络)到 Linux 内核乃至应用层,每一层都需要进行恰当的配置,才能构建出真正具备实时响应能力的机器人系统。

面向商业化的 ROS 2 加速应用
ROS 生态汇聚了全球数千名机器人专家,他们使用 ROS 2 的抽象层来开发应用。在某种程度上,ROS 已经成为机器人领域构建行为的标准 API 和参考 SDK。许多公司也围绕开源软件包提供增值服务并回馈社区。

KRS 通过与 Xilinx 应用商店的连接,将 ROS 2 叠加工作区(overlay workspace)容器化,封装为可商业化的“机器人加速应用”。

除了扩展构建工具以简化 ROS 2 软件包的开发,KRS 还提供了额外工具来简化工作区的打包和发布流程,上图展示的便是其中一环。
KRS 的核心设计哲学
KRS 的设计思想可以概括为以下三点:
1️⃣ ROS 2 原生优先(ROS-native)
KRS 力求不改变开发者使用 ROS 2 的习惯。
- 节点、话题、消息、启动文件等全部保持与 ROS 生态一致。
- FPGA 加速能力被“封装”在标准的 ROS 2 节点之下。
- 对于上层的算法工程师而言,底层的硬件加速几乎是透明无感的。
2️⃣ 异构加速可复用(Reusable Acceleration)
KRS 将 FPGA 加速抽象为一系列可复用的组件,例如:
- 图像处理流水线
- 计算机视觉算法
- 运动规划器
- 感知与控制链路
这些加速模块可以被多个不同的 ROS 2 节点复用,从而避免了为每个应用进行一次性、不可复用的硬件工程设计。
3️⃣ 面向产品级部署(Production-ready)
KRS 从设计之初就着眼于实际产品,而非演示原型。它提供了对产品化至关重要的支持:
- 支持 Yocto / PetaLinux 定制化嵌入式 Linux 构建。
- 支持容器化(如 Docker),便于环境管理和部署。
- 支持持续集成(CI)与自动化构建流程。
- 整体面向可量产、可维护的工业级系统。
KRS 的整体架构
从官方描述来看,KRS 采用了一个清晰的三层结构:

- 上层:标准的 ROS 2 应用程序(如感知、控制算法)。
- 中层:由 KRS 提供的加速型 ROS 2 组件或节点。
- 底层:FPGA 硬件加速层,利用 Vitis、HLS 或 RTL 实现具体功能。
工具链一览
KRS 提供了一套丰富的命令行工具(通过 colcon acceleration 子命令调用)来管理整个开发流程,包括固件选择、Linux内核配置、仿真测试等,极大提升了开发效率。

总结与展望
一言以蔽之,KRS 并非简单地教你“如何使用 FPGA”,它的核心价值在于指引你“如何将 FPGA 能力自然地、工程化地融入 ROS 2 机器人系统”。
这代表了一种重要的趋势:FPGA 不再是一个孤立的硬件模块,而是正在成为 ROS 生态系统中不可或缺的一等公民。通过降低异构硬件开发的门槛,KRS 有望加速智能机器人从实验室原型到实际产品的落地进程。如果你对机器人、嵌入式系统或硬件加速感兴趣,不妨到云栈社区与更多开发者一起交流探讨。
参考资料
https://xilinx.github.io/KRS/sphinx/build/html/docs/intro.html
https://github.com/Xilinx/Vitis_Libraries