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

ROS机器人和NPU的往事和新知-250602

往事:

回顾一篇五年前的博客:

ROS2机器人笔记20-12-04_ros2 移植到vxworks-CSDN博客

里面提及专用的机器人处理器,那时候只有那么1-2款专用机器人处理器。 


无关:

01: 每代人的智商和注意力差异是如何出现的-250602-CSDN博客

02: 在考古方向遥遥领先的高校课程建设-250602-CSDN博客 


新知:

以下是一个详细列举支持NPU的ROS机器人处理器的表格:

处理器型号厂商NPU算力特点与应用场景ROS支持情况
i.MX 8M Plus恩智浦(NXP)2.3 TOPS(INT8)内置NPU,支持TensorFlow Lite等机器学习框架,适用于需要AI加速的机器人应用,如物体识别、语音助手等。可通过社区支持或自定义开发集成到ROS系统中。
RV1109/RV1126瑞芯微(Rockchip)RV1109:1.2 TOPS
RV1126:更高
支持多种AI框架,常用于智能摄像头、边缘计算设备,也适用于机器人视觉处理。社区中有相关开发案例,可通过SDK集成到ROS中。
V853全志科技(Allwinner)未具体提及,但集成AI加速器支持多种神经网络模型,适用于低功耗AI应用,如轻量级机器人、智能家居设备等。需通过社区或第三方开发支持集成到ROS。
旭日X3派地平线(Horizon Robotics)5 TOPS(伯努利2.0架构BPU)适用于机器人视觉、语音交互等AI任务。官方提供ROS开发套件,支持ROS 2。
Jetson Nano英伟达(NVIDIA)0.472 TOPS(FP16)内置128核GPU,适合入门级AI应用,如机器人视觉、物体识别等。官方提供完整的ROS支持,包括驱动程序、示例代码和工具链。
Jetson Xavier NX英伟达(NVIDIA)21 TOPS适用于需要高性能AI和实时处理的机器人应用,如自动驾驶、复杂环境感知等。官方提供完整的ROS支持。
Jetson AGX Orin英伟达(NVIDIA)275 TOPS适用于高端机器人和自动驾驶等需要极高AI算力的应用。官方提供完整的ROS支持。
RB5平台高通(Qualcomm)15 TOPS(INT8)内置Hexagon DSP和AI引擎,适用于需要高性能AI和实时处理的机器人应用。高通与ROS社区合作,提供ROS 2支持,包括驱动程序和示例代码。
Core™ Ultra处理器英特尔(Intel)未具体提及,但内置NPU适用于需要高性能计算的机器人应用,如高端机器人、自动驾驶等。可通过OpenVINO™工具套件与ROS集成,支持AI推理加速。
D9350芯驰科技(SemiDrive)1 TOPS集成NPU,支持多操作系统并行,适用于需要高集成度和多系统支持的机器人应用。支持ROS 2,提供完整的工具和库。
KR260(基于Kria K26 SOM)AMD/Xilinx未具体提及,但支持ROS 2和AI加速适用于机器人和工业应用,提供高性能和灵活性。支持ROS 2,提供示例代码和工具链。
RK3562J/RK3566/RK3588瑞芯微(Rockchip)未具体提及,但内置NPU支持多种AI框架,适用于机器人视觉、工业相机等场景。社区中有相关开发案例,可通过SDK或自定义开发集成到ROS中。

说明

  • NPU算力:表格中列出的算力可能因具体型号和配置而有所不同,且可能使用不同的精度(如INT8、FP16)进行衡量。
  • 特点与应用场景:简要描述了处理器的特点和主要应用场景,但具体应用可能因项目需求而异。
  • ROS支持情况:提供了处理器与ROS的集成情况,包括官方支持、社区支持或需要自定义开发等。

这个表格涵盖了多个支持NPU的ROS机器人处理器,并提供了它们的基本信息、特点、应用场景以及ROS支持情况。开发者可以根据自己的项目需求和预算选择合适的处理器。

支持NPU的ROS机器人处理器涵盖了多个厂商和型号,以下是根据公开信息整理的详细列表,这些处理器因其内置的NPU单元,能够显著加速AI推理任务,从而提升机器人在视觉感知、路径规划、语音交互等方面的性能:

1. 恩智浦(NXP)i.MX 8M Plus

  • 特点:内置NPU,算力达2.3 TOPS(INT8),支持TensorFlow Lite等机器学习框架。
  • 应用:适用于需要AI加速的机器人应用,如物体识别、语音助手等。
  • ROS支持:可通过社区支持或自定义开发集成到ROS系统中。

2. 瑞芯微(Rockchip)RV1109/RV1126

  • 特点:RV1109内置1.2 TOPS NPU,RV1126算力更高,支持多种AI框架。
  • 应用:常用于智能摄像头、边缘计算设备,也适用于机器人视觉处理。
  • ROS支持:社区中有相关开发案例,可通过SDK集成到ROS中。

3. 全志科技(Allwinner)V853

  • 特点:集成AI加速器,支持多种神经网络模型,适用于低功耗AI应用。
  • 应用:适用于轻量级机器人、智能家居设备等。
  • ROS支持:需通过社区或第三方开发支持集成到ROS。

4. 地平线(Horizon Robotics)旭日X3派

  • 特点:搭载伯努利2.0架构的BPU(类似NPU),算力达5 TOPS。
  • 应用:适用于机器人视觉、语音交互等AI任务。
  • ROS支持:官方提供ROS开发套件,支持ROS 2,便于开发者快速构建机器人应用。

