nav2笔记-250603

article/2025/6/15 9:04:47
  1. 合作背景
    • AMD与Open Navigation在过去几个月里进行了合作,旨在向ROS 2社区展示AMD强大的Ryzen AI、Embedded+和Kria能力。
  2. 演示内容
    • 帖子提到,他们已经开始展示如何使用Ryzen AI为自主机器人产品提供动力,在各种现实世界和具有挑战性的情况下进行演示。
  3. 技术特点
    • 这些演示中使用的设备包含了强大且现代的AMD x86 CPU,这是用户所熟悉和喜爱的。
    • 帖子虽然未详细描述Ryzen AI、Embedded+和Kria的具体技术细节,但强调了这些技术的强大能力,并暗示它们能够支持自主机器人在复杂环境中的运行。
  4. 应用场景
    • 演示涵盖了城市3D环境和室内长时间运行的场景,这表明Ryzen AI等技术不仅适用于室内环境,也能应对室外复杂多变的环境。
  5. 社区意义
    • 通过这些演示,AMD和Open Navigation希望向ROS 2社区展示其技术的实用性和潜力,鼓励开发者利用这些技术来开发更先进的自主机器人产品。
  6. 未来展望
    • 帖子虽然未直接提及未来计划,但暗示了这种合作可能会继续深化,为ROS 2社区带来更多创新和实用的技术解决方案。

这份参考资料是一个GitHub项目仓库,名为“opennav_amd_demonstrations”,由Open Navigation组织维护,主要展示了使用AMD的Ryzen AI及其他技术与ROS 2结合的演示。以下是对该项目的详细总结讲解:

  1. 项目概述
    • 项目名称:opennav_amd_demonstrations
    • 组织:open-navigation
    • 描述:该项目包含使用AMD的Ryzen AI CPU、GPU、NPU及相关加速技术,结合Nav2和ROS 2 Humble的演示和分析,展示了这些技术在嵌入式解决方案中的适用性。
  2. 演示内容
    • 室内2D导航:展示了在室内环境中基于2D地图的导航能力。
    • 城市3D导航:展示了在城市环境中基于3D地图的导航能力,这要求更高的计算能力和感知精度。
    • 室外GPS导航:展示了在室外环境中利用GPS进行导航的能力。
  3. 技术特点
    • 高效计算:演示中使用的Ryzen AI-powered计算机在16核、60W的配置下,运行自主程序、Nav2自主导航、3D激光雷达和摄像头感知及定位时,平均CPU利用率仅为10.85%,显示出强大的计算能力。
    • 低资源占用:整个自主、感知和定位系统仅需2个AMD Zen 4核心即可处理,大大减轻了系统负担,使得更多计算任务可以并行运行。
    • 快速构建:相比使用Intel i7-1365U的X1 Carbon(Gen 11),使用Ryzen AI计算机构建Nav2的时间缩短了近一半(从23分钟3秒缩短到10分钟15秒)。
  4. 硬件平台
    • Honeybee参考平台:演示围绕Clearpath Robotics的Jackal机器人进行,该机器人配备了AMD的Ryzen AI技术,以及其他必要的传感器和控制器。
  5. 软件架构
    • ROS 2基础:项目采用了ROS 2作为基础框架,利用其强大的模块化和可扩展性。
    • Nav2集成:集成了Nav2导航堆栈,用于实现复杂的导航任务。
    • 定制化启动文件:提供了定制化的启动文件,方便用户根据需求启动不同的系统组件和演示。
  6. 开发指南
    • 文档丰富:项目包含多个开发者指南,涵盖了新机器人计算机的引导、ROS 2网络设置、野外实验网络设置、远程数据可视化、软件开机自启动等内容。
  7. 资源利用与性能
    • 低功耗高性能:项目强调了Ryzen AI计算机在低功耗下的高性能表现,相比Nvidia Jetson在最大功率模式或Intel NUC,提供了更具性价比的解决方案。
    • 未来优化:项目还计划进一步挖掘Ryzen AI计算机内置的GPU和NPU潜力,用于加速工作负载和实时AI任务。
  8. 使用建议
    • 推荐使用:项目强烈推荐考虑使用Ryzen AI驱动的设备进行未来的机器人产品和项目开发,特别是对于需要更强大x86核心的应用场景。
  9. 注意事项
    • 网络配置:提供了关于网络配置的建议,以避免因订阅大型主题而导致的网络拥堵和程序停滞。
    • 摄像头选择:根据不同的机器人配置,提供了关于使用Realsense D435或Orbecc 355摄像头的指导。

