> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 机器人镜像与 overlay

> 机器人镜像是一个独立的 Qualcomm Linux 产品,拥有自己的发行版、meta 层、内核变更和镜像配方。你无法将机器人 overlay 添加到标准的 QLI 2.0 镜像上。

**机器人镜像**是 QIR SDK 的操作系统交付物。它是一个独立的 Qualcomm Linux 产品:它使用自己的 Yocto 发行版、自己的 meta 层、自己的内核配置和设备树补丁,以及自己的镜像配方构建而成。它**不是**在标准 Qualcomm Linux(QLI)2.0 镜像上添加几个 ROS 软件包。

<Warning>
  你不能拿一个标准 QLI 2.0 镜像然后"直接添加机器人 overlay"。机器人镜像使用不同的发行版、内核、设备树、overlay 配置和 meta 层。复现它所需的构建时变更在下面的[为什么不能直接添加机器人 overlay](#why-you-cannot-just-add-the-robotics-overlays) 中列出。
</Warning>

## 机器人镜像与标准 QLI 2.0 镜像的区别

这些差异是结构性的,而非简单叠加:

| 方面           | 标准 QLI 2.0 镜像                                                 | 机器人镜像                                                                                                            |
| ------------ | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| 发行版 (DISTRO) | `qcom-distro`                                                 | `qcom-robotics-distro` / `qcom-robotics-ros2-jazzy`,它需要 `qcom-distro.conf` 并将 `ros2-jazzy` 追加到 `DISTRO_FEATURES` |
| Meta 层       | `meta-qcom` BSP 层                                             | 添加 `meta-qcom-robotics-sdk`(标签 `qli-2.0`),它将 Qualcomm Linux 1.0 的三个机器人层整合为一个                                     |
| 内核           | Qualcomm Linux 内核                                             | 相同的基础内核,外加机器人层的内核配置片段和设备树(DTS)补丁;你需要选择一个内核提供者(`linux-qcom-6.18` 或实时版 `linux-qcom-rt-6.18`)                       |
| 镜像配方         | `qcom-multimedia-image` / `qcom-multimedia-proprietary-image` | `qcom-robotics-image` / `qcom-robotics-proprietary-image`                                                        |
| ROS 2        | 不包含                                                           | ROS 2 Jazzy 加上 `qrb-ros` 软件包,以及 Navigation2、MoveIt 和 Cartographer 的配方适配                                          |

你可以在已刷写的设备上确认正在运行的发行版:

```bash theme={null}
cat /etc/os-release
# ID=qcom-robotics-ros2-jazzy
# NAME="Qualcomm Linux Robotics Reference Distro with ROS"
```

## 两种机器人镜像配方

QIR SDK 提供两种镜像配方,分别使用不同的 Qualcomm Linux **overlay 配置**构建。Overlay 是模块化的、附加价值的 Qualcomm 技术栈(摄像头、视频、音频、图形、传感器、视觉),它们与上游组件集成,让你在上游技术栈和 Qualcomm 技术栈之间进行选择。有关 overlay 机制本身,参见[使用 overlay 配置派生镜像配方](/zh/Key-Documents/Migration-Guide/use-overlay-configurations-to-derive-image-recipes)。

| 镜像配方                              | Overlay 配置 | 内容                                                                                                                      |
| --------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------- |
| `qcom-robotics-image`             | 配置 1(上游)   | 开源镜像:ROS 2 Jazzy、开源 `qrb-ros` 软件包、仿真示例、第三方驱动,以及 QIR SDK 产物。无专有依赖。                                                       |
| `qcom-robotics-proprietary-image` | 配置 2(专有)   | 包含 `qcom-robotics-image` 中的全部内容,外加依赖 Qualcomm 专有库的 `qrb-ros` 软件包(摄像头、视频、音频和色彩空间转换)以及所有 AI 示例应用。这是 Qualcomm 以预构建形式发布的镜像。 |

## 为什么不能直接添加机器人 overlay

机器人 overlay 不是可以直接安装到成品根文件系统上的软件包集合。复现机器人镜像需要在构建时完成以下所有工作:

1. **添加 `meta-qcom-robotics-sdk` 层**(克隆标签 `qli-2.0`)并使用 KAS 驱动构建。标准的 multimedia KAS 片段不包含它。
2. **切换发行版**到 `qcom-robotics-distro` / `qcom-robotics-ros2-jazzy`,它会将 `ros2-jazzy` 特性引入 `DISTRO_FEATURES`。标准的 `qcom-distro` 构建没有任何 ROS 发行版特性。
3. \*\*选择内核提供者并接受机器人内核变更。\*\*该层的 `recipe-kernel` bbappend 会添加内核配置片段和设备树(DTS)补丁,并且你需要选择 `linux-qcom-6.18` 或实时版 `linux-qcom-rt-6.18`。这会重新给内核和设备树打补丁,无法通过向预构建 rootfs 安装软件包来实现。
4. **使用匹配的 overlay 配置构建正确的镜像配方**,然后在设备上启用 overlay。设备端的启用包括驱动模块黑名单,以及针对摄像头将 `VendorDtbOverlays` EFI 变量设置为 `camx`。参见 [Overlay 功能与驱动模块黑名单](/zh/Key-Documents/Migration-Guide/overlay-functionality-and-driver-module-blacklisting-overview)。
5. \*\*引入 ROS 2 技术栈及其适配:\*\*ROS 2 Jazzy 加上 `qrb-ros`、Navigation2、MoveIt 和 Cartographer 配方以及 `.bbappend` 适配,这些都是标准镜像既不声明也不构建的。

有关 Qualcomm Linux 2.0 中底层平台、内核和设备树的变更,参见 [Qualcomm Linux 内核的变更](/zh/Key-Documents/Migration-Guide/changes-in-the-qualcomm-linux-kernel)。

## 如何获取机器人镜像

### 使用预构建镜像(推荐)

刷写预构建的机器人镜像是最快且推荐的路径。

| 步骤                      | 页面                                                                           |
| ----------------------- | ---------------------------------------------------------------------------- |
| 下载预构建软件包                | [下载预构建软件包](/zh/SDKs/QIR-SDK-2.0/download-the-prebuilt-packages)              |
| 使用 Qualcomm Launcher 刷写 | [使用 Qualcomm Launcher 刷写](/zh/SDKs/QIR-SDK-2.0/flash-with-qualcomm-launcher) |
| 通过 QDL 刷写               | [刷写机器人镜像](/zh/SDKs/QIR-SDK-2.0/flash-the-robotics-image)                     |
| 设置环境                    | [设置运行示例应用的环境](/zh/SDKs/QIR-SDK-2.0/set-up-env-for-sample-app)                |

### 自行构建(可选)

<Note>
  重新构建 QIR SDK 较为复杂,大多数开发者并不需要。除非你需要自定义镜像,否则建议使用预构建镜像或预构建 eSDK。
</Note>

| 路径                    | 页面                                                                                                     |
| --------------------- | ------------------------------------------------------------------------------------------------------ |
| 使用 GitHub (KAS) 工作流构建 | [使用 GitHub 工作流构建](/zh/SDKs/QIR-SDK-2.0/build-with-git-hub-workflow)                                    |
| 使用 QSC-CLI 构建         | [使用 QSC-CLI 构建](/zh/SDKs/QIR-SDK-2.0/build-with-qsc-cli)                                               |
| 使用预构建机器人 eSDK 构建      | [使用预构建机器人 eSDK 构建机器人镜像](/zh/SDKs/QIR-SDK-2.0/build-the-robotics-image-with-the-prebuilt-robotics-esdk) |

### 从 Qualcomm Linux 1.0 迁移

如果你正在从 Qualcomm Linux 1.0 机器人构建迁移,发行版、层和镜像组成模型都发生了变化。

| 主题                   | 页面                                                                               |
| -------------------- | -------------------------------------------------------------------------------- |
| 迁移概述                 | [迁移概述](/zh/SDKs/QIR-SDK-2.0/migration-overview)                                  |
| 机器人 OpenEmbedded 层变更 | [机器人 OpenEmbedded 层变更](/zh/SDKs/QIR-SDK-2.0/migration-robotics-oe-layer-changes) |
| 机器人镜像组成变更            | [机器人镜像组成变更](/zh/SDKs/QIR-SDK-2.0/migration-image-composition)                    |
| 机器人层规范               | [机器人层规范](/zh/SDKs/QIR-SDK-2.0/robotics-layers-specifications)                    |