5. 英伟达(NVIDIA)Jetson系列

  • 特点
    • Jetson Nano:内置128核GPU,算力0.472 TOPS(FP16),适合入门级AI应用。
    • Jetson Xavier NX:算力高达21 TOPS,支持多传感器融合和复杂AI任务。
    • Jetson AGX Orin:算力达275 TOPS,适用于高端机器人和自动驾驶。
  • 应用:广泛应用于机器人、无人机、自动驾驶等领域。
  • ROS支持:官方提供完整的ROS支持,包括驱动程序、示例代码和工具链。

6. 高通(Qualcomm)RB5平台

  • 特点:内置Hexagon DSP和AI引擎,算力达15 TOPS(INT8)。
  • 应用:适用于需要高性能AI和实时处理的机器人应用。
  • ROS支持:高通与ROS社区合作,提供ROS 2支持,包括驱动程序和示例代码。

7. 英特尔(Intel)Core™ Ultra处理器

  • 特点:内置NPU,支持AI加速,适用于需要高性能计算的机器人应用。
  • 应用:适用于高端机器人、自动驾驶等领域。
  • ROS支持:可通过OpenVINO™工具套件与ROS集成,支持AI推理加速。

8. 地平线(Horizon Robotics)旭日X3派

  • 特点:搭载伯努利2.0架构的BPU,算力达5 TOPS,支持多种AI框架。
  • 应用:适用于机器人视觉、语音交互等AI任务。
  • ROS支持:官方提供ROS 2开发套件,支持快速开发。

9. 芯驰科技(SemiDrive)D9350

  • 特点:集成NPU,算力达1 TOPS,支持多操作系统并行。
  • 应用:适用于需要高集成度和多系统支持的机器人应用。
  • ROS支持:支持ROS 2,提供完整的工具和库。

10. 其他潜在支持NPU的处理器

  • AMD/Xilinx Kria KR260:基于Kria K26 SOM,支持ROS 2,适用于机器人和工业应用。
  • 瑞芯微RK3562J/RK3566/RK3588:内置NPU,支持多种AI框架,适用于机器人视觉、工业相机等场景。

总结

  • 选择建议
    • 入门级:瑞芯微RV1109/RV1126、恩智浦i.MX 8M Plus。
    • 中端:地平线旭日X3派、芯驰科技D9350。
    • 高端:英伟达Jetson系列、AMD/Xilinx Kria KR260。
  • 关键因素:算力需求、功耗预算、操作系统兼容性、开发工具链成熟度。

这些处理器通过内置NPU单元,为ROS机器人提供了强大的AI加速能力,使得机器人能够更高效地处理复杂的AI任务,从而提升整体性能和应用范围。


为了优化ROS环境以更好地支持NPU(神经网络处理单元)加速,可以从以下几个方面入手:

1. 确保NPU驱动和软件栈的安装与配置

  • 安装NPU驱动
    • 根据硬件平台(如Intel® Core™ Ultra或i.MX 8M Plus)的指南,安装相应的NPU驱动。
    • 确保驱动版本与操作系统和机器学习框架兼容。
  • 配置软件栈
    • 安装机器学习框架(如OpenVINO™)并配置其使用NPU进行推理。
    • 确保框架的版本与NPU驱动兼容,并能够充分利用NPU的加速能力。

2. 优化ROS节点与NPU的交互

  • 节点设计
    • 设计ROS节点时,考虑将计算密集型任务(如图像处理、模型推理)移至使用NPU加速的节点中。
    • 避免在ROS主线程中执行耗时操作,以免影响系统的实时性和响应速度。
  • 数据传输
    • 使用ROS的高效数据传输机制(如话题、服务)来传递需要处理的数据。
    • 考虑使用共享内存或其他快速数据传输方式,以减少数据传输的开销。
  • 并行处理
    • 如果可能,将任务分解为多个子任务,并在多个ROS节点或线程中并行处理。
    • 利用NPU的多核处理能力,同时处理多个推理请求。

3. 调整系统配置以优化性能

  • CPU与NPU的协同工作
    • 确保CPU和NPU之间的负载均衡,避免NPU过载而CPU空闲,或反之。
    • 可以使用任务调度器或资源管理器来动态调整CPU和NPU的工作负载。
  • 内存管理
    • 优化内存使用,避免内存泄漏或过度分配。
    • 使用内存池或缓存机制来减少内存分配和释放的开销。
  • 电源管理
    • 根据需要调整系统的电源管理模式,以确保NPU在需要时能够全速运行。
    • 避免在不必要时进入低功耗模式,以免影响性能。

4. 使用性能分析工具进行调优

  • 性能监控
    • 使用性能监控工具(如tophtopnvidia-smi(对于NVIDIA GPU,虽不直接适用于NPU,但类似工具可能存在)或NPU厂商提供的专用工具)来监控系统的资源使用情况。
    • 识别性能瓶颈,如CPU使用率过高、内存不足或NPU利用率低等。
  • 调优与优化
    • 根据性能监控的结果,调整系统配置、节点设计或算法实现。
    • 尝试不同的参数设置或优化策略,以找到最佳的性能平衡点。

5. 考虑使用ROS 2的改进特性

  • ROS 2的优势
    • ROS 2相比ROS 1在实时性、分布式计算和模块化设计方面有所改进。
    • 考虑迁移到ROS 2以利用这些改进特性,特别是如果项目需要处理大量数据或实时性要求较高。
  • 迁移指南
    • 如果决定迁移到ROS 2,参考ROS官方提供的迁移指南和文档。
    • 逐步迁移ROS节点和功能包,确保迁移过程中的兼容性和稳定性。

