当前位置: 首页 > news >正文

编译安装并刷写高通智能机器人SDK

The Qualcomm Intelligent Robotics Product SDK (QIRP SDK) 高通智能机器SDK基于ROS2进行开发,此SDK适用于高通linux发行版本,QIRPSDK中提供以下内容:

ROS 包中用于支持机器人应用程序开发的参考代码

  • 用于评估机器人平台的端到端场景示例
  • 集成交叉编译工具链,包括常见的编译工具,例如 aarch64-oe-linux-gcc、make、cmake 和 ROS 核心
  • 集成开发的工具和脚本

QIRP SDK整体架构如下图所示:

Qualcomm® Intelligent Multimedia SDK (IM SDK) :提供用于优化应用开发的 Qualcomm 硬件加速插件。

Qualcomm® Intelligent Robotics Function SDK: 为 Qualcomm 机器人平台提供机器人功能 ROS 节点。该 SDK 基于 ROS2,这是一个开源的操作系统。

Qualcomm® AI Engine Direct SDK: 为 Qualcomm 芯片组和 AI 加速核心上的 AI/ML 用例提供软件架构。它提供了一个统一的 API,具有模块化和可扩展的单独加速器库,形成了全栈 AI 解决方案的可重用基础。它支持 runtime,如 Qualcomm Neural Processing SDK 和 TensorFlow Lite AI Engine Direct Delegate。

编译和安装QIRPSDK

前提条件:需要Ubunt22.04的主机和至少50GB的磁盘空间

Ubuntu 主机需要进行一些配置操作,确保所需的软件工具已安装和配置,可以使用。

1.安装以下软件包,准备好运行 Yocto 版本所需的主机环境

sudo apt update

sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential \

    chrpath socat cpio python3 python3-pip python3-pexpect xz-utils \

    debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \

    libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd \

    liblz4-tool locales tar python-is-python3 file libxml-opml-simplegen-perl \

    vim whiptail

2.设置语言环境:

sudo locale-gen en_US.UTF-8

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

export LC_ALL=en_US.UTF-8

export LANG=en_US.UTF-8

3更新 git 配置:

# Check if your identity is configured in. gitconfig

git config --get user.email

git config --get user.name

# Run the following commands if you do not have your account identity set in .gitconfig

git config --global user.email <Your email ID>

git config --global user.name <"Your Name">

# Add the following UI color option for output of console (optional)

git config --global color.ui auto

# Add the following git configurations to fetch large size repositories and to avoid unreliable connections

git config --global http.postBuffer 1048576000

git config --global http.maxRequestBuffer 1048576000

git config --global http.lowSpeedLimit 0

git config --global http.lowSpeedTime 999999

编译基础镜像

1.设置repo

mkdir -p ~/bin

cd ~/bin

#Note if you already have a previous directory of repo_tool, you can delete it

rm -rf ~/bin/repo_tool

git clone https://android.googlesource.com/tools/repo.git -b v2.41 repo_tool

cd repo_tool

git checkout -b v2.41

export PATH=~/bin/repo_tool:$PATH

如果您所在的区域阻止了对 android.googlesource 的访问,请尝试以下配置以从 Codelinaro 镜像获取存储库

git config --global url.https://git.codelinaro.org/clo/la/tools/repo.insteadOf https://android.googlesource.com/tools/repo

如果上述方法不起作用,也可以尝试用命令行安装repo

sudo apt install curl

mkdir -p ~/bin

curl https://raw.githubusercontent.com/GerritCodeReview/git-repo/v2.41/repo -o ~/bin/repo && chmod +x ~/bin/repo

export PATH=~/bin:$PATH

注意:最新的repo只支持python3

2.下载 Qualcomm Yocto 和支持层:

 mkdir <workspace>

 cd <workspace>

repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m <robotics-release-manifest>

repo sync -c -j8

有关最新版的<robotics-release-manifest>请参考Qualcomm Documentation

举例:

这里采用‘qcom-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1’版本

repo init -u https://github.com/quic-yocto/qcom-manifest -b qcom-linux-kirkstone -m qcom-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml

repo sync -c -j8

下载完后检查layer文件夹下这些层是否存在

meta-qcom

meta-qcom-hwe

meta-qcom-distro

meta-ros

meta-qcom-robotics

meta-qcom-robotics-distro

meta-qcom-robotics-sdk

meta-qcom-qim-product-sdk

meta-qcom-qim-product-sdk

3.设置编译环境:

cd <workspace>

MACHINE=qcm6490 DISTRO=qcom-robotics-ros2-humble source setup-robotics-environment

4编译机器人镜像和 QIRP SDK 组件

../qirp-build qcom-robotics-full-image

编译过程中可能会出现网络错误导致fetch error,多尝试几次即可。

编译完成后可查看以下文件是否存在

QIRP SDK artifacts: <workspace>/build-qcom-robotics-ros2-humble/tmpglibc/deploy/qirpsdk_artifacts/qirp-sdk_<version>.tar.gz

Robotics image:<workspace>/build-qcom-robotics-ros2-humble/tmpglibc/deploy/images/qcm6490/qcom-robotics-full-image

