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

人形机器人动作策略 ∼ 人类动作策略

25年3月来自UCSD、CMU、西雅图 UW、MIT 和 Apple 公司的论文“Humanoid Policy ∼ Human Policy”。

利用多样化数据训练人形机器人的操作策略,可以增强其在跨任务和平台的鲁棒性和泛化能力。然而,仅从机器人演示中学习需要耗费大量的人力,需要昂贵的远程数据收集,而这些数据难以扩展。本文研究一种更具可扩展性的数据源——以自我为中心的人类演示,将其用作机器人学习的跨具身训练数据。从数据和建模的角度弥合人形机器人与人类之间的就是差距。其收集一个以自我为中心的、面向任务的数据集 (PH^2D),该数据集与人形机器人的操作演示直接对齐。然后,训练一种人形机器人行为策略,我们称之为人类动作 Transformer (HAT)。HAT 的状态-动作空间对于人类和人形机器人是统一的,并且可以可微分地重定向到机器人动作。通过与小规模机器人数据联合训练,HAT 可以直接将人形机器人和人类建模为不同的具身,而无需额外的监督。人类数据可以显著提高 HAT 的数据收集效率,从而提升 HAT 的泛化能力和鲁棒性。

近年来,从真实机器人演示中学习推动机器人操控领域的巨大进步 [34, 40, 6, 15]。实现这一进步的关键在于软硬件协同设计,从而通过遥操作 [65, 20, 11, 58, 9, 25] 和直接控制机器人末端执行器 [14, 5, 65, 20, 23, 11] 来扩大数据收集规模。与收集单个机器人的数据不同,人们致力于整合不同的机器人数据,并跨具身训练基础策略 [14, 41, 40, 34, 6, 15],这已被证明可以提高跨具身和跨任务的泛化能力。然而,收集结构化的真实机器人数据,成本高昂且耗时。距离构建一个像计算机视觉 [46] 和自然语言处理 [42] 那样鲁棒且可泛化的模型,还很远。

如果更深入地研究人形机器人的遥操作,它涉及机器人使用几何变换或重定向来模仿人类动作,以控制机器人的关节和末端执行器。从这个角度来看,采取以人为中心的表征来建模机器人,机器人动作只是人类动作的一种变换。如果能够准确地捕捉人类的末端执行器和头部姿势,那么以自我为中心的人类演示,将成为更具可扩展性的训练数据来源,因为可以在任何地点高效地收集这些数据,而无需机器人。

机器人操作的模仿学习。近年来,利用直接从多个目标机器人实例收集的数据来学习机器人策略,已展现出深刻的鲁棒性和灵活性 [66, 40, 52, 34, 10, 45, 9, 35]。随着数据收集技术的进步 [1, 9, 11, 58],用于模仿学习的数据规模也大幅增长,人类操作员可以高效地收集大量高质量、面向任务的数据。尽管取得这些进展,但由于缺乏互联网规模的训练数据,实现开放世界泛化仍然是一项重大挑战。

从人类视频中学习。由于海量的人类数据,从人类视频中学习策略一直是计算机视觉和机器人技术领域的一个长期课题。现有的研究大致可以分为两类:对齐观察或动作。

  1. 对齐观察: 虽然遥操作实际的机器人平台,可以非常灵活地学习策略,但要实现跨不同任务、环境和平台的更高水平的泛化,还有很长的路要走。与计算机视觉 [46] 和自然语言处理 [42] 等领域受益于互联网规模的数据不同,现实世界中的机器人数据收集受到更多限制。各种方法都尝试使用互联网规模的真人视频来训练机器人策略 [7, 30, 31, 39, 48, 59]。由于以机器人为中心的视角和互联网视频之间存在各种差异(例如监督和视点),大多数现有工作 [37, 3] 使用模块化方法,并以中间表征作为训练的替代。最具代表性的,是用于目标交互的 affordance [37, 3]、目标关键点预测 [4, 53, 32, 13, 54] 或其他类型的目标表征 [44, 38, 36]。

  2. 对齐动作:除了观察对齐之外,由于具身、驱动和控制动力学方面的差异,将人类演示迁移到机器人平台会带来额外的挑战。需要对人类和机器人动作进行特定的对齐,以克服这些差异。现有的方法包括:在自我中心视图中进行掩码 [28]、对齐运动轨迹或流程 [33, 47]、以目标为中心的动作 [69, 26] 或使用专用硬件进行手势追踪 [51]。