6. 参考厂商文档和社区支持

  • 厂商文档
    • 查阅NPU厂商提供的文档和指南,了解特定于硬件平台的优化建议和最佳实践。
  • 社区支持
    • 参与ROS和NPU相关的社区论坛和讨论组,与其他开发者交流经验和心得。
    • 寻求社区支持以解决遇到的问题或获取新的优化思路。

ROS机器人和NPU结合的详细教程案例和应用场景综述

一、详细教程案例

1. 硬件与软件准备

  • 硬件:选择支持NPU(如Intel® Core™ Ultra处理器内置NPU或i.MX 8M Plus处理器)的开发板或计算机,以及必要的摄像头、传感器等外围设备。
  • 软件:安装Ubuntu操作系统(如Ubuntu 20.04),ROS(如ROS 2),以及NPU驱动和相关的机器学习框架(如OpenVINO™)。

2. 安装NPU驱动

  • Intel® Core™ Ultra处理器
    • 参考Intel NPU驱动安装指南,使用APT包源安装NPU驱动。
    • 配置udev规则以确保用户对NPU设备的访问权限。
  • i.MX 8M Plus处理器
    • 确保使用支持NPU的Ubuntu镜像,或参考NXP社区中的指南自行构建。
    • 根据需要,可能需要对系统进行特定配置以支持NPU加速。

3. 安装与配置ROS

  • 按照ROS官方文档安装ROS 2。
  • 配置ROS环境,包括设置ROS_MASTER_URI、ROS_IP等环境变量。

4. 集成NPU与ROS

  • 使用OpenVINO™与ROS
    • 编写ROS节点,利用OpenVINO™加载和运行预训练的机器学习模型。
    • 通过ROS话题(topics)发布和订阅数据,实现机器人感知、决策和控制。
  • 示例代码
    • 创建一个ROS节点,订阅摄像头图像话题,使用OpenVINO™进行物体检测。
    • 将检测结果发布到另一个ROS话题,供其他节点使用。
import rospy
from sensor_msgs.msg import Image
from std_msgs.msg import String
from cv_bridge import CvBridge
import cv2
import openvino.inference_engine as ieclass ObjectDetectorNode:def __init__(self):rospy.init_node('object_detector', anonymous=True)self.image_sub = rospy.Subscriber('/camera/image_raw', Image, self.image_callback)self.result_pub = rospy.Publisher('/object_detection_result', String, queue_size=10)self.bridge = CvBridge()self.ie_core = ie.IECore()self.net = self.ie_core.read_network(model="path/to/model.xml", weights="path/to/model.bin")self.exec_net = self.ie_core.load_network(network=self.net, device_name="NPU")def image_callback(self, data):try:cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")# Preprocess imageinput_blob = next(iter(self.net.input_info))input_image = self.preprocess_input(cv_image)# Perform inferenceresult = self.exec_net.infer(inputs={input_blob: input_image})# Process result and publishresult_str = self.process_result(result)self.result_pub.publish(result_str)except Exception as e:rospy.logerr(f"Error processing image: {e}")def preprocess_input(self, image):# Implement image preprocessing (resize, normalization, etc.)passdef process_result(self, result):# Implement result processing (extract bounding boxes, labels, etc.)return "Detected objects: ..."if __name__ == '__main__':try:detector = ObjectDetectorNode()rospy.spin()except rospy.ROSInterruptException:pass

python

import rospy
from sensor_msgs.msg import Image
from std_msgs.msg import String
from cv_bridge import CvBridge
import cv2
import openvino.inference_engine as ie
class ObjectDetectorNode:
def __init__(self):
rospy.init_node('object_detector', anonymous=True)
self.image_sub = rospy.Subscriber('/camera/image_raw', Image, self.image_callback)
self.result_pub = rospy.Publisher('/object_detection_result', String, queue_size=10)
self.bridge = CvBridge()
self.ie_core = ie.IECore()
self.net = self.ie_core.read_network(model="path/to/model.xml", weights="path/to/model.bin")
self.exec_net = self.ie_core.load_network(network=self.net, device_name="NPU")
def image_callback(self, data):
try:
cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
# Preprocess image
input_blob = next(iter(self.net.input_info))
input_image = self.preprocess_input(cv_image)
# Perform inference
result = self.exec_net.infer(inputs={input_blob: input_image})
# Process result and publish
result_str = self.process_result(result)
self.result_pub.publish(result_str)
except Exception as e:
rospy.logerr(f"Error processing image: {e}")
def preprocess_input(self, image):
# Implement image preprocessing (resize, normalization, etc.)
pass
def process_result(self, result):
# Implement result processing (extract bounding boxes, labels, etc.)
return "Detected objects: ..."
if __name__ == '__main__':
try:
detector = ObjectDetectorNode()
rospy.spin()
except rospy.ROSInterruptException:
pass

5. 测试与优化

  • 在实际环境中测试机器人系统,确保NPU加速有效,且ROS节点间通信正常。
  • 根据测试结果调整模型、参数或系统配置,以优化性能。
二、应用场景综述

1. 自主导航与避障

  • 场景描述:机器人需要在复杂环境中自主导航,避开障碍物并到达目标位置。
  • NPU作用:加速视觉处理,实现实时障碍物检测和路径规划。
  • ROS集成:使用ROS的导航栈(navigation stack)结合NPU加速的视觉处理,实现高效导航。

2. 物体识别与抓取

  • 场景描述:机器人需要识别特定物体并进行抓取操作。
  • NPU作用:加速物体识别模型,提高识别准确率和速度。
  • ROS集成:通过ROS话题接收摄像头图像,使用NPU加速的识别模型进行处理,并发布抓取指令。

