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

NaVILA: Legged Robot Vision-Language-ActionModel for Navigation

摘要

本文旨在解决基于视觉与语言导航(VLN)在四足机器人上的实现问题。该任务不仅为人类提供了一种灵活的指令方式,还使机器人能够在更具挑战性和杂乱的场景中导航。然而,将人类自然语言指令转换为低层次的腿部关节控制指令并非易事。

为此,作者提出了一个两级架构 NaVILANavigation with Vision, Language and Action),将视觉-语言-动作模型(VLA)与行走技能相结合。与直接从VLA预测低层动作的方式不同,NaVILA 首先生成带有空间信息的中层动作,以自然语言形式表示(例如“向前移动75厘米”),然后作为输入,传递给一个视觉驱动的强化学习行走策略执行。

在现有基准测试上,NaVILA 显著优于此前的方法。此外,在作者开发的新基准环境(使用 IsaacLab)中,该方法也表现出一致的优势。新基准涵盖了更真实的场景、更低层的控制和真实机器人实验。

引言

具备视觉-语言导航(VLN)能力已成为现代机器人系统中的关键组件。借助 VLN,机器人无需预先地图,只需依照语言指令,即可在未见过的环境中导航【1–6】。这种方式不仅为人类提供了更自然的交互方式,也通过语言增强了跨场景的泛化能力。

本论文进一步将 VLN 研究扩展至腿式机器人(如四足或类人机器人)。相比轮式移动,使用腿部可以让机器人在更复杂、障碍密集的场景中导航。例如:机器人可以穿越杂乱的实验室狭窄通道、在室内多个房间之间移动,甚至在户外崎岖地形(如石块、洞坑)中前行。

要将语言转化为行动,机器人必须理解语言输入,并进行闭环规划低层控制。近年来,大型语言模型(LLM)和视觉-语言模型(VLM)的进展使得一些端到端的视觉-语言-动作系统(VLA)成为可能【7–9】。这些系统通常通过大规模机器人操作演示数据微调 VLM,从而直接输出低层动作。尽管这种整合“推理+控制”的方式取得了初步成功,但问题仍在于:**是否有比量化的低层命令更合适的动作表示形式?**毕竟,LLM/VLM 主要还是基于语言训练的,将推理结果转化为精确的非语言动作仍是巨大挑战。

受近期 VLM 在空间位置和距离推理能力提升的启发【10, 11】,我们提出 NaVILA:一个两级框架,专为腿式机器人的 VLN 而设计。其方法是:使用 VLM 输出中层动作(例如“右转30度”),然后使用视觉强化学习训练的低层行走策略执行该指令。该中层动作以语言形式表征方向和距离信息,避免直接预测低层命令。

这一框架带来了三大优势:

  1. 模块解耦:将VLA与低层控制解耦,使得VLA可适配多种机器人,仅需替换低层策略;

  2. 泛化增强:用语言表达中层动作,可以借助丰富的真实世界数据(如YouTube视频)进行训练,提升推理能力且避免过拟合;

  3. 双频运行机制:VLA作为高负载模型低频运行输出导航指令;而低层策略实时运行处理复杂障碍物,增强整体鲁棒性。

我们还展示了如下训练策略:

  • 在 VLM 框架下整合历史上下文与当前观测;

  • 构建专为导航设计的提示模板(prompt);

  • 利用 YouTube 上人类导览视频提升模型在连续环境中的导航能力;

  • 提出混合数据集,用于提升模型泛化能力。

这是首次展示直接使用人类视频训练能显著提升 VLN 表现的研究。

行走控制策略方面,我们采用单阶段的视觉驱动策略训练方式。通过 LiDAR 点云构建高度图,并引入随机扰动以实现模拟到真实的迁移(sim-to-real)。控制器将VLA输出的语言转化为速度指令,并最终转化为关节位置。此端到端流程可训练出稳健、真实可部署的策略,即便在强阳光或透明地面环境下也能正常运行。

