华东师范地面机器人融合空中无人机视角的具身导航!KiteRunner:语言驱动的户外环境合作式局部-全局导航策略
- 作者:Shibo Huang 1 ^{1} 1, Chenfan Shi 1 ^{1} 1, Jian Yang 2 ^{2} 2, Hanlin Dong 1 ^{1} 1, Jinpeng Mi 3 ^{3} 3, Ke Li 2 ^{2} 2, Jianfeng Zhang 1 ^{1} 1, Miao Ding 4 ^{4} 4, Peidong Liang 5 ^{5} 5, Xiong You 2 ^{2} 2, Xian Wei 1 ^{1} 1
- 单位: 1 ^{1} 1华东师范大学软件工程研究所, 2 ^{2} 2信息工程大学地理空间信息学院, 3 ^{3} 3上海理工大学机器智能研究所, 4 ^{4} 4辽宁工程技术大学软件学院; 5 ^{5} 5福建(泉州)先进制造技术研究所
- 论文标题:KiteRunner: Language-Driven Cooperative Local-Global Navigation Policy with UAV Mapping in Outdoor Environments
- 论文链接:https://arxiv.org/pdf/2503.08330
主要贡献
- 语言驱动的导航策略:提出了结合扩散模型和无人机正射影像的全局规划策略,以实现高效的长距离导航。
- 全局概率图生成:通过无人机正射影像生成实时全局概率图,提供高精度的环境可通行信息。
- 定位感知的局部规划器:开发了定位感知的局部规划器,能够在长距离导航中快速定位并优化路径。
- 实验验证:实验结果显示,KiteRunner在路径效率、干预次数和执行时间上优于现有方法,特别是在动态和不可预测的环境中表现出色。
研究背景
研究问题
- 论文主要解决的问题是自主导航在开放世界室外环境中面临的挑战,主要包括动态条件的整合、长距离空间推理和语义理解。
- 传统方法难以平衡局部规划、全局规划和语义任务执行,而现有的大型语言模型(LLMs)虽然增强了语义理解,但缺乏空间推理能力。
- 扩散模型在局部优化方面表现出色,但在大规模长距离导航方面存在不足。
研究难点
该问题的研究难点包括:
- 如何在开放世界环境中同时进行局部环境变化适应、长距离空间推理和全面的语义理解;
- 如何有效地结合语言驱动的导航和基于无人机的全局地图规划。
相关工作
-
视觉-语言整合的语义导航:
- 近期进展在视觉-语言模型(VLMs)方面取得了显著进步,这些模型增强了机器人根据自然语言指令执行复杂任务的能力。
- 方法如LM-Nav利用预训练模型解释语言指令并生成可操作的导航目标。
- CLIP等模型通过对比语言-图像预训练,使机器人能够通过关联视觉线索和文本描述来理解高级任务。
- 然而,这些模型在处理几何和空间挑战方面存在局限性,这对于有效的现实世界导航至关重要。
-
扩散模型用于局部路径规划:
- 局部路径规划的发展集中在对障碍物和环境变化的动态适应上。
- 扩散模型因其能够生成适应实时环境变化的灵活路径而受到关注。
- 方法如RECON、ViNT和ViKiNG扩展了扩散模型在局部路径规划中的应用,增强了局部规划器的灵活性和适应性。
-
基于俯视图的全局规划:
- 全局路径规划对于优化自主系统的长距离导航至关重要。
- 俯视图规划利用从卫星或无人机映射系统获得的俯视图提供全面的空间意识。
- 相较于卫星地图,无人机生成的数字正射影像图(DOM)提供了更高的空间分辨率和更频繁的更新,更适合实时全局规划。
- 采用概率方法表示可通行性,以增强对动态障碍物和部分可观测环境的适应性。
KiteRunner
视觉-语言处理器
VLP负责从自然语言指令中提取语义地标,并将其与存储在拓扑图中的视觉地标进行匹配,以生成最优路径。具体步骤包括:
-
地标提取:使用大型语言模型(如GPT-4o),通过设计的提示,将自由形式的文本指令解析为结构化的地标描述列表。
-
视觉-语义匹配:利用CLIP模型建立语义地标与拓扑图中视觉地标之间的关联。对于拓扑图中的每个节点 v i ∈ V v_i \in V vi∈V,计算其视角视图图像 I i \mathcal{I}_i Ii 与地标文本之间的相似度。相似度矩阵 S ∈ R ∣ V ∣ × n S \in \mathbb{R}^{|V| \times n} S∈R∣V∣×n 的元素 S i , j S_{i,j} Si,j 由以下公式计算:
S i , j = max I ∈ I i ( ϕ vis ( I ) ⋅ ϕ txt ( l j ) ) S_{i,j} = \max_{I \in \mathcal{I}_i} \left( \phi_{\text{vis}}(I) \cdot \phi_{\text{txt}}(l_j) \right) Si,j=I∈Iimax(ϕvis(I)⋅ϕtxt(lj))
其中, ϕ vis ( I i ) \phi_{\text{vis}}(\mathcal{I}_i) ϕvis(Ii) 是通过CLIP的视觉编码器提取的图像特征, ϕ txt ( l j ) \phi_{\text{txt}}(l_j) ϕtxt(lj) 是通过文本编码器提取的地标描述特征。
-
最优路径生成:通过改进的Dijkstra算法进行路径规划,联合优化语言和视觉约束。节点的价值函数 Q ( v ) Q(v) Q(v) 定义如下:
Q ( v ) = ∑ j = 1 n S v , j − β ⋅ D ( v start , v ) Q(v) = \sum_{j=1}^{n} S_{v,j} - \beta \cdot D(v_{\text{start}}, v) Q(v)=j=1∑nSv,j−β⋅D(vstart,v)
其中, ∑ j = 1 n S v , j \sum_{j=1}^{n} S_{v,j} ∑j=1nSv,j 表示节点 v v v 对所有地标的总语义匹配得分, D ( v start , v ) D(v_{\text{start}}, v) D(vstart,v) 是从起始节点到当前节点 v v v 的路径成本, β \beta β 是路径成本项的权重系数,平衡语义匹配和路径效率之间的优先级。
局部规划器(LP)
LP作为实时决策引擎,负责在当前视觉输入和拓扑图存储的视觉信息的基础上生成多个候选局部路径。LP采用扩散模型生成多样化的运动候选路径,具体过程包括:
-
扩散模型:使用去噪扩散概率模型(DDPM)生成多样化的运动轨迹。扩散过程通过迭代去噪过程,将高斯噪声逐步转化为可行的轨迹。公式如下:
A t − 1 = 1 α t ( A t − β t 1 − α ˉ t ⋅ n pred ) + σ t z \mathcal{A}_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( \mathcal{A}_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \cdot n_{\text{pred}} \right) + \sigma_t z At−1=αt1(At−1−αˉtβt⋅npred)+σtz
其中, A t \mathcal{A}_t At 是当前时间步 t t t 的噪声轨迹,初始化为高斯噪声 A T ∼ N ( 0 , I ) \mathcal{A}_T \sim \mathcal{N}(0, I) AT∼N(0,I); n pred n_{\text{pred}} npred 是噪声预测网络预测的噪声, α t , β t , α ˉ t \alpha_t, \beta_t, \bar{\alpha}_t αt,βt,αˉt 是由DDPM计算的调度参数; σ t z \sigma_t z σtz 是添加的随机噪声项,以保持多样性, z ∼ N ( 0 , I ) z \sim \mathcal{N}(0, I) z∼N(0,I); A t − 1 \mathcal{A}_{t-1} At−1 是去噪后的轨迹,经过 T T T 步迭代后收敛到最终轨迹 A 0 \mathcal{A}_0 A0。
全局规划器(GP)
GP负责从全局地图中解码生成全局可通行性概率图,指导LP选择最优路径。具体方法包括:
-
概率图生成:使用U-Net架构处理无人机数字正射影像图(DOM),输出表示环境各区域可通行性的像素概率图。
-
路径评分:将LP生成的候选路径离散化为路径点坐标,计算每条路径的可通行性得分。公式如下:
Score ( a ( k ) ) = ∑ i = 1 N P m ( x i , y i ) ⋅ P w ( x i , y i ) \text{Score}(a^{(k)}) = \sum_{i=1}^{N} P_m(x_i, y_i) \cdot P_w(x_i, y_i) Score(a(k))=i=1∑NPm(xi,yi)⋅Pw(xi,yi)
其中, ( x i , y i ) (x_i, y_i) (xi,yi) 是候选路径 a ( k ) a^{(k)} a(k) 中路径点的坐标, P m ( x i , y i ) P_m(x_i, y_i) Pm(xi,yi) 是概率图中每个路径点的概率值, P w ( x i , y i ) P_w(x_i, y_i) Pw(xi,yi) 是考虑路径点相对于目标的距离和方向的权重因子。
-
全局推理:GP提供全局视角的环境可通行性信息,确保机器人在复杂环境中避开不可通行的区域,选择安全且高效的路径。通过结合全局地图,GP确保机器人能够导航复杂的户外环境,避免不可通行区域。
实验
测试环境
实验在两个不同的户外环境中进行:
- 结构化公园:包含铺好的道路、树木、长椅和灯杆,用于评估方法在相对简单的环境中的导航能力。
- 非结构化公园:具有不平整的地形、自然障碍(如灌木丛)和较少可预测的条件,提供了一个更具挑战性的环境。
- 在这两种环境中,都引入了动态障碍物(如行人和车辆),以模拟真实世界的条件,要求机器人实时调整其路径规划和避障策略。
实验设计
- 传感器和设备:机器人使用RGB相机进行感知,GPS接收器获取地理数据。Jetson AGX Orin负责实时传感器处理、路径规划和运动控制,通过ROS进行高效通信。
- 任务设定:在每个环境中,机器人被要求完成一个导航任务,结构化环境中为405米,非结构化环境中为430米,以评估其路径规划和避障能力。
- 数据收集:在每个环境中收集数据以创建数据集。每种方法在20次试验中进行评估,以确保统计可靠性和潜在性能变异性。
- 基线方法:实验中比较了多种基线方法,包括ViNT、GNM和NoMaD。为了在相同条件下评估这些方法,每种方法都集成了一个语言驱动的导航模块。
评估指标
实验结果通过以下关键指标进行评估:
-
干预次数(IC):表示每次试验的平均干预次数,干预发生在机器人遇到困难时,需要手动协助或导致偏离预定路径。计算公式如下:
I C = Total Number of Interventions Number of Trials IC = \frac{\text{Total Number of Interventions}}{\text{Number of Trials}} IC=Number of TrialsTotal Number of Interventions -
路径效率(PE):通过比较实际路径长度与最优路径长度来评估平均路径效率。公式如下:
P E = Actual Path Length Optimal Path Length PE = \frac{\text{Actual Path Length}}{\text{Optimal Path Length}} PE=Optimal Path LengthActual Path Length -
执行时间(ET):测量机器人完成特定路径所需的平均时间,评估导航方法的时间效率。公式如下:
E T = Time to Complete Task (seconds) ET = \text{Time to Complete Task (seconds)} ET=Time to Complete Task (seconds)
统计分析
为了验证观察到的差异的显著性,进行了配对t检验。此外,计算了不同方法之间性能指标差异的95%置信区间。
实验结果
实验结果显示,KiteRunner在所有关键指标上优于基线方法。具体来说:
- 干预次数:KiteRunner在结构化环境中减少了约79.5%的干预次数,在非结构化环境中减少了约73.1%。
- 路径效率:在结构化环境中,KiteRunner的路径效率提高了5.6%,在非结构化环境中提高了12.8%。
- 执行时间:KiteRunner在结构化和非结构化环境中完成任务的时间分别为598.12秒和650.35秒,比基线方法更快。
统计显著性
统计分析表明,KiteRunner在所有指标上均有显著的性能提升(p ≤ 0.05)。与ViNT的比较显示在路径效率和执行时间上有显著差异(p ≤ 0.005)。
结果分析
- 实验结果表明,KiteRunner在动态和不可预测的场景中表现出色,显著提高了导航效率、鲁棒性和自主性。
- 通过去除局部或全局规划器进行的消融研究进一步证明了两者结合的重要性。
总结
- 论文提出了结合视觉-语言处理、基于无人机的全局地图规划和扩散模型驱动的局部轨迹优化自主导航方法,实现了在结构和无结构环境中的高效和鲁棒导航。
- 该方法在关键指标上显著优于基线方法,特别是在动态和不可预测的场景中。其鲁棒性源于全局规划的长距离目标导向导航和局部优化的实时响应的协同结合。
- 未来工作将集中在增强实时适应性,特别是通过无人机-地面协作,以提高在大规模复杂环境中的情境感知和可扩展性。
相关文章:
华东师范地面机器人融合空中无人机视角的具身导航!KiteRunner:语言驱动的户外环境合作式局部-全局导航策略
作者:Shibo Huang 1 ^{1} 1, Chenfan Shi 1 ^{1} 1, Jian Yang 2 ^{2} 2, Hanlin Dong 1 ^{1} 1, Jinpeng Mi 3 ^{3} 3, Ke Li 2 ^{2} 2, Jianfeng Zhang 1 ^{1} 1, Miao Ding 4 ^{4} 4, Peidong Liang 5 ^{5} 5, Xiong You 2 ^{2} 2, Xian Wei 1 ^{1} 1单位&#x…...
Ansible(6)——管理变量
目录 一、Ansible 变量: 1、什么是变量: 2、变量可能包含的值: 3、变量命名: 4、定义变量: 二、Playbook 中的变量: 1、在 Playbook 中定义变量: (1)最简单的定…...
Git常用问题收集
gitignore 忽略文件夹 不生效 有时候我们接手别人的项目时,发现有的忽略不对想要修改,但发现修改忽略.gitignore后无效。原因是如果某些文件已经被纳入版本管理在.gitignore中忽略路径是不起作用的,这时候需要先清除本地缓存,然后…...
构建高效多标签选择组件:从设计到实现
在现代Web应用中,多标签选择功能已成为常见需求,特别是在内容分类、文章标签、用户兴趣选择等场景。本文将深入解析一个完整的多标签选择实现方案,涵盖交互设计、核心功能和优化技巧。 组件功能概述 这个多标签选择组件提供以下核心功能&am…...
4.1论文阅读
一:PhDnet:一种用于遥感图像的新型物理感知去雾网络(A novel physic-aware dehazing network for remote sensing images) 论文链接 只是粗略读了一下,关于遥感图像去雾,圆形U--net,加入了物理…...
【渗透测试】Vulnhub靶机-HA: Armour-详细通关教程
下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 目录 前言 信息收集 tftp获取(spiderman) 查看.htpasswd(ant-man) ssh欢迎信息提示(hulkbuster) 反弹shell 提权(i…...
Flask使用MySQL数据库通过Flask-SQLAlchemy 迁移数据库,实际更新文件,但是提示没有检测到数据更新。
本地写了一个model的用户类,数据库连接信息正确,执行下面2条命令进行数据库迁移。 flask db migrate 生成迁移文件 flask db upgrade 执行迁移文件的升级 发现执行完后:提示没有检测到数据的更新 PS C:\Users\mu> flask db migrate IN…...
【leetcode100】前K个高频元素
1、题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2]示例 2: 输入: nums [1], k 1 输出: [1] 2、初始思路 2.1 思路 全排列…...
内网渗透-MySQL提权
MySQL提权 mysql的权限提升通常有两种: UDF提权(常用) 写文件提权启动项提权mof提权一、UDF提权 UDF 全称为user defined function,用户自定义函数 用户可以添加自定义的新函数到Mysql中,以达到功能的扩充…...
Hibernate核心方法总结
Session中的核心方法梳理 1、save方法 这个方法表示将一个对象保存到数据库中,可以将一个不含OID的new出来的临时对象转换为一个处于Session缓存中具有OID的持久化对象。 需要注意的是:在save方法前设置OID是无效的但是也不会报错,在save方…...
DevOps 与持续集成(CI/CD)
1. DevOps 概述 DevOps(Development + Operations)是一种软件开发方法,强调开发(Dev)与运维(Ops)协作,通过自动化工具提高软件交付效率。其目标是: ✅ 提高部署速度 —— 频繁发布新版本 ✅ 减少人为错误 —— 通过自动化降低运维风险 ✅ 增强可观测性 —— 监控和日…...
下一代AI App架构:前端生成,后端消失
过去十年,Web 和 App 的开发范式基本稳定:前端负责交互体验,后端负责业务逻辑和数据管理。即使是“无服务架构”也只是将后端“拆散”而非“消失”。 但随着 AI 原生应用的兴起,特别是 大模型本地化、小模型部署、WebAssembly、L…...
告别过去,奔向未来
人生就是一个不断雕刻自己的过程!一路走来,我们经历过酸甜苦辣咸,迷茫过,跌倒过,懈怠过……但是,我想说这又何妨!一个成功人士的经历必定是跌跌宕宕,起起伏伏的。关键是我们要做到&a…...
AF3 Recycling机制
在 AlphaFold3中,输入数据的特征加工中生成了recycling 维度的数据,主要通过ensembled_transform_fns函数抽样得到不同的扰动的MSA、template特征等,类似于数据增强的作用。在数据集的加载和模型的训练中利用了这一维度的数据,增强了模型的稳定性和鲁棒性,避免单一预测结果…...
notepad++8.6.4安装及细节
notepad8.6.4下载安装(附安装包) 一、安装包下载1.1方法一:官网下载(点击跳转)1.2方法二:网盘链接分享8.6.4版本 二、安装过程细节2.1这里的组件建议全部勾选。点击“下一步”。2.2 勾选①:可以…...
谁该处理我的请假?——责任链模式
谁该处理我的请假?——责任链模式 一、生活中的责任链:请假审批流程二、责任链模式的核心特点三、代码实现:请假审批责任链四、工作中的实际应用场景五、框架中的经典应用六、模式本质理解 一、生活中的责任链:请假审批流程 想象…...
【NLP应用场景全解】自然语言处理如何改变世界?
自然语言处理作为人工智能的重要分支,正在加速改变各行各业。根据Statista预测,到2025年,全球NLP市场规模将达到438亿美元。本文将系统梳理NLP的主要应用场景,结合最新技术趋势,帮助你了解NLP技术的落地现状与未来发展…...
Hive 中书写SQL注意的地方
1.1 关于 DDL (1)创建带有主键约束的 Hive 表时报错。 Hive 目前还没有严格支持“主键约束”,创建带有主键约束的 HIVE 表时报了如下错误: SemanticException [Error 10326]: Invalid Constraint: syntax ENABLE/ENFORCED featu…...
Ubuntu 下 无界面环境 多进程/多线程 使用DrissionPage
使用wget “https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb” -O chrome.deb 安装chrome # !/usr/bin/python3 # -*- coding:utf-8 -*- """ author: JHC000abcgmail.com file: dp.py time: 2025/2/20 20:22 desc:wget "htt…...
Opencv计算机视觉编程攻略-第十节 估算图像之间的投影关系
目录 1. 计算图像对的基础矩阵 2. 用RANSAC 算法匹配图像 3. 计算两幅图像之间的单应矩阵 4. 检测图像中的平面目标 图像通常是由数码相机拍摄的,它通过透镜投射光线成像,是三维场景在二维平面上的投影,这表明场景和它的图像之间以及同一…...
RocketMQ 01
今天是2025/04/06 21:31 day 18 总路线请移步主页Java大纲相关文章 今天进行RocketMQ 1,2 个模块的归纳 首先是RocketMQ 的相关内容概括的思维导图 1. 核心组件 1.1 NameServer 核心功能 服务发现:作为轻量级注册中心,管理所有 Broker 的地址和路由信…...
牛客周赛———字符串
题目如下 思路(贪心) >和<的位置是固定不变的,所以先处理这两个符号,然后再遍历一遍检查‘Z’,如果不符合条件将Z的位置改变正负性使其满足条件,然后遍历的时候记数答案就行了,注意s的首…...
在Hive中,将数据从一个表查询并插入到另一个表
1. 确认目标表结构 确保目标表已存在且结构与查询结果匹配。若不存在,需先创建: CREATE TABLE target_table ( id INT, name STRING ) PARTITIONED BY (dt STRING) STORED AS ORC; 2. 选择插入方式 覆盖插入(替换现有数据࿰…...
优雅实现级联选择器:CascadeSelect 类设计与实现
在现代Web开发中,级联选择器是一种常见的UI组件,它能够有效地组织和展示层级数据。本文将深入解析一个功能完善的级联选择器实现——CascadeSelect类,展示如何用面向对象的方式构建可复用的UI组件。 组件概述 CascadeSelect是一个二级下拉框…...
26考研 | 王道 | 数据结构 | 第五章 树
第五章 树 5.1. 树的概念 5.1.1. 树的基本定义 树:n(n>0)个节点的有限集合,是一种逻辑结构,当n0时为空树,且非空树满足: 有且仅有一个特定的称为根的节点当n>1时,其余结点可分为m (m >0) 个互不相交的有限集合&#x…...
Spring 怎么解决循环依赖问题?
Spring 循环依赖(circular dependency) 指的是多个 Bean 之间的相互依赖,比如: A 依赖 B,B 又依赖 A;或者 A → B → C → A 这种嵌套循环依赖。 这是一个常见又棘手的问题,但 Spring 是可以解…...
微软推出首款量子计算芯片Majorana 1
全球首款拓扑架构量子芯片问世,2025年2月20日,经过近20年研究,微软推出了首款量子计算芯片Majorana 1,其宣传视频如本文末尾所示。 微软表示,开发Majorana 1需要创造一种全新的物质状态,即所谓的“拓扑体”…...
OSI模型中协议数据单元(PDU)
OSI模型中协议数据单元(PDU) 协议数据单元(Protocol Data Unit, PDU)是网络通信中每一层协议处理的数据单位,其内容和格式由特定层的协议定义。PDU在不同OSI层次中有不同的名称和结构,体现了分层模型的核心…...
代码训练营day24 回溯算法
回溯算法part03 93.复原IP地址 题目链接/文章讲解:代码随想录 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔哩_bilibili 本题关键在于终止条件 插入3个’.’时判断 ip地址最后一段是否…...
DP Alt Mode 与 DP协议的关系
1. 什么是 “Alt Mode”(替代模式)? Alt Mode(Alternative Mode) 是 USB Type-C 接口 的扩展协议机制,允许通过 物理接口复用(Pin Reuse) 将USB-C接口动态切换为其他协议࿰…...
【欧拉筛】哥德巴赫猜想题解
哥德巴赫猜想题解 题目传送门 1292. 哥德巴赫猜想 一、题目描述 哥德巴赫猜想指出:任意一个大于4的偶数都可以拆成两个奇素数之和。给定多个偶数(6 ≤ n < 10^6),验证它们是否符合这个猜想。对于每个偶数,输出其素数分解中两数差最大的…...
A*算法详解及Python实现
一、什么是A*算法? A*(读作"A-star")算法是一种广泛使用的路径查找和图形遍历算法,它结合了Dijkstra算法的完备性和贪婪最佳优先搜索的高效性。A*算法通过使用启发式函数来估算从当前节点到目标节点的成本,…...
【C++】第九节—string类(中)——详解+代码示例
hello! 云边有个稻草人-CSDN博客 C_云边有个稻草人的博客-CSDN博客 菜鸡进化中。。。 目录 【补充】 二、string类里面的常用接口 1.resize 2.insert 3.assign 4.erase 5.replacefind 6.c_str 7.rfindsubstr 8.find_first_of、find_last_of、find_first…...
vite.config.js常用配置
vite 是一个基于 Vue3 单文件组件的非打包开发服务器,它做到了本地快速开发启动: 快速的冷启动,不需要等待打包操作; 即时的热模块更新,替换性能和模块数量的解耦让更新飞起; 真正的按需编译,不…...
【C++11(下)】—— 我与C++的不解之缘(三十二)
前言 随着 C11 的引入,现代 C 语言在语法层面上变得更加灵活、简洁。其中最受欢迎的新特性之一就是 lambda 表达式(Lambda Expression),它让我们可以在函数内部直接定义匿名函数。配合 std::function 包装器 使用,可以…...
李臻20242817_安全文件传输系统项目报告_第6周
安全文件传输系统项目报告(第 1 周) 1. 代码链接 Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file 代码结构说明: project-root/├── src/ # 源代码目录│ ├── main.c # 主程序入口│ ├…...
使用SymPy求解矩阵微分方程
引言 在数学、物理、工程等领域,微分方程常常被用来描述系统的变化和动态过程。对于多变量系统或者多方程系统,矩阵微分方程是非常常见的,它可以用来描述如电路、控制系统、振动系统等复杂的动态行为。今天,我们将通过Python 中的 SymPy 库来求解矩阵微分方程,帮助大家轻…...
Flutter之用户输入网络数据缓存
目录: 1、处理用户输入1.1、按钮1.2、文本1.3、富文本1.4、TextField1.5、Form 2、复选框、Switch 和 Radio2.1、复选框2.2、Switch2.3、Radio 3、选择日期或时间4、滑动5、网络和数据6、本地缓存6.1、在本地内存中缓存数据 7、web端和Flutter样式控制对比7.1、文本…...
华为IP(4)
VRRP(虚拟路由冗余协议) 前言: 局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果默认网关设备发生故障,那么所有用户终端访问外部网络的流量将会中断。可以通过部署多个网关的方式来解决单点故障…...
蓝桥杯刷题周计划(第四周)
目录 前言题目一题目代码题解分析 题目二题目代码题解分析 题目三题目代码题解分析 题目四题目代码题解分析 题目五题目代码题解分析 题目六题目代码题解分析 题目七题目代码题解分析 题目八题目代码题解分析 题目九题目代码题解分析 题目十题目代码题解分析题目代码题解分析 题…...
华为网路设备学习-17
目录 一、加密算法 二、验证算法 三、IPsec协议 1.IKE协议(密钥交换协议) ①ISAKMP(Internet Security Association and Key Management Protocol)互联网安全关联和密钥管理协议 ②安全关联(SA) ③…...
【动态规划】深入动态规划 非连续子序列问题
文章目录 前言例题一、最长递增子序列二、摆动序列三、最长递增子序列的个数四、最长数对链五、最长定差子序列六、最长的斐波那契子序列的长度七、最长等差数列八、等差数列划分II - 子序列 结语 前言 什么是动态规划中的非连续子序列问题? 动态规划中的非连续子序…...
灵魂拷问,指针为什么是C语言的灵魂?
目录 | 引 言 | 内存操作 | 构造复杂的数据结构 | 底层硬件交互 | 指针的陷阱 | 文 末 | 引 言 指针是C语言的灵魂! 这句话是不是很耳熟?但为什么这么说,你知道吗? 本篇小文就从内存、数据结构、底层硬件交互这三个维度来…...
Node.js自定义中间件
目录 Node.js 自定义中间件详细介绍 1. 目录结构 2. 什么是自定义中间件? 3. 代码实现 1. 自定义日志中间件(记录请求信息) 2. 自定义身份验证中间件(校验用户权限) 3. 自定义请求时间中间件(记录请…...
Qt 音乐播放器项目
具体代码见:https://gitee.com/Suinnnnnn/MusicPlayer 文章目录 0. 预备1. 界面1.1 各部位长度1.2 ui文件1.3 窗口前置设置1.4 设置QSS 2. 自定义控件2.1 按钮2.2 推荐页面2.3 CommonPage2.4 滑杆 3. 音乐管理4. 歌词界面4.1 ui文件4.2 LrcPage.h文件 5. 音乐播放控…...
初识数据结构——Java集合框架解析:List与ArrayList的完美结合
📚 Java集合框架解析:List与ArrayList的完美结合 🌟 前言:为什么我们需要List和ArrayList? 在日常开发中,我们经常需要处理一组数据。想象一下,如果你要管理一个班级的学生名单,或…...
LightRAG实战:轻松构建知识图谱,破解传统RAG多跳推理难题
作者:后端小肥肠 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 2025防失业预警:不会用DeepSeek-RAG建知识库的人正在被淘汰_deepseek-embedding-CSDN博客 从PDF到精准答案:Coze…...
Hyperlane框架全面详解与应用指南 [特殊字符][特殊字符][特殊字符]
Hyperlane框架全面详解与应用指南 🚀🚀🚀 📚 前言 欢迎来到Hyperlane框架的全面详解与应用指南!🎉🎉🎉 本文档旨在为开发者提供一个全面、详尽的Hyperlane框架使用指南,…...
使用LVS的 NAT 模式实现 3 台RS的轮询访问
题目 使用LVS的 NAT 模式实现 3 台RS的轮询访问。IP地址和主机自己规划。 -i— turn,-g——DR模式,-m——NAT模式 节点规划 仅主机网段:192.168.216.0/24 NAT网段:192.168.88.0/24 主机角色系统网络ipclientclientredhat9.5仅…...
BGP路由协议之属性4
MED 多出口鉴别器 可选非过渡属性 EBGP 的邻居 Cost 开销值,控制如何进入 AS。越小越优。继承 IGP 的开销值,默认 0 MED(Multi-Exit Discriminator,多出口鉴别器)是可选非过属性,是一种度量值用于向外部对等体指出进入本 AS 的首…...