3. 智能监控与安防

  • 场景描述:机器人用于监控特定区域,检测异常行为或入侵者。
  • NPU作用:加速视频分析,实现实时异常检测。
  • ROS集成:结合ROS的摄像头驱动和NPU加速的视频分析节点,实现智能监控。

4. 农业机器人

  • 场景描述:机器人用于农田作业,如作物监测、病虫害识别等。
  • NPU作用:加速图像处理和分析,提高监测效率和准确性。
  • ROS集成:利用ROS的通信机制,实现机器人与农田环境信息的交互,以及与其他农业设备的协同作业。

5. 工业自动化

  • 场景描述:机器人在工业生产线上执行装配、检测等任务。
  • NPU作用:加速机器视觉处理,实现高精度的零件识别和定位。
  • ROS集成:结合ROS的工业接口和NPU加速的视觉处理,实现高效、准确的工业自动化。


内容总结

  1. TensorFlow Lite支持:
    • 用户询问i.MX 8M Plus是否支持TensorFlow Lite中的所有操作符。
    • 回答指出,TensorFlow Lite库使用Android NN API通过GPU/NPU驱动进行推理,但NN API版本1.2在支持的张量数据类型和操作符上有限制,因此某些模型可能在无加速情况下工作,但在使用NN API时可能失败。
  2. Ubuntu与ROS支持:
    • 用户询问i.MX 8M Plus的Ubuntu根文件系统是否包含ROS和一些机器学习示例。
    • 回答确认i.MX 8M Plus支持Ubuntu根文件系统,但不包含ROS,用户需要自行安装。
  3. 性能比较:
    • 用户比较i.MX 8M Plus(基于INT8的2.3 TOPS)与Jetson Nano(472 GFLOPS,约0.92 TOPS)的性能。
    • 回答提供了TOPS到GFLOPS的转换说明,并确认i.MX 8M Plus在性能上优于Jetson Nano。
  4. 摄像头使用:
    • 用户询问AI机器人评估套件中使用的摄像头信息。
    • 回答指出AI机器人板支持AP1302+AR1335摄像头组合,并提供了AR1335模块供应商和联系窗口的信息。
  5. Ubuntu 20.04安装指南:
    • 用户请求在AI机器人评估套件上安装Ubuntu 20.04的用户指南。
    • 回答提供了基于Yocto项目的Ubuntu 20.04构建指南,包括repo初始化、补丁应用、以及构建命令。
  6. 构建问题与解决:
    • 用户在构建过程中遇到错误,特别是与nfs-common包相关的问题。
    • 回答通过提供补丁文件(移除nfs-common)解决了用户的问题。
  7. 其他问题:
    • 用户还询问了关于Ubuntu 18.04/16.04的支持、NPU加速计算、YoloV4计算加速、以及双目摄像头获取深度数据的问题。
    • 回答提供了关于Ubuntu版本支持、NPU加速限制、模型转换建议、以及双目摄像头解决方案的信息。

教程指南

1. 安装Ubuntu 20.04 on i.MX 8M Plus AI Robot EVK
  • 准备工作:
    • 确保有支持Yocto项目的构建环境。
    • 下载必要的补丁文件和tar.gz文件。
  • 步骤:
    1. 初始化repo:repo init -u https://source.codeaurora.org/external/imx/imx-manifest-b imx-linux-gatesgarth -m imx-5.10.9-1.0.0_desktop.xml
    2. 应用补丁:对meta-nxp-desktop层应用补丁0001-Add-to-support-i.MX8M-Plus-AI-Robot-board-and-some-t.patch
    3. 解压tar.gz文件:将meta-imx8mp-ai-robot-L5.10.9-gatesgarth.tar.gz解压到<Yocto folder>/source下。
    4. 设置环境变量并运行构建脚本:DISTRO=imx-desktop-xwayland MACHINE=imx8mpairobotdesktop source imx-setup-desktop.sh -b build-ai-robot-desktop
    5. 添加BBLAYERS:在<Yocto folder>/build-ai-robot-desktop/bblayers.conf中添加BBLAYERS += "${BSPDIR}/sources/meta-imx8mp-ai-robot "
    6. 构建镜像:bitbake imx-image-desktop
2. 解决构建问题
  • nfs-common问题:
    • 如果在构建过程中遇到与nfs-common包相关的问题,可以按照回答中的建议,从imx-image-desktop.bb文件中移除nfs-common包,然后重新构建。
3. NPU加速计算
  • 模型转换:
    • 如果需要使用NPU加速计算,可以将TensorFlow模型转换为TensorFlow Lite模型,并使用i.MX 8M Plus的NPU作为后端。
4. 摄像头使用
  • 双目摄像头:
    • 如果需要使用双目摄像头获取深度数据,可以参考NXP提供的解决方案或联系供应商获取更多信息。

总结

该网页提供了关于i.MX 8M Plus处理器在AI机器人平台上使用Ubuntu操作系统的详细信息和教程指南,包括系统安装、构建问题解决、NPU加速计算、以及摄像头使用等方面的内容。通过遵循这些指南,用户可以成功地在i.MX 8M Plus平台上构建和运行Ubuntu操作系统,并利用其强大的计算能力进行AI机器人开发。