然而,许多现有论文专注于在单一任务中模仿人类,而忽略将人类数据直接应用于更大规模跨具身学习的潜力。

跨具身学习。跨具身预训练已被证明能够提高在不同具身的适应性和泛化能力 [27, 8, 57, 56, 16, 18, 21, 49, 55, 60, 62, 63, 64]。当使用真人视频时,引入中间表征容易导致复合错误。近期研究使用跨具身机器人数据的端到端方法 [40, 52, 34, 6],以减少此类复合感知错误。值得注意的是,这些研究发现,这种端到端学习能够实现预期行为,例如重试 [6]。其他一些研究 [2, 32] 在训练真人演示和测试时机器人部署之间强制视点约束,以允许基于真人数据进行学习,但这会牺牲数据收集过程的可扩展性。

类似工作。一些同期的研究[51, 28, 50]也尝试使用以自我为中心的人类演示进行端到端的跨具身策略学习。DexCap[51]使用手套追踪3D手势,并通过胸前安装的RGB-D摄像头捕捉以自我为中心的人类视频。然而,DexCap依赖于3D输入,而一些近期的研究[6, 34]已经展示2D视觉输入的可扩展性。与本文研究最相关的是EgoMimic[28],它同样提出使用可穿戴设备[17]收集带有2D视觉输入的数据。然而,EgoMimic需要严格的视觉传感器对齐和诸如视觉掩码之类的启发式设计。这种在训练和测试阶段对视觉模型的依赖,会导致与模块化方法类似的复合失败。此外,PH^2D 在数据集规模和目标多样性方面也更胜一筹。其策略可以部署在真实机器人上,而无需对视觉传感器和启发式算法有严格的要求,这为可扩展的数据收集铺平道路。

本文针对机器人操作进行跨-人类和人形机器人的具身训练。核心见解是通过直接模仿人类行为来建模双手人形机器人行为,而无需使用 affordance 等学习替代 [37, 3]。为了实现这一目标,首先收集一个以自我为中心、面向任务、物理人形机器人-人类的数据集,称为 PH^2D。然后,训练人类-人形机器人动作 Transformer (HAT),它可以在统一的以人为中心的状态动作表示空间中预测未来的手指轨迹。如图所示:

请添加图片描述

为了收集更多数据来训练可泛化的机器人策略,近期研究探索跨具身学习,使策略能够泛化至不同的物理形态 [6, 34, 15, 40, 29, 41]。本文提出以自我为中心的人类操作演示作为可扩展的跨具身训练数据来源。该方法可使消费级 VR 设备轻松扩展人类数据收集,从而构建一个面向任务的自我中心人类演示数据集。其实有各种处理域差距的技术,以便协调人类数据和机器人数据,从而学习人形机器人的操作策略。

PH^2D:面向任务的物理人形数据

虽然已有研究收集以自我为中心的人类视频 [28, 12, 22, 51],但它们要么 (1) 主要提供的是非任务导向技能的演示,无法为模仿学习监督提供世界坐标系下的 3D 头部和手部姿势估计 [22, 12],要么 (2) 需要专门的硬件或机器人配置 [51, 28]。

为了解决这些问题,提出 PH2D。PH2D 通过以下方式解决这两个问题:(1) 收集与机器人执行直接相关的面向任务的人类演示;(2) 采用精心设计的 VR 设备 SDK(如图所示)来提供监督;(3) 实现任务和摄像头传感器的多样化,并减少全身运动,以缩小视觉和行为方面的域差距。

请添加图片描述

a) 适配低成本商用设备:随着姿态估计[68]和系统工程的发展,现代移动设备能够提供精确的基于设备世界坐标系的 3D 头部姿态追踪和 3D 手部关键点追踪[9],这已被证明足够稳定,可以实时遥控机器人[9, 23]。其设计软硬件,支持跨不同设备便捷的数据收集:
• Apple Vision Pro + 内置摄像头。开发一款Vision OS App,它可以访问左下方摄像头进行视觉观察,并使用Apple ARKit 获取 3D 头部和手部姿态。
• Meta Quest 3 / Apple Vision Pro + ZED摄像头。开发一款基于 OpenTelevision [9]的网页应用程序,用于收集3D头部和手部姿态。还设计一个3D打印支架,用于将ZED Mini Stereo 摄像头安装在这些设备上。这种配置成本低廉(<700美元),并且通过立体视觉摄像头实现更多功能。

不同的摄像头旨在为数据收集提供更丰富的视觉多样性。