实验结果表明:

  • 在经典VLN基准上,我们的VLA成功率提高超17%,优于现有方法;

  • 单阶段行走策略也显著优于以往基于策略蒸馏的方法;

  • 我们提出新基准 VLN-CE-Isaac,基于Isaac Sim,更真实地模拟机器人关节与环境交互;

  • 在该新基准中,我们的视觉策略比无视觉策略高出14%成功率;

  • 我们还在多种机器人(Unitree Go2、H1、Booster T1)上部署,验证策略通用性;

  • 最后在真实世界中部署 NaVILA,在25条指令中达成88%的整体成功率,其中75%为复杂跨场景指令。

方法

NaVILA高层次的视觉-语言理解低层次的行走控制结合在一起(见图2)。它使用一个视觉-语言模型(VLM)来处理单视角图像,并以自然语言的形式生成路径点指令(waypoint instructions),这些指令随后由行走策略(locomotion policy)翻译为精确的关节运动,从而实现机器人的实时控制

VLM 的推理能力与行走策略的执行能力之间的协同作用,使得 NaVILA 能够在多样化的环境中实现良好的泛化。

用于视觉语言导航的Taming VLM

视觉-语言导航(VLN)任务需要处理视频输入作为感知信息。处理这类输入的常见方法是采用视频编码器【12】。但目前视觉-语言模型(VLM)的发展,主要得益于图文对数据的广泛可用。尽管也有尝试将这些成功迁移至视频编码器,但由于缺乏大规模、高质量的视频-文本数据集,限制了其预训练能力。

为了解决这个问题,我们选择使用基于图像的视觉-语言模型。相比视频模型,这些模型具备更强的泛化能力和更广的世界知识,更适合应对 VLN 中复杂多样的环境。具体而言,我们采用了 VILA 系列模型【13–19】,它是一类高效的视觉-语言模型,支持理解与生成,尤其擅长多图像之间的推理能力,非常适合 VLN 任务。

VILA简介

导航Prompts

从人类视频中学习

近期研究【24–26】表明,从人类视频中收集“轨迹-指令”对能够增强机器人的导航能力。然而,以往的方法仅限于离散导航场景,主要使用真实视频作为预训练数据缩小领域差异提升地标识别能力,而不是直接用于训练导航模型。

将该方法推广到连续导航场景面临重大挑战,主要是因为获取连续的动作标签非常困难。不过,近年来野外环境中的相机位姿估计(metric-pose estimation)技术取得突破,使得我们可以从人类视频中提取空间理解信息,从而直接训练导航模型

我们设计的数据处理流程(如图4所示)如下:

  • 首先收集了来自 YouTube 的 2000 条第一视角导览视频,这些视频提供了丰富的真实世界数据,有助于机器人从人类行为中学习导航。

  • 我们通过基于熵的采样方法【26】将这些视频处理为 2 万条具有代表性且多样化的轨迹

  • 然后使用 MASt3R 算法【27】估计相机位姿,从而提取出逐步的动作信息;

  • 接着,使用 基于视觉语言模型(VLM)的描述生成器【13】,为每条轨迹生成自然语言指令,并通过 大语言模型(LLM)【28】进一步改写,使语言表达更自然。

这一流程使我们能够有效利用人类演示数据来进行连续导航训练,这是此前很难实现的能力。

监督微调数据混合策略

要训练出一个强健的视觉-语言-动作模型,有效的监督微调(SFT)数据至关重要。该模型既要专注于具身智能任务,又要避免过拟合具体动作;同时应具备良好的现实泛化能力,并保留对世界的广泛认知。

依托 NaVILA 模块化框架的高可扩展性与灵活性,我们可以轻松将各种数据源整合进训练流程,从而显著提升模型的导航泛化能力。我们构建的 SFT 数据混合集基于以下四类来源:

  1. 来自真实视频的导航数据

  2. 来自仿真的导航数据

  3. 辅助导航数据(Auxiliary)

  4. 通用视觉问答(VQA)数据集