内容总结

  1. 目的:
    • 指导用户在Intel® Core™ Ultra处理器的NPU设备上安装Intel® NPU驱动,以便运行OpenVINO™推理应用程序。
  2. 驱动组件:
    • intel-driver-compiler-npu: Intel® NPU硬件的驱动编译器,用于编译使用Level Zero Graph Extension API的OpenVINO™ IR模型。
    • intel-fw-npu: Intel® NPU硬件的固件包。
    • intel-level-zero-npu: Intel® NPU硬件的Level Zero驱动,实现与NPU硬件交互的Level Zero API。
  3. 安装方式:
    • 推荐从APT包源安装驱动,以便自动获取更新,而不是从Linux NPU Driver网站下载.deb文件手动安装。
  4. 安装步骤:
    • 确保系统已设置APT仓库(通常在设置APT仓库的页面有详细说明)。
    • 使用命令安装驱动包:sudo apt-get install intel-level-zero-npu intel-driver-compiler-npu
  5. 用户权限设置:
    • 安装后需执行特定步骤以赋予用户对NPU设备的访问权限,包括创建或加入适当的用户组,并配置udev规则以自动设置设备权限。
  6. 验证安装:
    • 通过检查/dev/accel/accel0设备是否存在且属于正确的用户组(如render组)来验证驱动是否正确安装和配置。

详细教程

1. 准备工作
  • 确认系统要求: 确保系统使用Intel® Core™ Ultra处理器,并已设置APT仓库。
2. 安装NPU驱动
  • 打开终端: 在Linux系统中打开一个终端窗口。
  • 更新包列表:(可选,但推荐)sudo apt-get update,以确保APT包索引是最新的。
  • 安装驱动: 执行命令sudo apt-get install intel-level-zero-npu intel-driver-compiler-npu以安装NPU驱动。
3. 配置用户权限
  • 创建或加入用户组: 根据Linux NPU Driver网站上的“User access to the device”部分,将用户添加到适当的组(如render组)。
  • 配置udev规则:
    • 执行命令sudo bash -c "echo 'SUBSYSTEM==\"accel\", KERNEL==\"accel*\", GROUP=\"render\", MODE=\"0660\"' > /etc/udev/rules.d/10-intel-vpu.rules"以创建udev规则文件。
    • 重新加载udev规则:sudo udevadm control --reload-rules
    • 触发udev事件以应用新规则:sudo udevadm trigger --subsystem-match=accel
4. 验证安装
  • 检查设备: 执行命令ls -lah /dev/accel/accel0,确认设备存在且权限设置正确(应属于render组,且用户有读写权限)。
5. 后续步骤
  • 重启系统:(如果需要)根据具体需求,可能需要重启系统以确保所有更改生效。
  • 运行OpenVINO™应用: 现在可以在NPU设备上运行OpenVINO™推理应用程序。

注意事项

  • 驱动更新: 使用APT包源安装驱动可以确保自动获取更新,避免手动下载和安装的麻烦。
  • 权限问题: 如果遇到权限问题,请检查udev规则和用户组设置。
  • 文档参考: 始终参考最新的官方文档和指南,以获取最准确的信息和步骤。

通过遵循上述教程,用户可以在Intel® Core™ Ultra处理器的NPU设备上成功安装和配置Intel® NPU驱动,从而运行OpenVINO™推理应用程序


产品概述

  • 产品名称: NavQPlus
  • 目标应用: 移动机器人、地面站、智能相机等
  • 核心特性:
    • 使用与i.MX 8M Plus EVK相同的系统模块(SOM),但支持8GB LPDDR4(而i.MX 8M Plus EVK支持6GB)。
    • 小型化设计,配备Linux Foundation Dronecode连接器、双USB、双CAN、双MIPI-CSI摄像头接口、IX-Industrial以太网连接器、100BaseT1双线以太网、9-20V输入电源管理(使用USB-C PD)、工业实时时钟(RTC)带篡改/时间戳功能,以及板载SE050安全元件和NFC。
    • 支持Linux Desktop POC、Python、eIQ和ROS2等软件,用于低功耗机器学习、视觉、计算、路径规划和导航的机器人开发。
    • 配备HDMI、LVDS、MIPI DSI显示接口,适用于数字标牌、地面站、工业远程控制器等需要连接性的显示应用。

产品详情

  • 硬件配置:
    • NavQPlus i.MX 8M Plus Companion Computer EVK,配备8GB LPDDR4和32GB eMMC。
    • 库存状态:显示有现货(In Stock),通常1-2个工作日内发货。
  • 软件支持:
    • 提供针对机器人开发的软件支持,包括低功耗机器学习、视觉、计算、路径规划和导航。
    • 定制化的Ubuntu Core也可从Canonical获取。
  • 文档资源:
    • 快速参考指南(Quick Start Guide)
    • 用户指南(User Guide)

教程指南

1. 准备工作
  • 获取开发板: 从NXP的合作伙伴或分销商处购买NavQPlus开发板。
  • 阅读文档: 下载并阅读NavQPlus的快速参考指南和用户指南,了解开发板的基本特性和使用方法。
2. 硬件连接
  • 电源连接: 使用USB-C PD适配器为开发板供电,电压范围为9-20V。
  • 外设连接: 根据需要连接USB设备、CAN总线、MIPI-CSI摄像头、以太网等外设。
  • 显示连接: 如果需要显示输出,连接HDMI、LVDS或MIPI DSI显示器。
3. 软件环境搭建
  • 安装操作系统: 如果使用定制化的Ubuntu Core,按照Canonical的指南进行安装。
  • 配置ROS2: 安装并配置ROS2环境,以便进行机器人开发。
  • 安装其他软件: 根据需要安装Python、eIQ等软件工具。