b) 数据收集流程:通过要求人类操作员佩戴 VR 设备执行与机器人执行重叠的任务(例如,抓取和倾倒)来收集以任务为导向的、以自我为中心的人类演示。对于每个演示,都提供语言指令(例如,用右手抓住一罐零度可乐),并按最接近的时间戳同步本体感受输入和视觉输入。

动作域差距。人类动作和遥控机器人动作表现出两个不同的特点:(1) 人类操作通常涉及非自主的全身运动;(2) 人类比机器人更灵巧,并且完成任务的时间明显快于机器人。通过要求人类数据收集者保持直立姿势来弥补第一个差距。此外,将物体放置在靠近人类的位置,使其在无需全身运动的情况下位于人类手臂的工作空间内,这与无需全身运动的商用人形机器人工作空间类似。

HAT:人类动作 Transformer

HAT 通过对人类进行建模来学习跨具身机器人策略。通过重定向,将双手人形机器人和人类视为不同的机器人具身,可以提高 HAT 的泛化能力和鲁棒性。

更具体地说,令 D_robot = {(S_i, A_i)} 为使用遥操作从真实双手人形机器人 [9] 收集的数据集,其中 S_i 为第 i 个演示的状态(包括本体感受和视觉观察),A_i 为动作。收集的 PH^2D 数据集 D_human = {(S ̃_i, A ̃_i)} 用于增强训练过程。需要注意的是,假设 M ≫ N 是合理的,因为收集以自我为中心的人类视频,比遥操作更有效率。

目标是设计一个策略 π: S → A,该策略预测给定当前机器人观测 s_t 在时间 t 的未来机器人动作,其中未来动作a_t+1 通常是一组可分步执行的动作(略有符号滥用)。本文使用基于 Action Chunk Transformer (ACT)[65] 的 HAT 作为策略。修改原始实现,用冻结的 DinoV2 [43]主干网络替换 ResNet-18 [24],并在中间层添加视觉适配器。模型概览如图所示。通过消融实验,讨论 HAT 的关键设计选择。

统一的状态-动作空间。双手机器人和人类都具有两个末端执行器。在本文案例中,机器人还配备一个可旋转的2 DoF 驱动颈部,类似于人类进行操作时的自主全身运动。因此,为双手机器人和人类设计一个统一的状态-动作空间(即 (S, A) ≡ (S ̃, A ̃))。更具体地说,用于预测 HAT 的动作空间是一个 54 维向量。头部、左腕和右腕的旋转,表示为 6 维旋转[67];左右腕的平移,表示为 x/y/z 向量。在本研究中,由于将策略部署在一个拥有五指灵巧手的机器人上(如图所示),因此机器人灵巧手的 10 个指尖与普通人手之间存在双射映射(bijective mapping),这些指尖表示为用于回归的 3D x/y/z 关键点。需要注意的是,单射映射(injective mapping)也是可能的(例如,将拇指与其他手指之间的距离映射到平行夹持器的距离)。

请添加图片描述

视觉域差距。在人类/人形机器人数据协同训练中,存在两种类型的域差距:摄像头传感器和末端执行器外观。由于人类数据收集过程包含与机器人部署不同的摄像头,这会导致诸如色调(tone)之类的摄像头域差距。此外,人类和人形机器人末端执行器的外观也不同。然而,如果数据足够庞大且多样化,并非必须应用启发式策略(例如添加视觉伪影 [28])或生成式方法 [61] 来训练人机策略——在这种情况下,诸如颜色抖动和高斯模糊之类的基本图像增强,可以有效地正则化视觉输入。

动作域差距。为了缓解人类与人形机器人之间巨大的速度差异,在训练过程中插入人类数据的平移和旋转(有效地“减慢”动作)。减慢因子 α_slow 是通过对人类和人形机器人的平均任务完成时间进行归一化获得的,该时间经验分布在 4 左右。为了保持一致性,在所有任务中均使用 α_slow = 4。

由于状态空间的差异,在训练期间随机丢弃本体感觉读数,以避免对低维状态输入产生不必要的依赖。

训练。最终策略表示为 π : f_θ(·) → A,适用于人类和机器人策略。本体感受编码器 θ 和 Transformer 主干的可训练参数,在训练过程中进行联合优化。

