nav2笔记-250603
- 合作背景:
- AMD与Open Navigation在过去几个月里进行了合作,旨在向ROS 2社区展示AMD强大的Ryzen AI、Embedded+和Kria能力。
- 演示内容:
- 帖子提到,他们已经开始展示如何使用Ryzen AI为自主机器人产品提供动力,在各种现实世界和具有挑战性的情况下进行演示。
- 技术特点:
- 这些演示中使用的设备包含了强大且现代的AMD x86 CPU,这是用户所熟悉和喜爱的。
- 帖子虽然未详细描述Ryzen AI、Embedded+和Kria的具体技术细节,但强调了这些技术的强大能力,并暗示它们能够支持自主机器人在复杂环境中的运行。
- 应用场景:
- 演示涵盖了城市3D环境和室内长时间运行的场景,这表明Ryzen AI等技术不仅适用于室内环境,也能应对室外复杂多变的环境。
- 社区意义:
- 通过这些演示,AMD和Open Navigation希望向ROS 2社区展示其技术的实用性和潜力,鼓励开发者利用这些技术来开发更先进的自主机器人产品。
- 未来展望:
- 帖子虽然未直接提及未来计划,但暗示了这种合作可能会继续深化,为ROS 2社区带来更多创新和实用的技术解决方案。
这份参考资料是一个GitHub项目仓库,名为“opennav_amd_demonstrations”,由Open Navigation组织维护,主要展示了使用AMD的Ryzen AI及其他技术与ROS 2结合的演示。以下是对该项目的详细总结讲解:
- 项目概述:
- 项目名称:opennav_amd_demonstrations
- 组织:open-navigation
- 描述:该项目包含使用AMD的Ryzen AI CPU、GPU、NPU及相关加速技术,结合Nav2和ROS 2 Humble的演示和分析,展示了这些技术在嵌入式解决方案中的适用性。
- 演示内容:
- 室内2D导航:展示了在室内环境中基于2D地图的导航能力。
- 城市3D导航:展示了在城市环境中基于3D地图的导航能力,这要求更高的计算能力和感知精度。
- 室外GPS导航:展示了在室外环境中利用GPS进行导航的能力。
- 技术特点:
- 高效计算:演示中使用的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秒)。
- 硬件平台:
- Honeybee参考平台:演示围绕Clearpath Robotics的Jackal机器人进行,该机器人配备了AMD的Ryzen AI技术,以及其他必要的传感器和控制器。
- 软件架构:
- ROS 2基础:项目采用了ROS 2作为基础框架,利用其强大的模块化和可扩展性。
- Nav2集成:集成了Nav2导航堆栈,用于实现复杂的导航任务。
- 定制化启动文件:提供了定制化的启动文件,方便用户根据需求启动不同的系统组件和演示。
- 开发指南:
- 文档丰富:项目包含多个开发者指南,涵盖了新机器人计算机的引导、ROS 2网络设置、野外实验网络设置、远程数据可视化、软件开机自启动等内容。
- 资源利用与性能:
- 低功耗高性能:项目强调了Ryzen AI计算机在低功耗下的高性能表现,相比Nvidia Jetson在最大功率模式或Intel NUC,提供了更具性价比的解决方案。
- 未来优化:项目还计划进一步挖掘Ryzen AI计算机内置的GPU和NPU潜力,用于加速工作负载和实时AI任务。
- 使用建议:
- 推荐使用:项目强烈推荐考虑使用Ryzen AI驱动的设备进行未来的机器人产品和项目开发,特别是对于需要更强大x86核心的应用场景。
- 注意事项:
- 网络配置:提供了关于网络配置的建议,以避免因订阅大型主题而导致的网络拥堵和程序停滞。
- 摄像头选择:根据不同的机器人配置,提供了关于使用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版本,例如humble
、foxy
等。
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算法进行机器人导航。根据具体应用场景和机器人硬件,你可能需要进行一些参数调整和优化。
总结
- 导航算法概述:
- 导航堆栈核心:Nav2通过ROS action服务器使用插件来实现导航算法,主要包括规划器(planner)和控制器(controller)服务器。
- 算法插件:规划器和控制器服务器可以托管一个或多个算法插件,每个插件都有其特定的配置,适用于不同的动作或机器人状态。
- 规划器服务器(Planner Server):
- 功能:负责计算机器人的路径。
- 可用插件:
- NavFn Planner:使用Dijkstra或A*算法,适用于圆形差速和圆形全向机器人。
- Smac Planner 2D:2D A*算法实现,支持4或8连通邻域,适用于多种圆形机器人。
- Theta Star Planner:Theta*算法实现,创建非离散定向路径段,适用于圆形差速和全向机器人。
- *Smac Hybrid-A Planner**:支持任意形状的阿克曼和腿足式机器人,考虑最小转弯半径和完整足迹进行碰撞避免。
- Smac Lattice Planner:基于状态格子规划器,确保路径符合机器人运动学约束,支持多种机器人类型。
- 控制器服务器(Controller Server):
- 功能:生成机器人完成任务所需的控制指令。
- 可用插件:
- DWB Controller:基于动态窗口方法(DWA),适用于差速、全向、阿克曼和腿足式机器人。
- TEB Controller:时间最优控制器,基于Timed Elastic Band方法,适用于多种机器人类型。
- Regulated Pure Pursuit (RPP) Controller:纯追踪算法的变体,适用于服务或工业机器人。
- Vector Pursuit Controller:基于向量追踪算法,适用于高速路径跟踪和锐角转弯。
- 配置示例:
- 规划器服务器配置:通过
planner_plugins
参数指定要使用的规划器插件,并在插件命名空间中配置具体参数。 - 控制器服务器配置:通过
controller_plugins
参数指定要使用的控制器插件,并在插件命名空间中配置具体参数。
- 规划器服务器配置:通过
- 生命周期节点:
- 规划器和控制器服务器通过生命周期节点在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.yaml
和controller_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的导航仿真
- 系统环境
- ROS 2版本:Humble或更高版本
- Stage仿真器:支持ROS 2的分支(如
ros2-stage
或stage_ros
) - 依赖包:
nav2_bringup
、nav2_maps
、stage_ros
、turtlebot3_description
(或自定义机器人模型)
- 核心组件配置
- 地图文件:使用
.pgm
格式地图(如turtlebot3_world.pgm
),通过Stage加载虚拟环境。 - 传感器模拟:Stage支持激光雷达(LaserScan)和里程计(Odometry)数据生成,可直接作为Nav2输入。
- TF树:确保
map
→odom
→base_link
的TF变换链完整,由Stage或Nav2的AMCL节点提供。
- 地图文件:使用
- 关键配置文件示例
- 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"
- Stage配置文件(
- 启动流程
- 启动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
- 启动Stage仿真器:
关键点分析
- 为什么选择Stage?
- 轻量级:Stage是2D仿真器,资源占用低,适合快速验证导航算法。
- 兼容性:通过
stage_ros
包可与ROS 2无缝集成,支持激光雷达和里程计数据模拟。 - 灵活性:可自定义地图和机器人模型,适配不同测试场景。
- 与Gazebo的对比
- 优势:Stage启动速度快,资源消耗低,适合算法迭代测试。
- 局限:不支持3D仿真和复杂物理交互,如动力学模拟。
- 替代方案
- 自定义仿真器:如需更高性能或特定功能,可基于
nav2_simple_commander
开发轻量级仿真器。 - Gazebo集成:若需3D仿真,建议使用Nav2与Gazebo的集成方案,但需更高硬件配置。
- 自定义仿真器:如需更高性能或特定功能,可基于
问题排查建议
- TF变换缺失:
- 确保
robot_state_publisher
和amcl
节点正常运行,检查TF树是否完整。
- 确保
- 激光雷达数据异常:
- 验证Stage配置文件中激光雷达参数是否正确,检查话题名称是否与Nav2配置一致。
- 导航失败:
- 调整Nav2参数(如
planner_frequency
、controller_frequency
),或更换算法插件(如TEB控制器)。
- 调整Nav2参数(如
总结
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技术的机器人导航解决方案参考。
相关文章:

nav2笔记-250603
合作背景: AMD与Open Navigation在过去几个月里进行了合作,旨在向ROS 2社区展示AMD强大的Ryzen AI、Embedded和Kria能力。 演示内容: 帖子提到,他们已经开始展示如何使用Ryzen AI为自主机器人产品提供动力,在各种现实世…...

指纹识别+精准化POC攻击
开发目的 解决漏洞扫描器的痛点 第一就是扫描量太大,对一个站点扫描了大量的无用 POC,浪费时间 指纹识别后还需要根据对应的指纹去进行 payload 扫描,非常的麻烦 开发思路 我们的思路分为大体分为指纹POC扫描 所以思路大概从这几个方面…...
LeetCode[404]左叶子之和
思路: 题目要求求出左叶子的和,左叶子的条件是左右节点为空且是左子树的叶子节点才叫左叶子节点,那么右子树的左叶子节点的和是什么呢?这样想就引出了递归的顺序,后序遍历,求出左右子树的节点和,…...

mac环境下的python、pycharm和pip安装使用
Python安装 Mac环境下的python安装 下载地址:https://www.jetbrains.com.cn/pycharm/ 一直点击下一步即可完成 在应用程序中会多了两个图标 IDLE 和 Python launcher IDLE支持在窗口中直接敲python命令并立即执行,双击即可打开 Python launcher双击打…...
C语言多级指针深度解析:从一级到三级的奥秘
资料合集下载链接: https://pan.quark.cn/s/472bbdfcd014 在C语言中,指针是理解内存和进行底层编程的关键。我们知道,一个一级指针存储的是一个变量的内存地址。但C语言的强大之处在于,指针本身也可以有自己的地址,而存储这个指针的地址的变量,就是一个更高层次…...
uni-app学习笔记十九--pages.json全局样式globalStyle设置
pages.json 页面路由 pages.json 文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。 导航栏高度为 44px (不含状态栏),tabBar 高度为 50px (不含安全区)。 它类似微信小程序中app.json的页面管理部…...

BUUCTF[极客大挑战 2019]Havefun 1题解
BUUCTF[极客大挑战 2019]Havefun 1题解 题目分析解题理解代码逻辑:构造Payload: 总结 题目分析 生成靶机,进入网址: 首页几乎没有任何信息,公式化F12打开源码,发现一段被注释的源码: 下面我们…...
【基础】Unity中Camera组件知识点
一、投影模式 (Projection) 1. 透视模式 (Perspective) 原理:模拟人眼,近大远小(锥形体视锥) 核心参数: Field of View (FOV):垂直视场角 典型值:第一人称 60-90,驾驶舱 30-45 特…...

Tomcat优化篇
目录 一、Tomcat自身配置 1.Tomcat管理页面 2. 禁用AJP服务 3.Executor优化 4.三种运行模式 5.web.xml 6.Host标签 7.Context标签 8.启动速度优化 9.其他方面 二、JMeter测试 笔者推荐 一、Tomcat自身配置 1.Tomcat管理页面 我们可以打开Tomcat的管理页面ÿ…...

Temporal Fusion Transformer(TFT)扩散模型时间序列预测模型
1. TFT 简介 Temporal Fusion Transformer(TFT)模型是一种专为时间序列预测设计的高级深度学习模型。它结合了神经网络的多种机制处理时间序列数据中的复杂关系。TFT 由 Lim et al. 于 2019年提出,旨在处理时间序列中的不确定性和多尺度的依…...

【LangServe部署流程】5 分钟部署你的 AI 服务
目录 一、LangServe简介 二、环境准备 1. 安装必要依赖 2. 编写一个 LangChain 可运行链(Runnable) 3. 启动 LangServe 服务 4. 启动服务 5. 使用 API 进行调用 三、可选:访问交互式 Swagger 文档 四、基于 LangServe 的 RAG 应用部…...

攻防世界-unseping
进入环境 在获得的场景中发现PHP代码并进行分析 编写PHP编码 得到 Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319 将其传入 想执行ls,但是发现被过滤掉了 使用环境变量进行绕过 $a new…...
微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
2025 年 6 月 2 日,微软正式在自家 Bing 应用中上线了一项名为 “Bing Video Creator” 的新功能,为广大用户带来了全新的创作体验。 Bing Video Creator 背靠 OpenAI 当红的 Sora 视频生成模型,用户只需输入文字描述,就能直接生…...
(13)java+ selenium->元素定位大法之By_partial_link_text
1.简介 在上一篇中我们说了link_text,目前我们接着看partial link text,顾名思义是通过链接定位的(官方说法:超链接文本定位)。我们在上一篇的文章末尾有提到,这种方式的定位属于模糊匹配定位,什么是partial link text呢,看到part这个单词我们就可以知道,当这个文字超…...
Xget 正式发布:您的高性能、安全下载加速工具!
您可以通过 star 我固定的 GitHub 存储库来支持我,谢谢!以下是我的一些 GitHub 存储库,很有可能对您有用: tzst Xget Prompt Library 原文 URL:https://blog.xi-xu.me/2025/06/02/xget-launch-high-performance-sec…...

[yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码
【FasterNet介绍】 为了设计快速神经网络,许多工作都集中在减少浮点运算的数量(FLOPs)上。 然而,我们观察到FLOPs的减少并不一定会导致延迟的类似程度的减少。 这主要源于低效率的每秒浮点运算(FLOPS)。 为了实现更快的网络&#…...

一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas 集成了 Matplotlib,提供了简单高效的绘图接口,使数据可视化变得直观便捷。本指南将详…...

企业级安全实践:SSL/TLS 加密与权限管理(一)
引言 ** 在数字化转型的浪潮中,企业对网络的依赖程度与日俱增,从日常办公到核心业务的开展,都离不开网络的支持。与此同时,网络安全问题也日益严峻,成为企业发展过程中不可忽视的重要挑战。 一旦企业遭遇网络安全事…...

2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略
1.VSCode Windows 最新安装指南: 以下是 2025 年 Windows 系统下安装 Visual Studio Code(VSCode)的最新指南,结合官方文档与实际操作经验整理而成: 一、下载官方安装包: 1.访问官网: 打开浏览器,进入 VSCode 官方下载页面https://code.visualstudio.com/Download 2…...
RabbitMQ如何保证消息可靠性
RabbitMQ是一个流行的开源消息代理,它提供了可靠的消息传递机制,广泛应用于分布式系统和微服务架构中。在现代应用中,确保消息的可靠性至关重要,以防止消息丢失和重复处理。本文将详细探讨RabbitMQ如何通过多种机制保证消息的可靠…...

【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码
三点法制导是一种导弹制导策略,主要用于确保导弹能够准确追踪并击中移动目标。该方法通过计算导弹、目标和制导站之间的相对位置关系,实现对目标的有效制导。 本文给出MATLAB下的三点法例程,模拟平面上捕获运动目标的情况订阅专栏后可直接查看源代码,粘贴到MATLAB空脚本中即…...
Spring Security用户管理机制详解
UserDetailsService契约解析 核心方法解析 UserDetailsService接口仅定义了一个关键方法loadUserByUsername(),其方法签名如下: public interface UserDetailsService {UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; }该方法作为用…...

如何爬取google应用商店的应用分类呢?
以下是爬取Google Play商店应用包名(package name)和对应分类的完整解决方案,采用ScrapyPlaywright组合应对动态渲染页面,并处理反爬机制: 完整爬虫实现 1. 安装必要库 # 卸载现有安装pip uninstall playwright scrapy-playwright -y# 重新…...

SQL Relational Algebra(数据库关系代数)
目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product(笛卡尔积) Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…...
如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库?
如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库? package com.huaweicloud.sdk.core.auth does not exist 解决方案 # 下载huaweicloud-sdk-core-3.1.142.jar wget https://repo1.maven.org/maven2/com/huaweicloud/sdk/huaweicloud-sdk-core/3.1.142/huawe…...
Electron桌面应用下,在拍照、展示pdf等模块时,容易导致应用白屏
Electron 应用白屏问题分析与解决方案 Electron 应用中拍照、PDF展示等模块导致白屏的常见原因通常与内存泄漏、渲染进程崩溃或资源加载超时有关。以下是具体排查与解决方法: 检查内存泄漏 项目中,分析代码,高频操作或未释放的资源可能导致…...

智能工业时代:工业场景下的 AI 大模型体系架构与应用探索
自工业革命以来,工业生产先后经历了机械化、电气化、自动化、信息化的演进,正从数字化向智能化迈进,人工智能技术是新一轮科技革命和产业变革的重要驱动力量,AI 大模型以其强大的学习计算能力掀开了人工智能通用化的序幕ÿ…...
【git stash切换】
问题 当前正在修改对应某个bug,突然来了个更紧急的工作,需要保留现场,去对应更紧急的事务,git该如何操作? 1. 查看当前工作状态(确认修改) git status 2. 保存当前工作现场(包含…...
React 18 生命周期详解与并发模式下的变化
1. React 生命周期概述 React 组件的生命周期可以分为三个阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting),以及错误处理阶段。 1.1. 挂载阶段(Mounting&#…...

易语言使用OCR
易语言使用OCR 用易语言写个脚本,需要用到OCR,因此我自己封装了一个OCR到DLL。 http://lkinfer.1it.top/ 视频演示:https://www.bilibili.com/video/BV1Zg7az2Eq3/ 支持易语言、c、c#使用,平台限制:window 10 介绍…...