4. 开发与应用
  • 机器人开发: 利用NavQPlus的硬件特性和软件支持,进行机器人路径规划、导航、视觉处理等开发。
  • 显示应用: 如果开发板用于数字标牌等显示应用,利用显示接口进行内容展示。
  • 调试与测试: 使用开发板提供的调试接口和工具,对开发的应用进行调试和测试。
5. 资源与支持
  • 文档与教程: 参考NXP提供的文档和教程,获取更多关于NavQPlus开发板的使用和开发信息。
  • 社区与论坛: 加入NXP的开发者社区或论坛,与其他开发者交流经验,解决问题。
  • 技术支持: 如果遇到技术问题,可以联系NXP的技术支持团队获取帮助。

总结

NavQPlus开发板是一款功能强大、配置灵活的任务计算机,适用于移动机器人、地面站和智能相机等多种应用。通过详细的文档资源和教程指南,开发者可以快速上手并利用NavQPlus进行机器人开发和显示应用开发


项目概述

  • 项目名称: opennav_amd_demonstrations
  • 目标: 展示AMD Ryzen AI技术在机器人导航中的应用,通过ROS 2 Humble和Nav2实现室内2D、城市3D和户外GPS导航。
  • 技术栈: ROS 2, Nav2, AMD Ryzen AI CPU/GPU/NPU, 嵌入式系统。
  • 演示平台: Honeybee参考平台,基于Clearpath Robotics Jackal,配备多种传感器和AMD的计算技术。

仓库内容

  1. 代码结构:
    • .github/workflows: 包含GitHub Actions的工作流配置。
    • README: 项目介绍和使用说明。
    • honeybee_demos: 包含详细的演示描述、视频和数据集。
    • docs: 开发者指南,涵盖新机器人计算机引导、ROS 2网络设置、远程数据可视化等。
  2. 演示内容:
    • 室内2D导航
    • 城市3D导航
    • 户外GPS导航
    • 演示使用Nav2配置为特定应用,包括自主导航脚本和看门狗程序,用于数据记录和系统处理。
  3. 资源利用:
    • 在16核、60W Ryzen AI计算机上,自主导航、3D激光雷达和摄像头感知、定位的平均CPU使用率为10.85%。
    • 使用MPPI等现代算法时,CPU使用率上升至12.8%,但仍保持高效。
    • 整个自主、感知和定位系统仅需2个AMD Zen 4核心。
  4. 构建和运行:
    • 克隆仓库git clone <仓库地址>
    • 安装依赖: 手动安装非rosdep依赖,并通过rosdep安装可用依赖。
    • 构建项目: 使用colcon build构建项目。
    • 启动机器人ros2 launch honeybee_bringup robot.launch.py,通过use_simulation参数指定使用物理机器人或模拟机器人。
    • 启动导航系统ros2 launch honeybee_nav2 nav2.launch.py,配置导航选项。
    • 启动演示: 使用honeybee_demos中的相应启动文件。
  5. 网络和配置:
    • 机器人内部网络在192.168.131.*范围内。
    • Lidar连接到内置PC,可通过以太网交换机解决端口限制。
    • 控制器具有自定义布局,系统中的各个节点订阅操纵杆主题以激活功能。
    • 默认工作空间路径为~/amd_ws,可通过更新honeybee_bringup/systemd中的服务来更改。
    • 实验数据记录在~/experiment_files目录中,可通过参数filepath设置替代路径。
  6. 注意事项:
    • 避免在Wifi上订阅大型主题,以免网络拥堵和程序停滞。
    • 推荐在ROS_LOCALHOST_ONLY模式下使用机器人,或在不必要时不订阅非必要主题。
    • 使用隔离网络以避免在大公司或建筑网络中发现所有设备。
    • 根据使用的摄像头(Realsense D435或Orbecc 355)设置USE_ORBECC环境变量。

教程指南

  1. 环境准备:
    • 安装ROS 2 Humble和Nav2。
    • 确保系统满足项目依赖要求。
  2. 克隆和构建:
    • 克隆仓库到本地工作空间。
    • 安装依赖并构建项目。
  3. 配置和启动:
    • 根据需要配置网络和摄像头。
    • 启动机器人和导航系统。
  4. 运行演示:
    • 选择并启动相应的演示。
    • 观察机器人行为和导航效果。
  5. 数据记录和分析:
    • 查看实验数据记录,分析导航性能。
  6. 进一步开发:
    • 利用开发者指南中的资源,进行新功能的开发和测试。

这个仓库为开发者提供了一个完整的平台,用于探索和开发基于AMD Ryzen AI技术和ROS 2的机器人导航应用。通过详细的演示和文档,开发者可以快速上手并深入理解相关技术


本文主要介绍了支持NPU加速的ROS机器人处理器及其应用场景。表格列举了包括恩智浦i.MX8MPlus、瑞芯微RV1109/RV1126、英伟达Jetson系列等12款处理器型号,详细说明了它们的NPU算力、厂商、特点及ROS支持情况。文章还通过具体案例展示了如何将NPU与ROS集成,包括驱动安装、模型转换、节点设计等关键技术步骤。在应用场景方面,重点介绍了自主导航、物体识别、智能监控等领域中NPU加速的实际应用效果。最后给出了处理器选型建议,强调需综合考虑算力需求、功耗预算和开发工具链等因素。


相关文章:

ROS机器人和NPU的往事和新知-250602

往事&#xff1a; 回顾一篇五年前的博客&#xff1a; ROS2机器人笔记20-12-04_ros2 移植到vxworks-CSDN博客 里面提及专用的机器人处理器&#xff0c;那时候只有那么1-2款专用机器人处理器。 无关&#xff1a; 01&#xff1a; 每代人的智商和注意力差异是如何出现的-250602-…...