硬件平台:在配备一对 6 自由度 Inspire 灵巧手的 Unitree H1 双手人形机器人上进行实验。专注于操控,不驱动机器人的下半身。相反,引入一个类似于[9]中设计的 2 自由度驱动颈部,使机器人能够像人类一样在视觉上聚焦于其操控的物体。这种配置总共产生了 28 个自由度。机器人设置如上图和下图所示。需要注意的是,仅依靠头部摄像头(不使用腕部摄像头)来研究纯粹基于自我中心视觉的操控能力。

请添加图片描述

实现细节:采用 OpenTV [9]的实现来实现策略架构。具体来说,用冻结的DinoV2 [43] ViT-S替换可训练的 ImageNet 预训练的 ResNet-18主干网络,以提高其对光照和纹理变化的鲁棒性。除非另有说明,否则使用不同的均值和标准差来规范化状态-动作空间。实现两种变型:

• ACT:使用上述架构的基准实现,仅使用机器人数据进行训练。机器人状态以关节位置表示。
• HAT:与 ACT 相同的架构,但状态编码器在统一的状态-动作空间中运行。除非另有说明,HAT 均使用机器人和人类数据共同训练。

实验方案:收集不同目标集中的机器人和人类演示。由于人类演示更容易收集,因此人类演示中的设置通常更加多样化,包括背景、物体类型、物体位置以及人类相对于桌子的相对位置。实验四种不同的灵巧操作任务,并研究分布内和分布外的设置。分布内 (I.D.) 设置测试学习的技能,其背景和物体排列与真实机器人数据中呈现的训练演示大致相似。在人类-分布 (H.D.) 设置中,评估人类演示中包含的现场设置,但不包括机器人演示。在分布外 (O.O.D.) 设置中,通过引入任何训练演示中均未出现的新设置,测试泛化能力和鲁棒性。上图可视化不同的操作任务以及如何为每个任务定义分布外(OOD)的设置。

基于上述设置,旨在回答以下重要研究问题:

• 使用人类数据进行协同训练能否提高身份识别性能?
• 使用人类数据进行协同训练能否提高 O.O.D. 的泛化能力?
• 与远程操作 [9] 相比,人类演示收集的效率如何?
• 每种设计选择的贡献程度如何?

相关文章:

人形机器人动作策略 ∼ 人类动作策略

25年3月来自UCSD、CMU、西雅图 UW、MIT 和 Apple 公司的论文“Humanoid Policy ∼ Human Policy”。 利用多样化数据训练人形机器人的操作策略&#xff0c;可以增强其在跨任务和平台的鲁棒性和泛化能力。然而&#xff0c;仅从机器人演示中学习需要耗费大量的人力&#xff0c;需…...

MySQL事务详解:从5.7到8.0的变化

MySQL事务详解&#xff1a;从5.7到8.0的变化 引言 在关系型数据库管理系统&#xff08;RDBMS&#xff09;中&#xff0c;事务是一个核心概念&#xff0c;它确保了数据的一致性和可靠性。MySQL作为最流行的开源RDBMS之一&#xff0c;其事务处理机制在不同的版本中经历了重要的…...

conda常用命令简解

以下是conda常用命令的汇总: 创建一个新环境&#xff1a; conda create -n your_env_name pythonX.X 激活某个环境&#xff1a; activate your_env_name 安装包&#xff1a; conda install [package] 查看安装了哪些包&#xff1a; conda list 查看当前有哪些虚拟环境&…...

数据科学与机器学习:前沿技术研究

数据科学与机器学习:前沿技术研究 摘要 本文探讨了数据科学与机器学习领域的三个前沿方向:自适应机器学习模型、联邦学习隐私与保护以及多模态数据处理。通过理论分析、算法设计和实验验证,展示了这些技术在解决实际问题中的潜力和挑战。自适应机器学习模型能够根据数据变化…...

个人博客测试报告

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

Sentinel源码—3.ProcessorSlot的执行过程一