仿真导航数据:
  • 连续环境下的 VLN 数据集有限,只有 R2R-CE [29]RxR-CE [30] 可用,它们是从离散版本转换而来的稀疏路径点数据。

  • 我们在 Habitat 模拟器 中使用这两个数据集,并利用**最短路径跟随器(Shortest Path Follower)**生成沿测地路径的动作序列。

  • 得到的数据形式是:(t+1) 帧视频 + t 时刻的动作标签

  • 为了训练 LLM 生成连续数值标签(如距离、角度),我们将多个连续动作合并(如两个 25cm 前进合成一个 50cm 前进),最多合并三步。

    • 这样可以:

      • 减小数据体积,提高处理效率;

      • 丰富动作多样性,减缓过拟合。

  • 为缓解 标签不均衡问题(如 stop 动作不足),我们采用了重采样技术进行再平衡。

  • 所有导航类数据都按照前述帧提取策略处理,并配以任务提示语。

辅助导航数据:
  • R2R-CE 和 RxR-CE 的指令有限,为提升语义理解,我们引入额外导航数据:

    • 使用 EnvDrop [31] 的增强指令(augmented instructions);

    • 引入轨迹总结任务:给定一个轨迹视频,保留首帧和若干历史帧,并用指令作为标签,要求 LLM 生成对轨迹的语言总结。

  • 引入 ScanQA [32] 数据集以增强空间理解能力,该数据集基于真实 3D 扫描对象,提供人工编辑的问答对。

    • 我们从原始扫描中提取多视角 RGB 图像支持该任务训练。

通用视觉问答数据:
  • 为保持模型的广泛能力,我们还加入了多个通用 VQA 数据集【23, 33, 34】。

这一整合策略确保了 NaVILA 模型在面对新场景和真实世界环境时仍具备强泛化能力。

训练和推理范式

我们的训练过程从 VILA 的第二阶段模型开始,该模型已经完成了图文混合语料的预训练。在此基础上,我们使用前述的 SFT 数据混合集对整个视觉语言模型(VLM)进行训练,仅训练一个 epoch,遵循标准训练流程。

在这一训练阶段,我们解冻模型的三个核心模块

  1. 视觉编码器(Vision Encoder)

  2. 连接器(Connector)

  3. 大语言模型(LLM)

推理阶段,我们设计并实现了一个 正则表达式解析器【35】,用于从 LLM 的输出中提取:

  • 动作类型(如 forward,turn left)

  • 对应参数(如具体距离或角度)

我们在模拟和真实环境中验证了该方法的有效性,实验证明:在所有任务中,所有动作均被成功解析与匹配,且能正确转换为控制命令。

视觉运动策略

简要介绍实验所用平台 Go2 机器人犬,随后描述我们开发的端到端视觉控制策略,该策略能够将 VLM 输出的高层语言导航命令转化为精确的关节动作指令。该控制策略在 Isaac Sim 仿真环境中通过 Isaac Lab [36] 训练,并可直接部署至现实机器人平台。

Go2机器人简介

如图5所示,Go2 机器人配备一个安装在头部基座上的 LiDAR 激光雷达,以 15Hz 的频率广播点云。机器人总共具备 18 个自由度(DoF)

  • 其中 6 DoF 属于底座(base),

  • 每条腿具有 3 DoF,共 4 条腿

在策略训练过程中,底座的 6 个自由度不受控制,策略仅控制 12 个腿部关节电机

语言指令——》控制信号转换

底层动作与观测空间

训练策略:单阶段强化学习

与常见的两阶段“教师-学生”训练范式【38–41】不同,我们采用了单阶段训练方式

  • 更高效:无需进行策略蒸馏;

  • 更灵活:策略直接与环境交互,有机会学习新策略;

  • 借助 Isaac Lab 中的光线投射(Ray-casting)能力,在 RTX 4090 GPU 上可达 每秒6万帧(60K FPS) 的仿真速度,极大提升训练效率。

相关文章:

NaVILA: Legged Robot Vision-Language-ActionModel for Navigation

摘要 本文旨在解决基于视觉与语言导航(VLN)在四足机器人上的实现问题。该任务不仅为人类提供了一种灵活的指令方式,还使机器人能够在更具挑战性和杂乱的场景中导航。然而,将人类自然语言指令转换为低层次的腿部关节控制指令并非易…...

LeetCode 2071 你可以安排的最多任务数目 题解(附带自己的错误做题思路 过了25/49)

示例 输入:tasks [3,2,1], workers [0,3,3], pills 1, strength 1 输出:3 解释: 我们可以按照如下方案安排药丸: - 给 0 号工人药丸。 - 0 号工人完成任务 2(0 1 > 1) - 1 号工人完成任务 1&#…...