【从零开始学习QT】信号和槽

目录 一、信号和槽概述 信号的本质 槽的本质 二、信号和槽的使用 2.1 连接信号和槽 2.2 查看内置信号和槽 2.3 通过 Qt Creator 生成信号槽代码 自定义槽函数 自定义信号 自定义信号和槽 2.4 带参数的信号和槽 三、信号与槽的连接方式 3.1 一对一 &#xff08;1&…...

MCP调研

什么是 MCP MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;&#xff0c;是由 Anthropic 在 2024 年 11 月底推出的开放标准协议&#xff0c;旨在统一大型语言模型&#xff08;LLM&#xff09;与外部数据源、工具的通信方式。MCP 的主要目的在于…...

TDengine 运维——巡检工具(定期检查)

背景 TDengine 在运行一段时间后需要针对运行环境和 TDengine 本身的运行状态进行定期巡检&#xff0c;本文档旨在说明如何使用巡检工具对 TDengine 的运行环境进行自动化检查。 安装工具使用方法 工具支持通过 help 参数查看支持的语法 Usage: taosinspect [OPTIONS]Check…...

8.7 基于EAP-AKA的订阅转移

8.7 基于EAP-AKA的订阅转移 以下场景描述如下情况&#xff1a; • 主ODSA设备应用程序被允许用于该类型主设备&#xff0c;且已获得服务提供商&#xff08;SP&#xff09;授权。 • 终端用户在存有活跃订阅的旧主设备上发起订阅转移请求&#xff0c;且可访问eSIM数据。 • 由于…...

qwen 2.5 并行计算机制:依靠 PyTorch 和 Transformers 库的分布式能力

qwen 2.5 并行计算机制:依靠 PyTorch 和 Transformers 库的分布式能力 完整可运行代码: import torch import torch.nn.functional as F from transformers...

调整数据集的方法

我们对worldquant中的数据&#xff0c; 对数据频率怎么算 在 WorldQuant 平台中&#xff0c;数据更新频率是影响量化策略有效性、回测准确性和实盘交易表现的核心因素之一。它决定了数据的时效性和连续性&#xff0c;直接关系到策略能否捕捉市场动态、应对突发事件或适应不同…...

TCP 四次挥手

引言&#xff1a;优雅的告别 在网络通信中&#xff0c;建立连接需要三次握手&#xff0c;而终止连接则需要四次挥手。这种设计体现了 TCP 协议的可靠性和完整性原则。本文将用通俗易懂的方式&#xff0c;深入解析四次挥手的原理、状态转换和实际应用&#xff0c;帮助您掌握这一…...

MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法|文献速递-深度学习医疗AI最新文献

Title 题目 MSTNet: Multi-scale spatial-aware transformer with multi-instance learning for diabetic retinopathy classification MSTNet&#xff1a;用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法 01 文献速递介绍 糖尿病视网膜病变&#…...

docker运行程序Killed异常排查

问题描述 我最近开发了一个C 多线程程序&#xff0c;测试没有问题&#xff0c;封装docker测试也没有问题&#xff0c;然后提交给客户了&#xff0c;然后在他那边测试有问题&#xff0c;不定时、不定位置异常中断&#xff0c;以前一直认为只要封装了docker就万事大吉&#xff0…...

【数学 逆序对 构造】P12386 [蓝桥杯 2023 省 Python B] 混乱的数组|普及+

本文涉及知识点 数学 构造 P12386 [蓝桥杯 2023 省 Python B] 混乱的数组 题目描述 给定一个正整数 x x x&#xff0c;请找出一个尽可能短的仅含正整数的数组 A A A 使得 A A A 中恰好有 x x x 对 i , j i, j i,j 满足 i < j i < j i<j 且 A i > A j A_…...

Excel 批量下载PDF、批量下载考勤图片——仙盟创梦IDE

在办公场景中&#xff0c;借助应用软件实现 Excel 批量处理考勤图片、电子文档与 PDF&#xff0c;具有诸多显著优势。 从考勤图片处理来看&#xff0c;通过 Excel 批量操作&#xff0c;能快速提取图片中的考勤信息&#xff0c;如员工打卡时间、面部识别数据等&#xff0c;节省…...

PCIe-Error Detection(一)

下表为PCIe协议中给出的错误&#xff1a; 一、可纠正错误&#xff08;Correctable Errors&#xff0c;8种&#xff09;​​ ​​检错机制​​ ​​错误名称​​​​检测层级​​​​触发条件​​​​Receiver Error​​Physical接收端均衡器&#xff08;EQ&#xff09;监测到…...

向量空间的练习题目

1.考虑 中的向量x1 和x2 求每一向量的长度 令x3x1x2,求x3的长度&#xff0c;它的长度与x1和x2的和有什么关系&#xff1f; 2.重复练习1&#xff0c;取向量 3.令C为复数集合&#xff0c;定义C上的加法为 (abi)(cdi)(ac)(bd)i 并定义标量乘法为对所有实数a (abi) a bi 证明&…...

Leetcode 2123. 使矩阵中的 1 互不相邻的最小操作数

1.题目基本信息 1.1.题目描述 给你一个 下标从 0 开始 的矩阵 grid。每次操作&#xff0c;你可以把 grid 中的 一个 1 变成 0 。 如果一个矩阵中&#xff0c;没有 1 与其它的 1 四连通&#xff08;也就是说所有 1 在上下左右四个方向上不能与其他 1 相邻&#xff09;&#x…...

MySQL高可用集群

