KRS(Kratos Robotics Stack):让 Zynq / FPGA 机器人开发真正“跑”起来

在机器人与自主系统开发中,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 生态中的一等公民。

关于这个机器人的项目,我们后面展开聊聊:

Read more

端口映射问题解决:确保WebUI页面正常访问

端口映射问题解决:确保WebUI页面正常访问 1. 问题背景与核心目标 在使用 cv_unet_image-matting图像抠图 webui二次开发构建by科哥 这类AI镜像时,一个常见但关键的问题是:WebUI界面无法通过浏览器正常访问。尽管服务已在后台运行,用户仍可能遇到连接超时、拒绝访问或空白页面等问题。 根本原因通常出在端口映射配置不当。该镜像默认通过 Flask 框架启动 Web 服务并监听 7860 端口,若未正确暴露或映射此端口,外部设备将无法访问本地运行的 UI 界面。 本文旨在帮助你快速定位并解决端口映射问题,确保 WebUI 页面稳定可访问。无论你是刚部署完镜像的新手,还是正在调试容器化环境的开发者,都能从中获得实用的操作指导和排查思路。 2. 理解端口映射的基本原理 2.1 什么是端口映射? 简单来说,端口映射就是把主机(Host)上的某个网络端口“转发”到容器(Container)内部的服务端口上。 举个生活中的例子: 就像一栋大楼只有一个对外门牌号(公网IP)

快学快用系列:一文学会java后端WebApi开发

快学快用系列:一文学会java后端WebApi开发

文章目录 * 第一部分:Web API开发基础概念 * 1.1 什么是Web API * 1.2 RESTful API设计原则 * 第二部分:开发环境搭建 * 2.1 环境要求 * 2.2 创建Spring Boot项目 * 2.3 配置文件 * 第三部分:项目架构设计 * 3.1 分层架构 * 3.2 包结构设计 * 第四部分:数据模型设计 * 4.1 实体类设计 * 4.2 DTO设计 * 第五部分:数据访问层实现 * 5.1 Repository接口 * 5.2 自定义Repository实现 * 第六部分:业务逻辑层实现

Android WebView 版本升级方案详解

Android WebView 版本升级方案详解 目录 1. 问题背景 2. WebViewUpgrade 项目介绍 3. 升级方法详解 4. 替代方案对比 5. 接入与使用步骤 6. 注意事项与限制 7. 总结与建议 问题背景 WebView 版本差异带来的问题 Android 5.0 以后,WebView 升级需要去 Google Play 安装 APK,但即使安装了也不一定能正常工作。像华为、Amazon 等特殊机型的 WebView 的 Chromium 版本一般比较低,只能使用它自己的 WebView,无法使用 Google 的 WebView。 典型问题场景 H.265 视频播放问题:

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用