高翔《视觉SLAM十四讲》中第13讲,单目稠密重建中的RMODE数据集

高翔《视觉SLAM十四讲》中第13讲,单目稠密重建,中的RMODE数据集, 原作者苏黎世大学slam小组提供,但是网址已失效 下载方式: 1 https://vj6cqktnxq.feishu.cn/wiki/KBqtwD6XJio3Rmkm2FkckMY8nPg 2 参考地址&#xff1a…...

PyTorch_张量形状操作

搭建模型时,数据都是基于张量形式的表示,网络层与层之间很多都是以不同的shape的方式进行表现和运算。 对张量形状的操作,以便能够更好处理网络各层之间的数据连接。 reshape 函数的用法 reshape 函数可以再保证张量数据不变的前提下改变数…...

【浅尝Java】变量与数据类型(含隐式类型转换、强制类型转换、整型与字符串互相转换等)

🍞自我激励:每天努力一点点,技术变化看得见 文章目录 字面常量数据类型变量变量概念语法格式整型变量字节型变量(byte)短整型变量(short)整型变量(int)长整型&#xff08…...

Ubuntu环境下使用uWSGI服务器【以flask应用部署为例】

0、前置内容说明 首先要知道WSGI是什么,关于WSGI服务器的介绍看这篇:WSGI(Web Server Gateway Interface)服务器 由于从Python 3.11开始限制了在系统级 Python 环境中使用 pip 安装第三方包,以避免与系统包管理器&am…...

GCC 使用指南

安装 GCC Ubuntu/Debian: sudo apt update && sudo apt install gcc gCentOS/RHEL: sudo yum install gcc gcc-cmacOS (通过 Homebrew): brew install gcc基本用法 编译 C 程序 gcc hello.c -o hello # 编译 hello.c,生成可执行文件 hello ./hello …...

虚函数 vs 纯虚函数 vs 静态函数(C++)

🧩 一图看懂:虚函数 vs 纯虚函数 特性虚函数(Virtual)纯虚函数(Pure Virtual)语法virtual void foo();virtual void foo() 0;是否必须实现✅ 必须在类中实现❌ 不在基类实现,派生类必须实现是…...

CF1000E We Need More Bosses

CF1000E We Need More Bosses 题目描述 题目大意: 给定一个 n n n 个点 m m m 条边的无向图,保证图连通。找到两个点 s , t s,t s,t,使得 s s s到 t t t必须经过的边最多(一条边无论走哪条路线都经过ta,这条边就是…...

Python:Seaborn 美化图表的技术指南

🎨 1、简述 Seaborn 是建立在 Matplotlib 基础上的高级可视化库,提供了更美观、更简洁的数据统计图表。本文将带你深入了解 Seaborn 的强大功能,并通过多个实践案例掌握使用技巧。 2、Seaborn 1️⃣ 什么是 Seaborn? Seaborn 是一个基于 matplotlib 构建的 Python 可视…...

go实现循环链表

需求 实现循环链表的节点生成、顺序遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intnext *zodiac_sign }// 添加 // func add_node_by_order(previous_node zodiac_sign, current_…...

QT | 常用控件

前言 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 —…...

EasyExcel使用总结

EasyExcel 文章目录 EasyExcel1、导入1.1、基本方式导入1.导入依赖2. 加载源文件基本语法 3. 读取数据行4. 读取结果 1.2、模型映射导入1.定义实体映射类2. 操作读取基本语法 3. 读取数据行4. 读取结果 1.3、导入类型转换器语法 1.4、导入监听器基本语法: 1.5、多行…...

【形式化验证】动态逻辑(DL)的定义解释与示例

动态逻辑(Dynamic Logic, DL)是一种用于描述和验证程序行为的逻辑系统。它结合了命题逻辑、谓词逻辑以及模态逻辑的特点,特别适用于表达程序执行前后的状态变化。以下将从语法、语义以及实际应用等方面详细介绍DL公式的相关内容。 1. 动态逻…...

OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境