https://dev.mysql.com/doc/mysql-shell/8.4/en/mysql-innodb-cluster.html 1 什么是MySQL高可用集群 MySQL高可用集群&#xff1a;MySQL InnoDB ClusterInnoDB Cluster是MySQL官方实现高可用读写分离的架构方案&#xff0c;包含以下组件 MySQL Group Replication&#xff1a;简…...

day14 leetcode-hot100-27(链表6)

21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 1. 暴力法 思路 创建一个空节点&#xff0c;用来组装这两个链表&#xff0c;谁小谁就是下一个节点。 知识 创建空节点&#xff1a;ListNode n1 new ListNode(-1); 具体代码 /*** Definition for singly-l…...

YOLOv5 :训练自己的数据集

- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rnFa-IeY93EpjVu0yzzjkw) 中的学习记录博客** - **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 我们接着上一篇文章配置完YOLOv5需要的环境后&#…...

flutter项目迁移空安全

重中之重 备份好项目文件&#xff0c;甚至连已经加载好的flutter库也可以备份。环境包升级 2.1 不要直接换成flutter:3.0以上的版本&#xff0c;这样做既有基本的库兼容问题&#xff0c;又有空安全下的语法问题(整个项目中需要增加 late、?、!的语法错误&#xff0c;一片报错的…...

vue element日期范围选择器只能选择指定天数内的

<el-date-pickerv-model"dateRange"type"daterange"range-separator"至"start-placeholder"开始日期"end-placeholder"结束日期"format"yyyy-MM-dd"value-format"yyyy-MM-dd"clearable:picker-optio…...

从 AMQP 到 RabbitMQ:核心组件设计与工作原理(二)

五、RabbitMQ 工作原理全揭秘 在深入了解了 RabbitMQ 的核心组件之后&#xff0c;接下来让我们深入探究 RabbitMQ 的工作原理&#xff0c;揭开其在消息生产、投递、消费以及可靠性保障等方面的神秘面纱。 5.1 消息生产与投递流程 建立连接与信道&#xff1a;生产者首先通过 …...

MySql(十二)

目录 MySql约束 1.添加主键约束 语法格式 1&#xff09;创建一个带主键的表 查看表结构 2&#xff09;创建表的时候指定主键名称 查看表结构 3&#xff09;创建一个表然后&#xff0c;然后再使用alter为列添加主键 查看表结构 4&#xff09;为表添加数据 1---正常数据 2---主键…...

51c视觉~3D~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/13954440 #SceneTracker 在4D时空中追踪万物&#xff01;国防科大提出首个长时场景流估计方法 本篇分享 TPAMI 2025 论文​​SceneTracker: Long-term Scene Flow Estimation Network​​&#xff0c;国防科大提出首…...

windows11安装编译QtMvvm

windows11安装编译QtMvvm 1 从github下载代码2 官方的Download/Installtion3 自行构建编译QtMvvm遇到的问题3.1 `qmake`问题执行命令报错原因分析qmake报错:找不到编译器 cl解决方案3.2 `make qmake_all`问题执行命令报错原因分析make命令未识别解决方案3.3 缺少`perl`问题执行…...

【2025年电工杯数学建模竞赛A题】光伏电站发电功率日前预测问题+完整思路+paper+源码

本人7年数学建模竞赛经验&#xff0c;历史获奖率百分之百。团队成员都是拿过全国一等奖的硕博&#xff0c;有需要数模竞赛帮助的可以私信我 本题主要涉及数据预测&#xff0c;数据分析&#xff0c;机器学习&#xff0c;时间序列等知识 1.问题背景与问题描述 2.解题思路分析 …...

OpenCv高阶(十九)——dlib关键点定位

文章目录 一、什么是人脸关键点定位&#xff1f;二、关键点模型的下载及关键信息的理解三、dlib关键点定位的简单实现&#xff08;1&#xff09;导入必要的库&#xff08;2&#xff09;从指定路径读取图像文件&#xff08;3&#xff09;创建dlib的正面人脸检测器对象&#xff0…...

BUUCTF之[ACTF2020 新生赛]BackupFile

打开环境就一句话 找出源文件! 结合题目名字&#xff1a;BackupFile 先用dirsearct扫描网站文件 发现一个index.php.bak ,拼接url下载 打开发现php代码 <?php include_once "flag.php";if(isset($_GET[key])) {$key $_GET[key];if(!is_numeric($key)) {exit…...

头歌之动手学人工智能-Pytorch 之autograd

目录 第1关&#xff1a;Variable 任务描述 编程要求 测试说明 没有伟大的愿望&#xff0c;就没有伟大的天才。——巴尔扎克开始你的任务吧&#xff0c;祝你成功&#xff01; 第2关&#xff1a;Variable 属性 任务描述 编程要求 测试说明 真正的科学家应当是个幻想家&a…...

OIer常用的软件

前言 现在许多软件的官网多不好找&#xff0c;所以我今天就将常用的一些软件官网地址翻了出来&#xff0c;并简单介绍了他的用法。 正文 1.DEV-C DEV-C 用途&#xff1a;c编译软件&#xff0c;是OIer的生涯之路的必备软件 2.Katex KATex 用途&#xff1a;展现公式的软件&…...

Centos7.x内网环境Jenkins前端打包环境配置

Centos7.x内网环境Jenkins前端打包环境配置 参考地址&#xff1a; https://www.cnblogs.com/guangdelw/p/18763336 https://2048.csdn.net/682c1be8606a8318e857d687.html 前言&#xff1a;环境描述和目标 最近公司新接了一个项目&#xff0c;要求是&#xff1a;需要再桌面…...