总结来说,这个GitHub项目展示了AMD Ryzen AI技术在自主机器人导航领域的强大潜力和实际应用效果。通过结合Nav2和ROS 2,项目提供了完整的参考应用,展示了在室内2D、城市3D和室外GPS导航场景下的高效性能。同时,项目还提供了丰富的开发指南和注意事项,帮助开发者更好地利用这些技术。


在ROS 2(Robot Operating System 2)中,TEB(Timed Elastic Band)算法是使用较为广泛的导航算法之一,特别是在路径规划和局部避障方面。TEB算法是基带弹性带(Elastic Band)算法的改进版,加入了时间优化,能够更好地处理动态环境中的路径规划问题。

以下是一个关于如何在ROS 2中使用TEB算法进行导航的简要教程:

1. 环境准备

  • 安装ROS 2:确保你的系统上已经安装了ROS 2。你可以从ROS 2官方网站下载并安装适合你操作系统的版本。
  • 安装Nav2:TEB算法是Nav2(Navigation 2)堆栈的一部分,因此你需要安装Nav2。Nav2是ROS 2中用于自主导航的官方软件包。

2. 安装Nav2和相关软件包

你可以使用以下命令安装Nav2及其相关软件包(包括TEB):

sudo apt update
sudo apt install ros-<ros2-distro>-navigation2 ros-<ros2-distro>-nav2-bringup

bash

sudo apt update
sudo apt install ros-<ros2-distro>-navigation2 ros-<ros2-distro>-nav2-bringup

<ros2-distro>替换为你安装的ROS 2版本,例如humblefoxy等。

3. 配置Nav2以使用TEB算法

  • 修改Nav2参数文件:Nav2的参数通常存储在YAML文件中。你需要找到或创建一个配置文件,用于指定TEB作为局部规划器。
  • 设置局部规划器:在配置文件中,将local_planner参数设置为teb_local_planner/TebLocalPlannerROS

示例配置文件片段:

local_planner: "teb_local_planner/TebLocalPlannerROS"TebLocalPlannerROS:odom_topic: "odom"map_frame: "map"# ... 其他TEB相关参数

yaml

local_planner: "teb_local_planner/TebLocalPlannerROS"
TebLocalPlannerROS:
odom_topic: "odom"
map_frame: "map"
# ... 其他TEB相关参数

4. 启动Nav2导航堆栈

  • 启动模拟器或真实机器人:根据你的需求,启动Gazebo模拟器或连接你的真实机器人。
  • 启动Nav2:使用ros2 launch命令启动Nav2导航堆栈,并指定你的配置文件。

示例启动命令:

ros2 launch nav2_bringup navigation_launch.py params_file:=/path/to/your/params.yaml

bash

ros2 launch nav2_bringup navigation_launch.py params_file:=/path/to/your/params.yaml

5. 运行导航任务

  • 设置目标点:使用rviz2或命令行工具设置目标点,让机器人导航到指定位置。
  • 监控导航过程:在rviz2中监控机器人的导航过程,观察TEB算法如何规划路径并避开障碍物。

6. 调整TEB参数

  • 优化性能:根据实际运行情况,你可能需要调整TEB算法的参数以优化性能。这些参数包括最大速度、加速度、时间优化权重等。
  • 参考文档:参考TEB算法的官方文档或相关教程,了解更多关于参数调整的信息。

