找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2740

积分

0

好友

385

主题
发表于 16 小时前 | 查看: 1| 回复: 0

在机器人与自主系统的开发领域,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分层系统架构图:从硬件到应用

KRS 的关键特性

以 ROS 2 为中心

对于机器人专家而言,ROS 的地位类似于 Linux 对于软件开发人员。它帮助构建机器人应用。随着 ROS 2 的成熟,其生产就绪的能力正对众多行业产生深远影响。与那些重复发明轮子的新平台不同,Xilinx 的 KRS 方案直接满足了 ROS 社区的需求,并完全基于 ROS 2 及其生态系统构建。

为了将 Xilinx 的硬件加速能力无缝引入 ROS 2 生态,并让软件包维护者能够轻松受益,Xilinx 创建了一系列针对 ROS 2 构建系统(ament)和元构建工具(colcon)的扩展。这套架构基于三大支柱,旨在最大程度减少开发者的适配工作量。

KRS构建流程与组件关系图

追求实时性的 ROS 2

实时性是机器人系统至关重要的端到端特性。运行在标量处理器(如 CPU)上的传统 ROS 2 应用会受到来自操作系统各层不确定性的影响。

FPGA 的优势在于能够设计出提供确定性响应的专用机器人电路。虽然可以完全依赖 FPGA 构建硬实时系统,但当需要与通常运行在 CPU 上的 ROS 2 交互时,这种确定性往往会打折扣。KRS 的目标是通过模块化的方法提供一套机制,来缓解标量处理器中的这些不确定性问题。开发者可以根据具体的用例,选择并组合特定的模块来消除或控制不确定性的来源。

一般来说,针对 CPU 的实时性解决方案可以分为两大类:a) 在相应的抽象层中设置正确的优先级;b) 应用服务质量(QoS)技术。从 OSI 模型的第二层(数据链路层,如 TSN 时间敏感网络)到 Linux 内核乃至应用层,每一层都需要进行恰当的配置,才能构建出真正具备实时响应能力的机器人系统。

OSI模型各层不确定性分析图

面向商业化的 ROS 2 加速应用

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

机器人加速应用与Xilinx平台集成架构图

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

从开发到部署Xilinx应用商店的完整流程

除了扩展构建工具以简化 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 采用了一个清晰的三层结构:

KRS三层架构:应用、组件、硬件加速

  1. 上层:标准的 ROS 2 应用程序(如感知、控制算法)。
  2. 中层:由 KRS 提供的加速型 ROS 2 组件或节点。
  3. 底层:FPGA 硬件加速层,利用 Vitis、HLS 或 RTL 实现具体功能。

工具链一览

KRS 提供了一套丰富的命令行工具(通过 colcon acceleration 子命令调用)来管理整个开发流程,包括固件选择、Linux内核配置、仿真测试等,极大提升了开发效率。

KRS命令行工具功能速查表

总结与展望

一言以蔽之,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




上一篇:实战踩坑:eBPF LRU哈希映射为何让人又爱又恨?数据丢失与死锁问题剖析
下一篇:CEPH集群慢操作告警:在PVE环境中更换指定WAL与DB的OSD硬盘
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-27 19:32 , Processed in 0.392880 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表