刷写镜像(需要RB3Gen2设备

确保在 Linux 主机上配置了 Qualcomm 制造供应商 ID 05c6 的 udev USB 规则

1.导航到 udev USB 规则目录

cd /etc/udev/rules.d

ls

如果 51-qcom-usb.rules 文件不存在,使用 sudo vi 51-qcom-usb.rules 创建该文件并将以下内容添加到文件中:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0666", GROUP="plugdev"

重新启动udev

sudo systemctl restart udev

2.将设备进入EDL模式

adb shell reboot edl

3.验证设备是否已进入 QDL 模式

lsusb

输出以下内容表示成功进入QDL

Bus 002 Device 014: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)

4.确保ModemManager 未在运行

有些 Linux 发行版本随附 ModemManager,即一款用于配置移动宽带的工具。当设备以 USB 模式连接时,它会被识别为 Qualcomm Modem,ModemManager 会尝试配置该设备。由于这会干扰 QDL 刷写,因此您必须在连接设备之前禁用 ModemManager。如果使用的 Linux 发行版本带有 systemd,则可使用以下命令停止 ModemManager:

sudo systemctl stop ModemManager

如果您需要 ModemManager,则可在刷写完成后再次启动它。

5. 导航到工作区中的以下位置可找到 QDL 工具并刷写镜像

# cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/<MACHINE>/<IMAGE>

# build_path: For DISTRO=qcom-wayland, it is build-qcom-wayland.

#             For DISTRO=qcom-robotics-ros2-humble, it is build-qcom-robotics-ros2-humble

# qdl <prog.mbn> [<program> <patch> ...]

# Example: build_path is build-qcom-wayland

cd <workspace_path>/build-qcom-wayland/tmp-glibc/deploy/images/qcm6490/qcom-multimedia-image

./qdl prog_firehose_ddr.elf rawprogram*.xml patch*.xml

如果您在终端窗口上看到 partition 1 is now bootable(如以下消息所示),则表示刷写成功

LOG: INFO: Calling handler for setbootablestoragedrive

LOG: INFO: Using scheme of value = 1

partition 1 is now bootable

LOG: INFO: Calling handler for power

LOG: INFO: Will issue reset/power off 100 useconds, if this hangs check if watchdog is enabled

LOG: INFO: bsp_target_reset() 1

刷写操作成功后,运行 lsusb 命令以在终端窗口上查看设备信息:

Bus 002 Device 006: ID 05c6:901d Qualcomm, Inc. QCM6490_fd2913cf

作者:王纪尧 高通工程师

相关文章:

编译安装并刷写高通智能机器人SDK

The Qualcomm Intelligent Robotics Product SDK (QIRP SDK) 高通智能机器SDK基于ROS2进行开发&#xff0c;此SDK适用于高通linux发行版本&#xff0c;QIRPSDK中提供以下内容&#xff1a; ROS 包中用于支持机器人应用程序开发的参考代码 用于评估机器人平台的端到端场景示例集…...

软考:案例题分析1101

22年第一题&#xff1a;架构设计与评估 分析文字&#xff0c;识别需求和质量属性&#xff1f;这里需要记忆质量属性有那些&#xff0c;区分需求和质量属性&#xff0c;能区分出质量属性之间的区别。 我的回答&#xff1a; 差距分析&#xff1a; 根据题目中功能的特点&#xff…...

如何检查雷池社区版 WAF 是否安装成功?

容器运行状态检查&#xff1a; 使用命令行检查&#xff1a;打开终端&#xff0c;连接到安装雷池的服务器。运行 docker ps 命令&#xff0c;查看是否有与雷池相关的容器正在运行。 如果能看到类似 safeline-mgt、safeline-tengine 等相关容器&#xff0c;并且状态为 Up&#x…...

一周内从0到1开发一款 AR眼镜 相机应用?

目录 1. &#x1f4c2; 前言 2. &#x1f4a0; 任务拆分 2.1 产品需求拆分 2.2 开发工作拆分 3. &#x1f531; 开发实现 3.1 代码目录截图 3.2 app 模块 3.3 middleware 模块 3.4 portal 模块 4. ⚛️ 拍照与录像 4.1 前滑后滑统一处理 4.2 初始化 View 以及 Came…...

vue3中setup的作用是什么?

Vue 3.0中的setup函数是一个全新的选项&#xff0c;它是在组件创建时执行的一个函数&#xff0c;用于替代Vue2.x中的beforeCreate和created钩子函数。setup函数的作用是将组件的状态和行为进行分离&#xff0c;使得组件更加清晰和易于维护。 在本文中&#xff0c;我们将详细讲解…...

java.io.FileNotFoundException: Could not locate Hadoop executable: (详细解决方案)

1&#xff0c;当你在pycharm 上运行spark代码时候出现下面这个报错。 解决方案 我们要先去hadoop的bin目录下去看看里面是否有 winutils.exe 这个错误 就是缺少winutils.exe 所以报这个错误&#xff0c;把它放到你的hadoop的bin目录下问题就解决了...

事件捕获vs 事件冒泡,延申事件委托