7. 调试与优化

  • 日志分析:检查ROS 2的日志输出,分析导航过程中可能出现的问题。
  • 性能调优:根据日志和实际运行情况,调整TEB参数和Nav2的整体配置,以提高导航性能。

额外资源

  • 官方文档:访问Nav2官方文档和TEB算法GitHub页面获取更多详细信息和最新更新。
  • 社区支持:加入ROS 2和Nav2的社区论坛,如ROS Discourse,与其他开发者交流经验和解决方案。

通过以上步骤,你应该能够在ROS 2中成功配置和使用TEB算法进行机器人导航。根据具体应用场景和机器人硬件,你可能需要进行一些参数调整和优化。


总结

  1. 导航算法概述
    • 导航堆栈核心:Nav2通过ROS action服务器使用插件来实现导航算法,主要包括规划器(planner)和控制器(controller)服务器。
    • 算法插件:规划器和控制器服务器可以托管一个或多个算法插件,每个插件都有其特定的配置,适用于不同的动作或机器人状态。
  2. 规划器服务器(Planner Server)
    • 功能:负责计算机器人的路径。
    • 可用插件
      • NavFn Planner:使用Dijkstra或A*算法,适用于圆形差速和圆形全向机器人。
      • Smac Planner 2D:2D A*算法实现,支持4或8连通邻域,适用于多种圆形机器人。
      • Theta Star Planner:Theta*算法实现,创建非离散定向路径段,适用于圆形差速和全向机器人。
      • *Smac Hybrid-A Planner**:支持任意形状的阿克曼和腿足式机器人,考虑最小转弯半径和完整足迹进行碰撞避免。
      • Smac Lattice Planner:基于状态格子规划器,确保路径符合机器人运动学约束,支持多种机器人类型。
  3. 控制器服务器(Controller Server)
    • 功能:生成机器人完成任务所需的控制指令。
    • 可用插件
      • DWB Controller:基于动态窗口方法(DWA),适用于差速、全向、阿克曼和腿足式机器人。
      • TEB Controller:时间最优控制器,基于Timed Elastic Band方法,适用于多种机器人类型。
      • Regulated Pure Pursuit (RPP) Controller:纯追踪算法的变体,适用于服务或工业机器人。
      • Vector Pursuit Controller:基于向量追踪算法,适用于高速路径跟踪和锐角转弯。
  4. 配置示例
    • 规划器服务器配置:通过planner_plugins参数指定要使用的规划器插件,并在插件命名空间中配置具体参数。
    • 控制器服务器配置:通过controller_plugins参数指定要使用的控制器插件,并在插件命名空间中配置具体参数。
  5. 生命周期节点
    • 规划器和控制器服务器通过生命周期节点在ROS 2中启动,便于系统的启动和关闭管理。

简化配置教程

以下是一个简化的配置教程,帮助你在Nav2中设置规划器和控制器服务器:

1. 安装Nav2

确保你的ROS 2工作空间中已经安装了Nav2。如果没有,可以通过以下命令安装(以ROS 2 Humble为例):

sudo apt update
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup

bash

sudo apt update
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup
2. 创建配置文件

在你的ROS 2包中创建一个配置文件夹(如config),并在其中创建两个YAML文件:planner_config.yamlcontroller_config.yaml

planner_config.yaml
planner_server:ros__parameters:planner_plugins: ["GridBased"]GridBased:plugin: "nav2_navfn_planner::NavfnPlanner"  # 或选择其他规划器插件# 可以添加其他规划器特定参数

yaml

planner_server:
ros__parameters:
planner_plugins: ["GridBased"]
GridBased:
plugin: "nav2_navfn_planner::NavfnPlanner" # 或选择其他规划器插件
# 可以添加其他规划器特定参数
controller_config.yaml
controller_server:ros__parameters:controller_plugins: ["FollowPath"]FollowPath:plugin: "dwb_core::DWBLocalPlanner"  # 或选择其他控制器插件# 可以添加其他控制器特定参数