一. 准备工作 Visual Studio 2019(安装时勾选 C 桌面开发 和 Windows 10 SDK) CMake 3.20(官网下载) Qt 5.15.2(下载 Qt Online Installer)安装时勾选 MSVC 2019 64-bit 组件。 opencv 4.11.1 源码下载 git…...

四年级数学知识边界总结思考-上册

目录 一、背景二、过程1.大数的认识**一、知识点梳理****二、知识点的由来****三、作用与意义****四、总结** 2. 公顷和平方千米**一、知识点梳理****二、知识点的由来****三、作用与意义** 3.角的度量**一、知识点梳理****二、知识点的由来****三、作用与意义** 4.平行四边形和…...

(undone) MIT6.S081 2023 学习笔记 (Day10: LAB9 fs file system)

url: https://pdos.csail.mit.edu/6.1810/2023/labs/fs.html 任务1:Large files (moderate) ----------------- 完成 本次作业中,你将扩大xv6文件的最大容量。当前xv6文件被限制为268个块(即268*BSIZE字节,xv6中BSIZE为1024&…...

SpringMVC详解

一:Maven 1.1 概述 (1)项目结构 所有IDE使用Maven创建的项目结构完全一样,maven项目可通用 (2)构建流程(编译、测试、打包、发布) (3)依赖管理 定义&#xff…...

【Python】一直没搞懂生成器是什么。。

生成器 上期我们讲解了迭代器:【Python】一直没搞懂迭代器是什么。。-CSDN博客 这期我们来讲讲它的好兄弟——生成器 生成器 (Generator)? 生成器是一种特殊的 迭代器 (Iterator)。 迭代器 是你可以逐个访问其元素的对象(比如在 for 循环中使用)。列表、元组、字典、字符…...

高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第四章 不定积分同步测试卷 B卷

第四章 不定积分同步测试卷 B卷 一、单项选择题(本大题共5小题,每小题3分,总计15分) 1. 2. 3. 4. 5. 二、填空题(本大题共5小题,每小题3分,总计15分) 6. 7. 8. 9. 10. 三、求解下列各题(本大题共5小题,每小题6分,总计30分) 11. 12. …...

只用Prettier进行格式化项目