大纲 1.NodeSelectorSlot构建资源调用树 2.LogSlot和StatisticSlot采集资源的数据 3.Sentinel监听器模式的规则对象与规则管理 4.AuthoritySlot控制黑白名单权限 5.SystemSlot根据系统保护规则进行流控 1.NodeSelectorSlot构建资源调用树 (1)Entry的处理链的执行入口 (2…...

datagrip连接mysql问题5.7.26

1.Case sensitivity: plainmixed, delimitedexac Remote host terminated the handshake. 区分大小写&#xff1a;plain混合&#xff0c;分隔exac 远程主机终止了握手。 原因:usessl 参数用于指定是否使用 SSL&#xff08;Secure Sockets Layer&#xff09;加密来保护数据传…...

【电路笔记】-变压器构造

变压器构造 文章目录 变压器构造1、概述2、变压器铁芯的构造3、变压器叠片4、变压器绕组排列5、变压器点定位6、变压器铁芯损耗6.1 磁滞损耗6.2 涡流损耗6.3 铜损耗一个简单的双绕组变压器构造包括每个绕组分别缠绕在一个独立的软铁肢或磁芯上,这提供了必要的磁路。 1、概述 …...

阿里云集群开启debug

1、安装 kubectl Macos brew install kubectl Windows&#xff1a; https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下载后&#xff0c;放到任意目录 2、配置连接信息 mac 将以下内容复制到计算机 $HOME/.kube/config 文件下: windows 不同集…...

继承-C++

继承在我们日常中经常指我们的人伦关系中的父子关系&#xff0c;孩子继承父母的基因、习惯之类的&#xff0c;孩子也会有自己的个性等。然而在我们C计算机语言中的类也存在继承&#xff0c;我们将作为“父亲”的类称为父类&#xff0c;将作为“孩子”的类称为子类&#xff0c;父…...

Java并发-AQS框架原理解析与实现类详解

什么是AQS&#xff1f; AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java并发包&#xff08;JUC&#xff09;的核心基础框架&#xff0c;它为构建锁和同步器提供了高效、灵活的底层支持。本文将从设计原理、核心机制及典型实现类三个维度展开&#xff0c;帮助读者…...

【FFmpeg从入门到精通】第一章-FFmpeg简介

1 FFmpeg的定义 FFmpeg既是一款音视频编解码工具&#xff0c;同时也是一组音视频编解码开发套件&#xff0c;作为编解码开发套件&#xff0c;它为开发者提供了丰富的音视频处理的调用接口。 FFmpeg提供了多种媒体格式的封装和解封装&#xff0c;包括多种音视频编码、多种协议…...

Mac屏幕共享怎么使用?

Mac电脑要实现远程桌面连接到的工功能&#xff0c;可以使用其自带的屏幕共享功能。Mac屏幕共享能从一台Mac电脑远程控制另一台Mac电脑&#xff0c;并且无需下载第三方远程控制软件。下面&#xff0c;将为您介绍Mac远程桌面连接在哪&#xff0c;以及使用方法。 步骤 1. Mac的远…...

探索亮数据Web Unlocker API:让谷歌学术网页科研数据 “触手可及”

本文目录 一、引言二、Web Unlocker API 功能亮点三、Web Unlocker API 实战1.配置网页解锁器2.定位相关数据3.编写代码 四、Web Scraper API技术亮点 五、SERP API技术亮点 六、总结 一、引言 网页数据宛如一座蕴藏着无限价值的宝库&#xff0c;无论是企业洞察市场动态、制定…...

【后端】【python】利用反射器----动态设置装饰器

&#x1f4d8; Python 装饰器进阶指南 一、装饰器本质 ✅ 本质概念 Python 装饰器的本质是 函数嵌套 返回函数&#xff0c;它是对已有函数的增强&#xff0c;不修改原函数代码&#xff0c;使用语法糖 decorator 实现包裹效果。 def my_decorator(func):def wrapper(*args, …...

Oracle 中的 NOAUDIT CREATE SESSION 命令详解

Oracle 中的 NOAUDIT CREATE SESSION 命令详解 NOAUDIT CREATE SESSION 是 Oracle 数据库中用于取消对用户登录会话审计的命令&#xff0c;它与 AUDIT CREATE SESSION 命令相对应。 一、基本语法 NOAUDIT CREATE SESSION [BY user1 [, user2]... | BY [SESSION | ACCESS]] …...

《Chronos: Learning the Language of Time Series》

全文摘要 本文提出了Chronos&#xff0c;一个简单而有效的预训练概率时间序列模型框架。Chronos通过缩放和量化将时间序列值标记化为固定词汇&#xff0c;并利用现有的基于变换器的语言模型架构进行训练。我们在多个公开数据集和合成数据集上预训练了Chronos模型&#xff0c;并…...

git UserInterfaceState.xcuserstate 文件频繁更新

1> 退出 Xcdoe&#xff0c;打开终端&#xff08;Terminal&#xff09;&#xff0c;进入到你的项目目录下。 2> 在终端键入 git rm --cached <YourProjectName>.xcodeproj/project.xcworkspace/xcuserdata/<YourUsername>.xcuserdatad/UserInterfaceState.x…...

Day92 | 灵神 | 二叉树 路径总和

Day92 | 灵神 | 二叉树 路径总和 112.路径总和 112. 路径总和 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 1.递归函数意义 如果在根节点为t的树中可以找到长度为target的路径就返回true&#xff0c;找不到就返回false 2.参数和返回值 bool tra(TreeNode …...

数据集 handpose_x_plus 3D RGB 三维手势 - 打篮球 场景 play basketball

数据集 handpose 相关项目地址&#xff1a;https://github.com/XIAN-HHappy/handpose_x_plus 样例数据下载地址&#xff1a;数据集handpose-x-plus3DRGB三维手势-打篮球场景playbasketball资源-CSDN文库...

GitLab本地安装指南

当前GitLab的最新版是v17.10&#xff0c;安装地址&#xff1a;https://about.gitlab.com/install/。当然国内也可以安装极狐GitLab版本&#xff0c;极狐GitLab 是 GitLab 中国发行版&#xff08;JH&#xff09;。极狐GitLab支持龙蜥&#xff0c;欧拉等国内的操作系统平台。安装…...

云数据库:核心分类、技术优势与创新、应用场景、挑战应对和前沿趋势

李升伟 整理 云数据库技术是云计算与数据库技术融合的产物&#xff0c;它通过云服务模式提供数据库功能&#xff0c;彻底改变了数据的存储、管理和访问方式。以下从核心概念、技术优势、应用场景及挑战等方面展开分析&#xff1a; 一、云数据库的核心分类 按部署模式 托管数…...

算力狂飙时代:解码2024年上海及周边区域IDC市场的三重构局

2025年3月&#xff0c;科智咨询《2024-2025年上海及周边地区IDC市场研究报告》正式发布。报告对上海及周边地区IDC市场发展情况进行全面分析与深入解读。 在长三角地区数字经济蓬勃发展的背景下&#xff0c;上海及周边区域的数据中心产业正迎来深刻转型。随着上海市政府陆续出台…...

循环首差链码的通俗解释

循环首差链码的通俗解释 1. 链码是什么&#xff1f; 链码是一种用数字序列描述图像中物体轮廓的方法。例如&#xff0c;在 4-链码 中&#xff1a; 0 表示向右移动&#xff1b;1 表示向上移动&#xff1b;2 表示向左移动&#xff1b;3 表示向下移动。 假设有一段轮廓的链码为…...

✅ MySQL 事务 MVCC ROLLBACK

&#x1f9e0; 一、MVCC 与可重复读&#xff08;REPEATABLE READ&#xff09; 项目内容MVCC 概念多版本并发控制&#xff0c;事务中读到的是开启事务时的数据快照实现机制依赖 Read View trx_id Undo Log 实现版本判断快照读普通 SELECT&#xff0c;使用 MVCC&#xff0c;不…...

信息系统项目管理工程师备考计算类真题讲解四

一、三点估算&#xff08;PERT&#xff09; PERT&#xff08;Program Evaluation and Review Technique&#xff09;&#xff1a;计划评估技术&#xff0c;又称三点估算技术。PERT估算是一种项目管理中用于估算项目工期或成本的方法&#xff0c;以下是其详细介绍&#xff1a; …...

winfrom 查询某字符串 找到它在 richTextbox 的位置 定位 并高亮 并且滚动定位到所查询的字符串所在的行

如图&#xff1a; 代码&#xff1a; //查找关键字private void buttonSearch_Click(object sender, EventArgs e){string searchText textBoxSearch.Text;if (!string.IsNullOrEmpty(searchText)){TextBoxFinds(txtJSON, searchText);TextBoxFinds(txtSQL, searchText);}}//查…...

数据结构学习笔记 :线性表的链式存储详解

目录 单链表 1.1 无头单链表 1.2 有头单链表单向循环链表双链表 3.1 双链表 3.2 双向循环链表总结与对比 一、单链表 1. 无头单链表&#xff08;Headless Singly Linked List&#xff09; 定义&#xff1a;链表无头结点&#xff0c;直接由头指针指向第一个数据节点。 特点&…...

MyBatis-Plus 详解:快速上手到深入理解

一、前言 &#x1f31f; &#x1f9e9; MyBatis & MyBatis-Plus 是啥关系&#xff1f; MyBatis 是一个优秀的 ORM 框架&#xff08;Object Relational Mapping&#xff0c;面向对象关系映射&#xff09;&#xff0c;它让我们可以通过编写 SQL 来操作数据库&#xff0c;同…...

【软件工程大系】净室软件工程

净室软件工程&#xff08;Cleanroom Software Engineering&#xff09;是一种以缺陷预防&#xff08;正确性验证&#xff09;为核心的软件开发方法&#xff0c;旨在通过严格的工程规范和数学验证&#xff0c;在开发过程中避免缺陷的产生&#xff0c;而非依赖后期的测试和调试。…...

[区块链lab2] 构建具备加密功能的Web服务端

实验目标&#xff1a; 掌握区块链中密码技术的工作原理。在基于Flask框架的服务端中实现哈希算法的加密功能。 实验内容&#xff1a; 构建Flash Web服务器&#xff0c;实现哈希算法、非对称加密算法的加密功能。 实验步骤&#xff1a; 哈希算法的应用&#xff1a;创建hash…...

2025年- H10-Lc117-560.和为K的子数组(子串)--java版

1.题目描述 2.思路 例子1&#xff1a; 3.代码实现 class Solution {public int subarraySum(int[] nums, int k) {// List<Integer> listnew ArrayList<>();// int cnt0;// for(int i0;i<nums.length;i)// {// for(int ji1;j<nums.length;j)// {// …...

肾脏系统触发 “元数据泄漏警报“(蛋白尿+)

肾脏系统触发 "元数据泄漏警报"&#xff08;蛋白尿&#xff09; 核心故障模块&#xff1a;肾小球滤过屏障&#xff08;GlomerularFilter v2.5.0&#xff09; 漏洞类型&#xff1a;孔径屏障漏洞 电荷屏障校验失败 → 元数据&#xff08;蛋白质&#xff09;越界泄漏 …...

摄像头的工作原理与应用摄像头的工作原理与应用

一、摄像头的工作原理与应用 基本概念 V4L2的全称是Video For Linux Two&#xff0c;其实指的是V4L的升级版&#xff0c;是linux系统关于视频设备的内核驱动&#xff0c;同时V4L2也包含Linux系统下关于视频以及音频采集的接口&#xff0c;只需要配合对应的视频采集设备就可以…...

一个由通义千问以及FFmpeg的AVFrame、buffer引起的bug:前面几帧影响后面帧数据

目录 1 问题描述 2 我最开始的代码----错误代码 3 正确的代码 4 为什么前面帧的结果会叠加到了后面帧上----因为ffmpeg新一帧只更新上一帧变化的部分 5 以后不要用通义千问写代码 1 问题描述 某个项目中&#xff0c;需要做人脸马赛克&#xff0c;然后这个是君正的某款芯片…...

MyBatis-动态SQL

MyBatis Plus 作为 MyBatis 的增强工具&#xff0c;简化了 CRUD 操作&#xff0c;但在复杂查询时&#xff0c;仍需使用 MyBatis 的动态 SQL 功能。以下是一些常用的动态标签、用法示例及注意事项&#xff1a; 常用动态标签及用法示例 <if> 标签 用途&#xff1a;条件判…...

顺序表(Arraylist)和链表(Linkedlist)

List List是一个接口&#xff0c;继承自Collection。 从数据结构角度来说&#xff0c;List就是一个线性表&#xff0c;即用n个相同类型的有限序列&#xff0c;可以在此序列中可以进行增删改查操作。 List是接口不能直接实例化&#xff0c;Linkedlist和Arraylist都实现了List…...

【python】django sqlite版本过低怎么办

方法一&#xff1a;下载最新版本 复制上面的内容的链接 在服务器上进行操作 wget https://sqlite.org/2025/sqlite-autoconf-3490100.tar.gz tar -zxvf sqlite-autoconf-3490100.tar.gz cd sqlite-autoconf-3490100 ./configure --prefix/usr/local make && make in…...

解决Dify使用Docker Compose部署中无法通过OpenAI插件等国外大模型厂商的插件访问其API的问题

解决Dify使用Docker Compose部署中无法通过OpenAI插件等国外大模型厂商的插件访问其API的问题 问题描述 在使用Docker Compose部署Dify时&#xff0c;发现无法通过OpenAI等国外大模型厂商的插件访问其API。这主要是因为Docker容器内的网络环境与宿主机不同&#xff0c;导致无…...

【ROS】代价地图

【ROS】代价地图 前言代价地图&#xff08;Costmap&#xff09;概述代价地图的参数costmap_common_params.yaml 参数说明costmap_common_params.yaml 示例说明global_costmap.yaml 参数说明global_costmap.yaml 示例说明local_costmap.yaml 参数说明local_costmap.yaml 示例说明…...

Deno 统一 Node 和 npm,既是 JS 运行时,又是包管理器

Deno 是一个现代的、一体化的、零配置的 JavaScript 运行时、工具链&#xff0c;专为 JavaScript 和 TypeScript 开发设计。目前已有数十万开发者在使用 Deno&#xff0c;其代码仓库是 GitHub 上 star 数第二高的 Rust 项目。 Stars 数102620Forks 数5553 主要特点 内置安全性…...

把城市变成智能生命体,智慧城市的神奇进化

智能交通系统的建立与优化 智能交通系统&#xff08;ITS&#xff09;是智慧城市建设的核心部分之一&#xff0c;旨在提升交通管理效率和安全性。该系统利用传感器网络、GPS定位技术以及实时数据分析来监控和管理城市中的所有交通流动。例如&#xff0c;通过部署于道路两侧或交…...

青少年编程与数学 02-016 Python数据结构与算法 23课题、分布式算法

青少年编程与数学 02-016 Python数据结构与算法 23课题、分布式算法 课题摘要:一、一致性算法Paxos 算法 二、领导者选举算法Bully 算法 三、分布式锁算法基于 ZooKeeper 的分布式锁 四、分布式事务处理算法两阶段提交&#xff08;2PC&#xff09; 五、负载均衡算法最少连接法 …...

Windows10系统RabbitMQ无法访问Web端界面

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目场景&#xff1a; 在一个基于 .NET 的分布式项目中&#xff0c;团队使用 RabbitMQ 作为消息队列中间件&#xff0c;负责模块间的异步通信。开发环境为 Windows 10 系统&#xff0c;开发人员按照官…...

人工智能之数学基础:特征值分解与奇异值分解的区别分析

本文重点 矩阵分解是线性代数的核心工具,广泛应用于数据分析、信号处理、机器学习等领域。特征值分解与奇异值分解在数学定义、适用范围、几何意义、计算方法、应用场景及稳定性方面存在显著差异。EVD 适用于方阵,强调矩阵的固有属性;SVD 适用于任意矩阵,揭示矩阵的内在结…...

UDP概念特点+编程流程

UDP概念编程流程 目录 一、UDP基本概念 1.1 概念 1.2 特点 1.2.1 无连接性&#xff1a; 1.2.2 不可靠性 1.2.3 面向报文 二、UDP编程流程 2.1 客户端 cli.c 2.2 服务端ser.c 一、UDP基本概念 1.1 概念 UDP 即用户数据报协议&#xff08;User Datagram Protocol &…...

Go语言实现OAuth 2.0认证服务器

文章目录 1. 项目概述1.1 OAuth2 流程 2. OAuth 2.0 Storage接口解析2.1 基础方法2.2 客户端管理相关方法2.3 授权码相关方法2.4 访问令牌相关方法2.5 刷新令牌相关方法 2.6 方法调用时序2.7 关键注意点3. MySQL存储实现原理3.1 数据库设计3.2 核心实现 4. OAuth 2.0授权码流程…...

【版本控制】idea中使用git

大家好&#xff0c;我是jstart千语。接下来继续对git的内容进行讲解。也是在开发中最常使用&#xff0c;最重要的部分&#xff0c;在idea中操作git。目录在右侧哦。 如果需要git命令的详解&#xff1a; 【版本控制】git命令使用大全-CSDN博客 一、配置git 要先关闭项目&#xf…...

永磁同步电机控制中,滑模观测器是基于反电动势观测转子速度和角度的?扩展卡尔曼滤波观测器是基于什么观测的?扩展卡尔曼滤波观测器也是基于反电动势吗?

滑模观测器在PMSM中的应用&#xff1a; 滑模观测器是一种非线性观测器&#xff0c;利用切换函数设计&#xff0c;使得状态估计误差迅速趋近于零&#xff0c;实现快速响应和对外部干扰的鲁棒性。 在永磁同步电机&#xff08;PMSM&#xff09;无传感器控制中&#xff0c;滑模观测…...

十倍开发效率 - IDEA 插件之RestfulBox - API

提高效率不是为了完成更多的任务&#xff0c;而是有充足的时间摸鱼。 快速体验 RestfulBox - API 是 IDEA 的插件&#xff0c;适合本地测试接口&#xff0c;完全不需要对项目进行任何以来。 接口管理&#xff1a;支持接口扫描、浏览、搜索、跳转、导入和导出。支持接口请求&a…...