yaml

controller_server:
ros__parameters:
controller_plugins: ["FollowPath"]
FollowPath:
plugin: "dwb_core::DWBLocalPlanner" # 或选择其他控制器插件
# 可以添加其他控制器特定参数
3. 启动Nav2导航堆栈

在你的launch文件中,加载上述配置文件,并启动Nav2导航堆栈:

<launch><arg name="use_sim_time" default="true"/><include file="$(find-pkg-share nav2_bringup)/launch/navigation_launch.py"><arg name="use_sim_time" value="$(var use_sim_time)"/><arg name="params_file" value="$(find-pkg-share your_package_name)/config/planner_config.yaml"/><arg name="params_file" value="$(find-pkg-share your_package_name)/config/controller_config.yaml"/><!-- 可以添加其他参数 --></include>
</launch>

xml

<launch>
<arg name="use_sim_time" default="true"/>
<include file="$(find-pkg-share nav2_bringup)/launch/navigation_launch.py">
<arg name="use_sim_time" value="$(var use_sim_time)"/>
<arg name="params_file" value="$(find-pkg-share your_package_name)/config/planner_config.yaml"/>
<arg name="params_file" value="$(find-pkg-share your_package_name)/config/controller_config.yaml"/>
<!-- 可以添加其他参数 -->
</include>
</launch>

注意:在实际使用中,你可能需要将两个params_file参数合并为一个,或者通过其他方式合并配置文件,因为上述XML示例中直接使用两个params_file参数会导致后者覆盖前者。这里只是为了说明需要加载两个配置文件。

4. 运行和调试
  • 启动Gazebo模拟器或连接真实机器人
  • 使用rviz2设置目标点,观察机器人导航过程。
  • 检查日志输出,调试配置问题。

通过以上步骤,你可以在Nav2中成功配置规划器和控制器服务器,并使用不同的算法插件来实现机器人的导航功能。根据具体应用场景和机器人硬件,你可能需要进一步调整和优化算法参数。


在ROS 2中,Nav2结合Stage仿真器进行导航任务是一种常用的测试方法,尽管Nav2官方文档未直接提供Stage仿真的完整案例,但可通过整合关键组件实现功能验证。以下为推荐方案及关键实现要点:


推荐方案:基于Nav2与Stage的导航仿真

  1. 系统环境
    • ROS 2版本:Humble或更高版本
    • Stage仿真器:支持ROS 2的分支(如ros2-stagestage_ros
    • 依赖包nav2_bringupnav2_mapsstage_rosturtlebot3_description(或自定义机器人模型)
  2. 核心组件配置
    • 地图文件:使用.pgm格式地图(如turtlebot3_world.pgm),通过Stage加载虚拟环境。
    • 传感器模拟:Stage支持激光雷达(LaserScan)和里程计(Odometry)数据生成,可直接作为Nav2输入。
    • TF树:确保mapodombase_link的TF变换链完整,由Stage或Nav2的AMCL节点提供。
  3. 关键配置文件示例
    • Stage配置文件(world_file.world
      define floorplan model
      (size [20.0 20.0 0.1]pose [10.0 10.0 0 0]bitmap "turtlebot3_world.pgm"
      )define robot model
      (laser(range [0.0 10.0])odom_error [0.03 0.03 0.10 0.05]localization "odom"localization_origin [0 0 0 0]drive "omni"
      )

      plaintext

      define floorplan model
      (
      size [20.0 20.0 0.1]
      pose [10.0 10.0 0 0]
      bitmap "turtlebot3_world.pgm"
      )
      define robot model
      (
      laser(range [0.0 10.0])
      odom_error [0.03 0.03 0.10 0.05]
      localization "odom"
      localization_origin [0 0 0 0]
      drive "omni"
      )
    • Nav2配置文件(nav2_params.yaml
      amcl:ros__parameters:use_sim_time: Truealpha1: 0.2alpha2: 0.2alpha3: 0.2alpha4: 0.2
      planner_server:ros__parameters:expected_planner_frequency: 20.0planner_plugins: ["GridBased"]GridBased:plugin: "nav2_navfn_planner::NavfnPlanner"
      controller_server:ros__parameters:controller_plugins: ["FollowPath"]FollowPath:plugin: "dwb_core::DWBLocalPlanner"

      yaml

      amcl:
      ros__parameters:
      use_sim_time: True
      alpha1: 0.2
      alpha2: 0.2
      alpha3: 0.2
      alpha4: 0.2
      planner_server:
      ros__parameters:
      expected_planner_frequency: 20.0
      planner_plugins: ["GridBased"]
      GridBased:
      plugin: "nav2_navfn_planner::NavfnPlanner"
      controller_server:
      ros__parameters:
      controller_plugins: ["FollowPath"]
      FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"
  4. 启动流程
    • 启动Stage仿真器
       

      bash

      ros2 launch stage_ros stage_launch.py world_file:=/path/to/world_file.world
    • 启动Nav2导航堆栈
       

      bash

      ros2 launch nav2_bringup navigation_launch.py use_sim_time:=True map:=/path/to/map.yaml
    • 可视化(Rviz2)
       

      bash

      ros2 run rviz2 rviz2 -d $(ros2 pkg prefix nav2_bringup)/share/nav2_bringup/launch/nav2_default_view.rviz

关键点分析

  1. 为什么选择Stage?
    • 轻量级:Stage是2D仿真器,资源占用低,适合快速验证导航算法。
    • 兼容性:通过stage_ros包可与ROS 2无缝集成,支持激光雷达和里程计数据模拟。
    • 灵活性:可自定义地图和机器人模型,适配不同测试场景。
  2. 与Gazebo的对比
    • 优势:Stage启动速度快,资源消耗低,适合算法迭代测试。
    • 局限:不支持3D仿真和复杂物理交互,如动力学模拟。
  3. 替代方案
    • 自定义仿真器:如需更高性能或特定功能,可基于nav2_simple_commander开发轻量级仿真器。
    • Gazebo集成:若需3D仿真,建议使用Nav2与Gazebo的集成方案,但需更高硬件配置。

问题排查建议

  1. TF变换缺失
    • 确保robot_state_publisheramcl节点正常运行,检查TF树是否完整。
  2. 激光雷达数据异常
    • 验证Stage配置文件中激光雷达参数是否正确,检查话题名称是否与Nav2配置一致。
  3. 导航失败
    • 调整Nav2参数(如planner_frequencycontroller_frequency),或更换算法插件(如TEB控制器)。

总结

Nav2与Stage的组合为ROS 2用户提供了一个高效、低成本的导航算法验证平台。通过合理配置地图、传感器模拟和TF树,可快速搭建仿真环境。对于需要3D仿真或复杂物理交互的场景,可进一步探索Gazebo集成方案。


AMD与OpenNavigation合作,展示RyzenAI在ROS2自主机器人中的强大性能。项目通过室内2D、城市3D和室外GPS导航演示,验证了RyzenAI在低功耗(60W)下仅占用10.85% CPU的高效表现。硬件基于Clearpath Jackal机器人平台,软件集成ROS2和Nav2堆栈,包括TEB等先进算法。演示显示相比Intel设备,构建时间缩短近50%,推荐使用RyzenAI设备开发机器人产品。项目提供完整开发指南,涵盖网络配置、传感器选择等实用细节,为开发者提供了基于AMD技术的机器人导航解决方案参考。


 


http://www.hkcw.cn/article/abvumXjjCr.shtml

相关文章

黑马Java面试笔记之 消息中间件篇(RabbitMQ)

一. 消息丢失问题 RabbitMQ如何保证消息不丢失&#xff1f; 使用场景有&#xff1a; 异步发送&#xff08;验证码、短信、邮件... &#xff09;MYSQL和Redis&#xff0c;ES之间的数据同步分布式事务削峰填谷...... 消息丢失原因会有三种情况&#xff0c;分别分析一下 1.1 生…

如何使用插件和子主题添加WordPress自定义CSS(附:常见错误)

您是否曾经想更改网站外观的某些方面&#xff0c;但不知道怎么做&#xff1f;有一个解决方案——您可以将自定义 CSS&#xff08;层叠样式表&#xff09;添加到您的WordPress网站&#xff01; 在本文中&#xff0c;我们将讨论您需要了解的有关CSS的所有知识以及如何使用它来修…

NLP学习路线图(二十):FastText

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;词向量&#xff08;Word Embedding&#xff09;是基石般的存在。它将离散的符号——词语——转化为连续的、富含语义信息的向量表示&#xff0c;使得计算机能够“理解”语言。而在众多词向量模型中&#xff0c;FastT…

小巧实用,Windows文件夹着色软件推荐

软件介绍 本文介绍一款能实现Windows系统文件夹颜色分类的软件。 软件特点 这款软件免费且开源&#xff0c;体积仅1.35MB&#xff0c;小巧轻便&#xff0c;适合喜欢小工具的用户。 软件安装 安装过程十分便捷&#xff0c;打开软件后点击“install”即可完成安装。 基本操作…

解决Vditor加载Markdown网页很慢的问题(Vite+JS+Vditor)

1. 引言 在上一篇文章《使用Vditor将Markdown文档渲染成网页(ViteJSVditor)》中&#xff0c;详细介绍了通过Vditor将Markdown格式文档渲染成Web网页的过程&#xff0c;并且实现了图片格式居中以及图片源更换的功能。不过&#xff0c;笔者发现在加载这个渲染Markdown网页的时候…

leetcode hot100刷题日记——36.最长连续序列

解答&#xff1a; 实际上在哈希表中存储不重复的数字。 然后遍历哈希表&#xff0c;找间隔&#xff0c;更新最大间隔。 class Solution { public:int longestConsecutive(vector<int>& nums) {unordered_set<int>hash;for(int num:nums){hash.insert(num);}in…

Unity Mac 笔记本操作入门

在 macOS 笔记本电脑上使用 Unity Editor 的场景视图 (Scene View) 旋转视角&#xff0c;主要依赖于触摸板手势和键盘修饰键的组合。由于没有物理中键&#xff0c;操作方式会与 Windows 鼠标略有不同。 以下是具体的旋转视角操作&#xff1a; 1. 基本旋转视角 (Orbit) 这是最…

【笔记】使用Media Creation Tool给新主机装win10魔改iso

前提&#xff1a; win10的iso是魔改的 已经下载好在旧电脑 在这里随便挑一个符合你要求的Win10系统下载_Win10专业版_windows10正式版下载 - 系统之家 下载好win10版本的媒体创建工具https://www.microsoft.com/zh-cn/software-download/windows10 制作装机U盘 插入U盘 管理…

深圳南柯电子|储能EMC整改:如何节省70%整改费用的实战方法

在新能源产业蓬勃发展的当下&#xff0c;储能系统作为电网调峰、可再生能源消纳的核心载体&#xff0c;其电磁兼容性&#xff08;EMC&#xff09;问题日益成为制约行业发展的技术瓶颈。EMC&#xff08;Electromagnetic Compatibility&#xff09;即电磁兼容性&#xff0c;指设备…

R1-Searcher++新突破!强化学习如何赋能大模型动态知识获取?

R1-Searcher新突破&#xff01;强化学习如何赋能大模型动态知识获取&#xff1f; 大语言模型&#xff08;LLM&#xff09;虽强大却易因静态知识产生幻觉&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术成破局关键。本文将解读R1-Searcher框架&#xff0c;看其如何通…

用 Vue 做一个轻量离线的“待办清单 + 情绪打卡”小工具

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

6-2 MySQL 数据结构选择的合理性

6-2 MySQL 数据结构选择的合理性 文章目录 6-2 MySQL 数据结构选择的合理性1. 全表查询2. Hash 查询3. 二叉搜索树4. AVL 树5. B-Tree6.B Tree7. R树8. 小结附录&#xff1a;算法的时间复杂度9. 最后&#xff1a; 这篇文章是我蹲在《尚硅谷》-康师傅博主家的 WiFi 上(不是)&am…

红黑树与红黑树的插入——用C++实现

一、红黑树简介 红黑树是二叉搜索树的一种&#xff0c;区别于二叉平衡树&#xff0c;红黑树的平衡并不以平衡因子为依据进行平衡的调整而是以五条规则对红黑树进行定义&#xff0c;从而达成树的最长路径最多是树的最短路径的两倍长。以下是红黑树的五条规则&#xff1a; 节点非…

线程相关面试题

提示&#xff1a;线程相关面试题&#xff0c;持续更新中 文章目录 一、Java线程池1、Java线程池有哪些核心参数&#xff0c;分别有什么的作用&#xff1f;2、线程池有哪些拒绝策略&#xff1f;3、说一说线程池的执行流程?4、线程池核心线程数怎么设置呢&#xff1f;4、Java线程…

Axure设计案例:滑动拼图解锁

设计以直观易懂的操作方式为核心&#xff0c;只需通过简单的滑动动作&#xff0c;将拼图块精准移动至指定位置&#xff0c;即可完成解锁。这种操作模式既符合用户的日常操作习惯&#xff0c;在视觉呈现上&#xff0c;我们精心设计拼图图案&#xff0c;融入生动有趣的元素&#…

报表/报告组件(二)-实例与实现解释

上篇《报表/报告组件(一)-指标/属性组件设计》介绍了组件核心指标/属性设计&#xff0c;本文以实例介绍各个特性的实现和效果&#xff0c;实例是多个报告融合&#xff0c;显示所有的特性。 设计 指标/属性组件是报告/报表关键部分&#xff0c;上篇已介绍过&#xff0c;本节回顾…

django入门-orm数据库操作

一&#xff1a;下载数据库依赖项mysqlclient pip install mysqlclient 二&#xff1a;django配置文件配置数据库链接 路径&#xff1a;mysite2\mysite2\settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: data, # 数据库名称USER: root, …

开疆智能Profinet转Profibus网关连接CMDF5-8ADe分布式IO配置案例

本案例是客户通过开疆智能研发的Profinet转Profibus网关将PLC的Profinet协议数据转换成IO使用的Profibus协议&#xff0c;操作步骤如下。 配置过程&#xff1a; Profinet一侧设置 1. 打开西门子组态软件进行组态&#xff0c;导入网关在Profinet一侧的GSD文件。 2. 新建项目并…

【RabbitMQ】- Channel和Delivery Tag机制

在 RabbitMQ 的消费者代码中&#xff0c;Channel 和 tag 参数的存在是为了实现消息确认机制&#xff08;Acknowledgment&#xff09;和精细化的消息控制。 Channel 参数 作用 Channel 是 AMQP 协议的核心操作接口&#xff0c;通过它可以直接与 RabbitMQ 交互&#xff1a; 手…

详解代理型RAG与MCP服务器集成

检索增强型生成(RAG)将语言模型与外部知识检索相结合,让模型的回答基于最新的事实,而不仅仅是其训练数据呢。 RAG(高级别) 在 RAG 流程中,用户查询用于搜索知识库(通常通过向量数据库中的嵌入来实现),并将检索到的最相关文档“增强”到模型的提示中,以帮助生成事实…