事件捕获vs事件冒泡 拿点击事件举例子&#xff0c;点击dom树的某个目标节点&#xff1a; 事件捕获&#xff1a;从根节点到目标节点扩散事件冒泡&#xff1a;从目标节点到根节点扩散 扩散就是说&#xff0c;途中的节点&#xff0c;相应的点击事件都会被触发 但是&#xff0c;只…...

接口测试(十一)jmeter——断言

一、jmeter断言 添加【响应断言】 添加断言 运行后&#xff0c;在【察看结果树】中可得到&#xff0c;响应结果与断言不一致&#xff0c;就会红色标记...

使用buildx构建多架构平台镜像

1. 查看buildx插件信息 比较新的docker-ce版本默认已经集成了buildx插件 [rootdocker ~]# docker buildx version github.com/docker/buildx v0.11.2 9872040 [rootdocker ~]#2. 增加多平台镜像构建支持 通过tonistiigi/binfmt:latest初始化一个基于容器的构建环境&#xff…...

宠物领养救助管理软件有哪些功能 佳易王宠物领养救助管理系统使用操作教程

一、概述 佳易王宠物领养救助管理系统V16.0&#xff0c;集宠物信息登记、查询&#xff0c;宠物领养登记、查询&#xff0c; 宠物领养预约管理、货品进出库库存管理于一体的综合管理系统软件。 概述&#xff1a; 佳易王宠物领养救助管理系统V16.0&#xff0c;集宠物信息登记…...

Spring Boot中实现多数据源连接和切换的方案

Spring Boot中实现多数据源连接和切换的方案 在Spring Boot项目中&#xff0c;随着业务需求的增长&#xff0c;我们往往需要连接多个数据库&#xff0c;即实现多数据源连接和切换。这种需求可能源于数据库的读写分离、微服务架构下的服务拆分、数据分库分表等场景。本文将详细…...

科技资讯|谷歌Play应用商店有望支持 XR 头显,AR / VR设备有望得到发展

据 Android Authority 报道&#xff0c;谷歌似乎正在为其 Play 商店增加对 XR 头显的支持。该媒体在 Play 商店的代码中发现了相关的线索&#xff0c;包括一个代表头显的小图标以及对“XR 头显”的提及。 谷歌也可能改变了此前拒绝将 Play 商店引入 Meta Quest 头显的决定。今…...

关于read/write 网络IO、硬盘IO的区别

对于read/write API&#xff0c;在数据在不超过指定的长度的时候有多少读多少&#xff0c;没有数据则会一直等待。 因此&#xff0c;对于网络IO&#xff0c;由于我们无法知道网络对面什么时候准备好数据&#xff0c;什么时候发起数据。所以使用read/write的话&#xff0c;可能…...

vue2开发 对接后端(go语言)常抛异常情况以及处理方法汇总

背景 在Vue2开发中&#xff0c;与后端&#xff08;Go语言&#xff09;接口对接时出现异常通常是由于前后端之间的数据交互出现了问题。常见的异常包括数据格式不匹配、请求方法不匹配、请求头部信息错误、跨域请求问题等。 常见异常 如出现报错提示&#xff1a; json : can…...

LSTM:解决梯度消失与长期依赖问题

LSTM&#xff1a;解决梯度消失与长期依赖问题 长短期记忆网络&#xff08;LSTM&#xff09;是一种特殊类型的递归神经网络&#xff08;RNN&#xff09;&#xff0c;设计用来克服标准RNN在处理长序列数据时遇到的梯度消失问题。下面是对您提供的LSTM特性描述的详细解释&#xf…...

Kafka在大数据处理中的作用及其工作原理

Kafka在大数据处理中扮演着至关重要的角色&#xff0c;其作用及工作原理可以从以下几个方面进行解释&#xff1a; 一、Kafka的作用 消息队列&#xff1a; Kafka作为一个高性能、高可伸缩性的消息队列&#xff0c;能够有效地解耦数据生产者和消费者之间的关系&#xff0c;实现…...

w~自动驾驶~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12304427 # 智能驾驶仿真测试的『虚幻』与『真实』 先给大家讲个故事&#xff1a;某主机厂计划构建一套智能驾驶仿真环境&#xff0c;但需同时满足“对外展示”和“项目使用”两方面需求&#xff0c;与供应商商讨一个月后&…...

Java优先队列的使用

1. 优先队列的定义 PriorityQueue继承了Queue接口&#xff0c;底层默认是一个小根堆。 PriorityQueue<Integer> queuenew PriorityQueue<>(); 2. 常用方法 方法描述boolean offer(E e)入队列E poll()出队列E peek()得到队首元素 int size() 返回集合中的元素个…...

20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 …...

mysql之命令行基础指令

一&#xff1a;安装好mysql后&#xff0c;注册好账号密码。 二&#xff1a;在命令行进行登录的指令如下 mysql -u用户名 -p 例如&#xff1a;mysql -uroot -p; 然后按下回车&#xff0c;进入输入密码。 三&#xff1a;基本指令&#xff1a; 1&#xff1a;查看当前账户的所有…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...