1.下载Prettier插件,禁用ESlint 2.在项目根目录新建.prettierrc文件 {"singleQuote": true,"jsxSingleQuote": true,"printWidth": 100,"trailingComma": "none","tabWidth": 2,"semi": f…...

ARM寻址方式

寻址方式指的是确定操作数位置的方式。 寻址方式: 立即数寻址 直接寻址(绝对寻址),ARM不支持这种寻址方式,但所有CISC处理器都支持 寄存器间接寻址 3种寻址方式总结如下: 助记符 RTL格式 描述 ADD r0,r1…...

2025年- H25-Lc133- 104. 二叉树的最大深度(树)---java版

1.题目描述 2.思路 返回左右子树中,最高高度的子树,高度从0开始计数。 3.代码实现 class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;…...

深入理解 Spring MVC:DispatcherServlet 与视图解析机制​

import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Locale; import java.util.Map;// 继承自 FrameworkServlet 的 DispatcherServlet 类…...

Python基本语法(lambda表达式)

lambda表达式 lambda的一般形式是在关键字lambda后面跟一个或多个参数,之后再紧跟一个 冒号,接下来是一个表达式。lambda是一个表达式,而不是一个语句,它能够出现 在Python语法不允许def出现的地方。作为表达式,lambd…...

嵌入式按键原理、中断过程与中断程序设计(键盘扫描程序)

按键去抖动  通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号波型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。…...

C++负载均衡远程调用学习之实时监测与自动发布功能

目录 1.LarsDns-V0.3BackenThread后端实时监控线程流程 2.LarsDns-V0.3加载当前Route版本号方法实现 3.LarsDns-V0.3加载RouteChange修改表的信息 4.LarsDns-V0.3实现实时监控流程线程业务 5.LarsDnsV0.3编译bug修改和功能测试 6.Lars Web管理界面的集成 7.LarsDnsV0.3 D…...

VSCode常用插件推荐

文章目录 VSCode常用插件推荐1 Git相关插件2 代码格式3 AI工具4 语言插件通用工具参考 VSCode常用插件推荐 1 Git相关插件 2 代码格式 3 AI工具 4 语言插件 通用工具 参考 50 个 VSCode 必装插件推荐 https://mp.weixin.qq.com/s/b_OKvg3hdavtnv7pbWcKWg...

性能优化实践:内存优化技巧

性能优化实践:内存优化技巧 在Flutter应用开发中,内存优化是提升应用性能的关键环节之一。本文将从实战角度深入探讨Flutter内存优化的各种技巧,帮助你构建高性能的Flutter应用。 一、内存分析工具使用 1. DevTools内存分析器 启动DevTool…...

WPF中Behaviors

行为的好处 可以把复杂的界面逻辑抽象出去&#xff0c;让xaml的界面设计更简单&#xff0c;更清爽 1.安装包 Microsoft.Xaml.Behaviors.Wpf2.简单实现拖动效果 <Border Width"100"Height"100"Background"Red"><i:Interaction.Behav…...

FreeRTOS菜鸟入门(十)·消息队列

目录 1. 基本概念 2. 数据存储 3. 运作机制 4. 阻塞机制 4.1 出队阻塞 4.2 入队阻塞 5. 操作示意图 5.1 创建队列 5.2 向队列发送第一个消息 5.3 向队列发送第二个消息 5.4 从队列读取消息 6. 消息队列控制块 7. 消息队列常用函数 7.1 消息队列创建…...

Day3:设置页面全局渐变线性渐变背景色uniapp壁纸实战

效果&#xff1a; 页面全局渐变线性渐变背景色会让这个设计更加有质感 想给页面加背景的时候&#xff0c;就给最外部的布局容器添加一个pageBg这样一个类别 接下来&#xff0c;我们就可以在之前写的common的公共的style里的common-style.css里改变它就行了 线性渐变&#xff1…...

Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成

​一、软件介绍 文末提供程序和源码下载 Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成 二、Ray AI 库的更多信息 数据&#xff1a;适用于 ML 的可扩展数据集训练&#xff1a;分布式训练Tune&…...

19、权限控制:分院帽系统——React 19 RBAC实现

一、分院帽的魔法本质 "RBAC是霍格沃茨城堡的智能分院帽&#xff0c;用角色编织的星轨矩阵阻隔黑魔法入侵&#xff01;" 魔法部安全司官员挥舞魔杖&#xff0c;角色-权限的量子纠缠态在空中交织成防护结界。 ——基于《国际魔法联合会》第7号安全协议&#xff0c;RB…...

P1802 5 倍经验日

P1802 5 倍经验日 - 洛谷 题目背景 复制Markdown &#xff5b;展开 进入IDE模式 现在乐斗有活动了&#xff01;每打一个人可以获得5倍经验&#xff01;absi2011却无奈的看着那一些比他等级高的好友&#xff0c;想着能否把他们干掉。干掉能拿不少经验的。 题目描述 现在abs…...

赋予网页健壮的灵魂 —— TypeScript(下)

7 DOM 操作与类型定义&#xff1a;赋予网页真正的交互 回到最初的目标&#xff1a;让网页动起来。在 TypeScript 中&#xff0c;我们如何安全地操作 HTML 元素并响应用户的交互呢&#xff1f;TypeScript 提供了内置的类型定义来描述浏览器环境中的各种对象&#xff08;如 docu…...

ARM Linux 设备树

Linux 设备驱动开发详解&#xff1a;基于最新的Linux 4.0内核, 机械工业出版社, 宋宝华, 2015 1. 设备树的起源 • 背景: ARM架构中大量板级代码冗余&#xff0c;硬编码在mach-xxx目录&#xff0c;设备树&#xff08;Device Tree&#xff09;引入结构化描述硬件。 • 目的: 减…...

35、C# 中的反射(Reflection)

反射是 C# 和 .NET 框架中的一个重要特性&#xff0c;它允许程序在运行时检查、访问和操作类型、对象、属性和方法等元数据信息。 反射的核心概念 运行时类型检查&#xff1a;反射允许你在程序运行时获取类型的详细信息&#xff0c;而不需要在编译时知道这些信息。动态操作&a…...

驱动中的 mmap() 函数和 file_operations 中的 mmap() 原型的区别

在 Linux 驱动开发中&#xff0c;mmap() 系统调用和 file_operations 结构中的 mmap() 方法虽然功能相关&#xff0c;但原型和用途有显著区别。以下是两者的详细对比&#xff1a; 1. 系统调用 mmap() 的原型 这是用户空间程序调用的系统调用接口&#xff0c;定义在 <sys/mma…...

Go语言八股文之Map详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

矿泉水瓶的绘制

1.制作中心矩形&#xff0c;大小为60&#xff0c;注意设置矩形的两条边相等 2.点击拉伸&#xff0c;高度为150mm 3.使用圆角命令&#xff0c;点击连接到开始面&#xff0c;同时选中4条边&#xff0c;进行圆角转化&#xff0c;圆角大小为10mm&#xff0c;点击多半径圆角&#xf…...

LeetCode 热题 100 54. 螺旋矩阵

LeetCode 热题 100 | 54. 螺旋矩阵 大家好&#xff0c;今天我们来解决一道经典的算法题——螺旋矩阵。这道题在LeetCode上被标记为中等难度&#xff0c;要求我们按照顺时针螺旋顺序返回矩阵中的所有元素。下面我将详细讲解解题思路&#xff0c;并附上Python代码实现。 问题描述…...

方案精读:业财融合转型路径和华为实践【附全文阅读】

在当今快速变化、竞争激烈的时代,业务面临不确定性,业财融合至关重要。以华为为例,其从财务到财经的转型,历经财务四统一变革、IFS 变革等,构建了包含财经能力中心(COE)、业务伙伴(BP)和财经共享中心(SSC)的财务组织架构 。通过实现财务四算拉通、提升预算预测、项目…...

AIDC智算中心建设:计算力核心技术解析

目录 一、智算中心发展概览 二、计算力核心技术解析 一、智算中心发展概览 智算中心是人工智能发展的关键基础设施&#xff0c;基于人工智能计算架构&#xff0c;提供人工智能应用所需算力服务、数据服务和算法服务的算力基础设施&#xff0c;融合高性能计算设备、高速网络以…...

Javase 基础加强 —— 02 泛型

本系列为笔者学习Javase的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程&#xff0c;java零基础入门到大牛一套通关》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习Javase系列课程的同学们提供参考。 01 认识泛型…...

PowerShell 备份 Windows10/11 还原计算机驱动程序SOP

一、现在计算机C目录下创建一个新的文件夹名称为 driverbackup 二、打开cmd 以管理员身份执行 dism /online /export-driver /destination: C:\driverbackup 在正常情况下&#xff0c;Windows 10会自动检测您的设备所需的驱动程序&#xff0c;并将其安装到您的PC上。 但是&am…...

Python 中的 collections 库:高效数据结构的利器

Python 中的 collections 库&#xff1a;高效数据结构的利器 在 Python 编程中&#xff0c;数据结构的高效使用往往能极大地提升代码的性能和可读性。今天&#xff0c;就让我们来深入了解一下 Python 的 collections 库&#xff0c;它是一个非常实用且强大的工具库&#xff0c…...

2025年- H24-Lc132-94. 二叉树的中序遍历(树)---java版。

1.题目描述 2.思路 递归遍历&#xff1a;返回值&#xff0c;中序遍历的节点值列表 List。 &#xff08;1&#xff09;首先是一个中序遍历的结果函数&#xff0c;传入root参数&#xff0c;定义一个节点值列表result&#xff0c;然后递归调用中序遍历的函数 &#xff08;2&#…...

第十六届蓝桥杯单片机组省赛(第一套)

看到很多人在问第十六届蓝桥杯单片机难不难&#xff0c;以及实现多少功能可以获得省一。 先介绍下我的作答情况吧&#xff0c;选择题只对一题&#xff0c;程序题的求连续两次距离差值没有考虑负数的情况&#xff0c;其他功能都实现了&#xff0c;成绩是福建省省一第一页&#x…...

使用python写多文件#inlcude

使用下面的程序可以将当前文件夹下面的.c文件的写入main.h文件&#xff0c;我这里是将自己的基于标准库stm32初始化io文件为例。 import osbase ["#ifndef main_H","#define main_H\n","#endif" ]includes set() for file in os.listdir():if…...