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

ROBOVERSE:面向可扩展和可泛化机器人学习的统一平台、数据集和基准

25年4月来自UC Berkeley、北大、USC、UMich、UIUC、Stanford、CMU、UCLA 和 北京通用 AI 研究院(BIGAI)的论文“ROBOVERSE: Towards a Unified Platform, Dataset and Benchmark for Scalable and Generalizable Robot Learning”。

数据扩展和标准化评估基准,推动了自然语言处理和计算机视觉领域的重大进步。然而,机器人技术在数据扩展和建立可靠的评估协议方面面临着独特的挑战。收集现实世界的机器人数据资源密集且效率低下,而在现实世界场景中进行基准测试仍然非常复杂。合成数据和仿真提供了有前景的替代方案,但现有的努力往往在数据质量、多样性和基准标准化方面存在不足。为了应对这些挑战,ROBOVERSE 是一个包含仿真平台、合成数据集和统一基准的综合框架。其仿真平台支持多个模拟器和机器人实例,可实现不同环境之间的无缝转换。合成数据集具有高保真物理和照片级渲染效果,是通过多种方法构建的,包括从公共数据集迁移、策略部署和运动规划等,并通过数据增强技术进行增强。此外,还提出用于模仿学习和强化学习的统一基准,从而能够在不同泛化水平上进行一致的评估。仿真平台的核心是 METASIM,这是一个将不同的仿真环境抽象为通用接口的基础架构。它将现有的模拟环境重构为一个与模拟器无关的配置系统,并提供一个 API 来协调不同的模拟器功能,例如启动模拟环境、加载具有初始状态的资源、步进物理引擎等。这种抽象确保了互操作性和可扩展性。实验表明,ROBOVERSE 能够提升模拟学习、强化学习和世界模型学习的性能,从而改善从模拟-到-现实的迁移。

ROBOVERSE 如图所示:

请添加图片描述

基准测试仍然是机器人领域一个关键且极具挑战性的问题。与监督学习任务相比,评估机器人模型的性能相对困难。Meta-World [134] 是多任务基准测试的早期尝试。紧随其后的是 RLBench [48]、BEHAVIOR-1K [63]、Habitat [111] 和 ManiSkill [84, 37, 112, 107],涵盖了各种各样的机器人任务。Grutopia [120] 和 InfiniteWorld [100] 向通用机器人基准测试迈出了一步。尽管研究人员为这些基准测试付出了巨大的努力,但并不能保证结果在不同的基准测试中具有可重复性。不确定性来自多个方面,包括模拟精度、渲染风格和资产属性 [66, 26]。
为了充分发挥机器人仿真的潜力, 构建 ROBOVERSE 这个可扩展的仿真平台,它将现有的模拟器统一在一个标准化的格式、单一的基础设施、大规模的合成数据集和统一的基准测试下。为此,ROBOVERSE 的核心基础设施是METASIM。通过设计,METASIM 为智体、目标、传感器、任务和物理参数建立一个通用的配置系统,同时提供了一个与模拟器无关的模拟设置和控制接口。该架构能够以最小的适应性工作,无缝集成来自不同模拟环境的任务、资产和机器人轨迹。

在 ROBOVERSE 中,构建了迄今为止规模最大、种类最全的高质量合成数据集和基准测试集,并采用统一的格式。该数据集包含约 50 万条独特的高保真轨迹,涵盖 276 个任务类别和约 5.5 万个素材。此外,还生成了超过 5000 万个高质量的状态转换,以支持策略学习。

METASIM 概述

METASIM,是特定仿真环境实现之上的高级接口。它也是 ROBOVERSE 的核心基础设施。如图所示,METASIM 为 ROBOVERSE 仿真平台提供支持,使其能够生成大规模高质量数据集,并构建统一的基准测试。

请添加图片描述

METASIM 实现

如图所示,METASIM 采用三层架构,包括通用配置系统、与模拟器无关的接口和用户友好的环境包装器。通用配置系统统一了仿真场景的规范,并确保不同模拟器的格式一致。与模拟器无关的接口解释这些规范,将其转换为特定于模拟器的命令,从而协调不同的模拟器后端。此外,环境包装器将与模拟器无关的接口封装到标准化的学习环境中,例如 Gym [115] 环境。

请添加图片描述

1)通用配置系统:一个典型的模拟环境包含智体、目标、任务、传感器和物理参数。它们共同定义了谁执行动作(智体)、环境是什么样子(目标)、智体应该做什么(任务,包括指令、成功指标和奖励)、环境如何被感知和测量(传感器)以及控制物理定律(物理参数)。理想情况下,这些组件应该与模拟器无关,需要统一的模拟场景标准。这样的标准将使研究人员能够无缝地跨不同的模拟器工作,并通过跨模拟集成社区现有的工作。

基于这一原则,设计一个配置系统 MetaConfig,以与模拟器无关的方式抽象模拟场景。如图所示,MetaConfig 是一个嵌套类,包含上述核心组件。它可以被不同的模拟器后端解释,从而构建相应的模拟。此外,MetaConfig 支持可选的模拟器特定超参数(例如,求解器类型),从而允许通过定制充分利用不同模拟器的独特功能。

请添加图片描述

2)统一的模拟器后端:不同的模拟器有各自的实现和专业化。然而,常规操作(例如初始化场景、加载目标、单步运行物理引擎、检索观测值、时间管理和确定成功状态)往往遵循相似的模式。为了标准化这些共享操作,通过 Handler 类创建了一个统一的接口。每个模拟器都有自己的处理程序实例来实现此接口。处理程序类实现了涵盖模拟任务整个生命周期的通用方法,包括 launch()、get_states() 和 set_states() 等。 API 的使用方法已在如下代码 中演示。

请添加图片描述

  1. 用户友好的环境包装器:Gym [115] 是强化学习和机器人技术中广泛采用的范例,其中 gym.Env 类是构建学习环境的基础。定义一个包装器,可以轻松地将 Handler 转换为配备 Gym API(step()、reset()、render() 和 close())的环境。如上述代码例子所示,这些方法是通过利用底层 Handler 的方法来实现的。

METASIM 功能

METASIM 提供以下三大关键功能。

  1. 跨模拟器集成:在不同模拟器之间无缝切换,允许将一个模拟器中的任务和轨迹应用于其他模拟器。此功能可实现高效的任务和轨迹集成、统一的基准测试构建以及用于强化学习训练的模拟器间迁移。例如,Isaac Gym [75] 可以使用 Meta-World [134] 中的任务进行快速并行训练,之后生成的轨迹可部署到 Isaac Sim [88] 中进行渲染。
  2. 混合模拟:METASIM 支持同时结合一个模拟器的物理引擎和另一个模拟器的渲染器,使用户能够充分利用不同模拟器的优势。具体来说,只需一个命令,就可以启动一个带有强大渲染器的模拟器(例如 Isaac Sim [88]),并与一个带有精确物理引擎的模拟器(例如 MuJoCo [114])连接,形成更强大的模拟,从而生成高质量的数据。
    3)跨实体迁移:通过重定位末端执行器的姿态,在不同的基于夹持器的机器人形态上重用轨迹,从而将从不同机器人收集的数据集成为统一的格式。

ROBOVERSE 数据集概述

在 METASIM 的基础上,结合多种数据收集方法,生成大规模高质量数据集。总体而言,需要收集三种关键数据类型:任务、资产和机器人轨迹。这些数据的主要来源是从现有模拟环境中迁移。除了迁移之外,还探索各种数据收集方法,例如使用大语言模型生成新任务,利用 Real-to-Sim 工具集 [71] 从现实世界重建资产,使用遥操作收集新轨迹等。此外,还利用数据增强方法进行轨迹和视觉观察。最后,给出 ROBOVERSE 中数据迁移的当前进度统计数据。

任务、资产和轨迹收集:迁移

利用 ROBOVERSE 的格式和基础架构,将各种基准测试和数据集以统一的格式和简洁的代码库无缝集成到系统中。采用以下方法来收集任务和演示。
• 从其他模拟环境直接迁移。一些基准测试,将必要的组件集成到 ROBOVERSE 中。定义任务初始化和评估的环境配置,然后转换轨迹数据和资产格式以实现无缝兼容。值得注意的是,ROBOVERSE 通过首先在原始模拟器中对齐格式并自动确保所有模拟器的兼容性来简化此迁移过程。
• 运动规划和 RL 展开(Rollout)。当基准测试仅提供部分操作数据(例如关键点轨迹或抓取姿势)时,使用运动规划来生成完整的轨迹。如果没有明确的操作数据,但已经有预存在的策略或强化学习框架,会利用这些策略或训练新的策略以通过展开收集演示数据。为了确保数据的高质量和与系统标准的一致性,仔细调整成功检查器并严格过滤规划和收集的轨迹。

通过上述技术,将多个现有的操作数据集迁移到 ROBOVERSE。目前,支持 ManiSkill [84, 37, 112]、RLBench [48]、CALVIN [82]、Meta-World [134]、robosuite [145]、MimicGen [79]、GAPartNet [34]、Open6DOR [24]、ARNOLD [36]、LIBERO [68]、SIMPLER [66]、GraspNet [27]、GarmentLab [72] 和 UniDoorManip [67]。

还整合来自更广泛实例的数据集,包括灵巧手、四足机器人和人形机器人,涵盖灵巧操作、运动、导航和全身控制等任务。目前,已经迁移用于导航的 VLN-CE R2R [58] 和 RxR [60],以及用于运动和全身控制的 HumanoidBench [106] 和 Humanoid-X [80]。
ROBOVERSE 简化并标准化迁移过程,今后将继续维护和扩展它。

任务、资产和轨迹收集:遥操作和生成

• 用于轨迹收集的遥操作系统。如图所示,ROBOVERSE 将遥操作系统集成到 METASIM 基础架构中,为高质量数据收集提供了灵活高效的解决方案。它支持各种机器人系统,包括手臂、灵巧手 [91] 和双手设置,从而实现跨不同模拟器的无缝遥操作。为了降低专业设备的高成本和复杂性,引入一种交互式运动控制系统,该系统利用键盘、操纵杆、移动设备应用程序(开发了一款适用于 Android 和 iOS 的新应用程序来控制机械臂)、动作捕捉 (Mocap) [117] 和 VR 系统 [12, 96] 等可访问设备。这些设备的集成传感器可以捕获运动数据,从而实现自然的基于手势的控制以及实时高频通信,从而实现精确、低成本的遥操作。

请添加图片描述

• AI 辅助任务生成。利用大型生成模型的泛化能力,AI 辅助任务生成提供了一种机制,可以多样化任务种类和场景分布。通过从示例位置学习,它获得对空间和语义约束的感知 [1](例如,通过演示特定的约束,它可以学习分散目标以避免潜在的重叠等)。它可以将来自不同基准的物体排列成基于 METASIM 的物理可信场景,如图所示。通过将机器人和目标选择的随机性[52]与初始姿态相结合,大型生成模型可以生成各种初始状态。该系统可以自动以统一的格式输出所有必需的配置文件,以实现即时可视化和用户友好的编辑体验。任务生成后,将进行两步过滤以避免错误和幻觉:(1)格式验证:不符合 ROBOVERSE 格式标准的任务将被丢弃。(2)可行性检查:由于轨迹数据是通过人工遥控收集的,因此遥控操作员认为不合理的任务将被删除。通过释放大型生成模型的外推和小样本学习能力,将资产自动集成到统一的模式下,从而驱动跨多个模拟器和基准的任务生成。

请添加图片描述

• Real-to-Sim 用于资产构建。事实证明,利用 Real-to-Sim 技术,基于视频的重建是数据和资产创建的宝贵来源。该方法集成了多个重建流程,从视频数据中提取高保真资产。首先,使用 COLMAP [103, 104] 初始化结构,并采用Gaussian Splatting [53] 进行高质量渲染。接下来,通过将语义图像和原始图像输入视觉语言模型 (VLM) [143] 来推断物理属性。对于几何重建,从视频 [132] 中估计表面法线,应用面元铺展 [45],并利用基于时间序列离散函数 (TSDF) 的动态滤波方法重建细节网格 [131]。通过利用语义掩码 [99],选择性地从高斯表示和网格表示中提取分量。为了进一步增强真实感,直接从视频 [69] 中推断和学习物体运动学,确保运动表示的准确性。最后,通过细化坐标系、方向、轴对齐、比例、相对六自由度姿态和局部极化 (PD) 控制参数 [71] 等关键属性来构建 URDF 模型。该流程有效地弥合真实世界视频数据与可用于模拟的资源之间的差距,增强机器人学习和模拟保真度。如图所示一个Real-to-Sim 工具:
请添加图片描述

数据增强

  1. 轨迹增强:凭借统一的仿真接口和数据格式,ROBOVERSE 能够显著提高数据增强的效率,并支持先进的增强技术。除了 Benchmark Protocol [8] 中详述的视觉随机化之外,还提供强大的轨迹空间增强功能。提供 API,可根据有限数量的源演示生成大规模机器人轨迹数据集。遵循 MimicGen [79] 框架,对于大多数任务,可以将它们分解为一系列以目标为中心的子任务 (S_1 (o_S_1)、S_2 (o_S_2)、……、S_M (o_S_M)),其中每个子任务 S_i (o_S_i) 中的机器人轨迹相对于单个目标的坐标系(o_S_i ∈ O,O 是任务 M 中的目标集)。此外,假设每个任务中的子任务序列是预定义的。利用这种关于子任务顺序的极简人工注释,可以使用模拟器高效地将每个源演示划分为以目标为中心的连续操作片段 {τ_i}(每个片段对应一个子任务 S_i(o_i)),然后使用 MimicGen [79] 为各种任务变体(在案例中:目标 (D) 和机器人 ® 的初始状态和目标状态分布的变化)生成广泛的轨迹数据集。这种方法已被证明在模仿学习中显著提高泛化能力 [79, 50, 121, 31, 85],尤其是在源演示数量有限的场景中。

  2. 域随机化:在 METASIM 的 Isaac Sim [88] 处理程序中实现域随机化。这涉及四种类型的随机化:
    • 桌子、地面和墙壁。对于缺乏预定义场景的任务,可以添加墙壁(和天花板)。对于在桌面上执行的任务,还可以包含可自定义的表格。这些元素的视觉材质是从 ARNOLD [36] 和 vMaterials [87] 的精选子集中随机选择的。表格中有 ∼300 种材质选项,而墙壁和地面各有大约 ∼150 种材质选项。
    • 光照条件。可以指定两种光照场景:远光和圆柱的光阵列。对于远光,光源的极角是随机的。对于圆柱光,在智体上方固定高度添加一个随机的 n × m 圆柱光矩阵,其大小是随机的。在这两种场景中,光源的强度和色温都在合理的范围内随机化。
    • 相机姿态。精心挑选 59 个候选相机姿态,其中大多数姿态面向机器人正对方向,一小部分姿态面向机器人侧面。
    • 反射属性。每个表面的粗糙度、镜面反射和金属属性都在合理的范围内随机化。

这些随机化选项可以自由组合。例如,一个场景可以包含一张定制的桌子、带天花板的墙壁和一组圆柱形灯,以模拟室内环境。

ROBOVERSE 数据集

  1. 数据集统计:
    a) 操作数据集:将现有源基准 [84, 37, 112, 48, 82, 134, 145, 79, 34, 24, 36, 68, 66, 35, 27, 72, 67, 18] 中的各种操作数据集迁移到 ROBOVERSE。下表汇总了各源基准贡献的任务类别、轨迹和资产数量。本次迁移共计生成 276 个任务类别、510.5 万条轨迹和 5.5 万项资产。
    请添加图片描述

下图展示具有丰富域随机化的代表性任务。
请添加图片描述

b) 导航数据集:将视觉和语言导航 (VLN) 任务迁移到 ROBOVERSE。需要注意的是,存在各种具有不同设置的 VLN 任务;本文特别关注连续环境中的 VLN (VLN-CE) [58],因为它更接近真实场景 [11, 139, 140]。具体而言,基于 ROBOVERSE 构建数据集,集成了 MatterPort 3D 场景 [9](90 个场景)以及 R2R [58](10k 个场景)和 RxR [60](20k 个场景)的现成指令。提供两种类型的移动实例,包括 Unitree Dog(腿式机器人)和 JetBot(轮式机器人),它们支持不同的控制策略。
c) 人形机器人数据集:将 HumanoidBench [106] 任务迁移至强化学习基准,并集成了来自 Humanoid-X [80] 和 SkillBlender [61] 的任务、策略和数据样本。此外,在框架内重新实现 UH-1 推理流程。预训练策略成功地使人形机器人能够遵循演示姿势,同时在基于 ROBOVERSE 的多个模拟器上保持稳定的运动。

基准概述

通过收集任务、资产和轨迹,ROBOVERSE 为机器人学习(包括模仿学习和强化学习)建立了标准化基准。在 ROBOVERSE 平台内定义统一的训练和评估协议,并实施用于基准测试的标准化基线和学习框架。具体而言,对于模仿学习,引入不同级别的泛化基准来评估模型的泛化能力。

模仿学习基准

对于每个模仿学习基准,建立了一个标准化的评估框架,该框架包含一组固定的演示和受控的评估环境。策略必须专门基于提供的训练数据进行训练,并在此环境中进行评估,以确保公平比较。为了严格测试泛化能力,从特定领域收集训练数据,并在未见过的样本上评估策略,以测试其对新场景的适应性。系统地将视觉泛化因素分为多个级别,包括任务空间泛化、环境设置泛化、相机设置泛化以及光照和反射泛化。每个级别都引入受控的变量,以评估策略在日益多样化和具有挑战性的条件下的适应性和鲁棒性。

a) 级别 0:任务空间泛化:通过使用一致的相机、材质、光照和其他参数对环境进行标准化,建立受控评估。任务空间(包括目标初始化和指令)被分为 90% 的训练集和 10% 的验证集,以评估在固定设置下的泛化能力,如图 (a) 所示。

b) 级别 1:环境随机化:在标准化设置的基础上,在保持相机、材质和光照不变的情况下引入场景随机化 [81]。通过改变房屋、桌子和地面的配置,创建不同的视觉输入,以测试策略对环境变化的鲁棒性 [51]。一组固定的预定义随机场景可确保结构化评估,如图 (b) 所示。

c) 级别 2:相机随机化:为了评估跨相机变化的泛化能力,使用标注的真实相机姿态引入不同的观看高度和角度。按照 90/10 的训练/测试比例,确保评估的一致性和严格性,如图 © 所示。

d) 级别 3:光照和反射随机化:现实世界环境涉及各种材质和光照条件 [116]。为了模拟这些挑战,随机化光照和反射,并设计了逼真的物体材质和照明设置 [19]。这增强了在不同条件下的鲁棒性测试,如图 (d) 所示。

请添加图片描述

强化学习基准

除了模仿学习之外,ROBOVERSE 还提供了全面的强化学习 (RL) 基准,旨在适应各种任务、机器人实例和模拟后端。具体而言,将 Stable-Baselines3 [98] 和 rsl_rl [102] 中的 PPO [105] 算法集成到 METASIM 界面中,从而实现了简单的任务定义、无缝的环境切换和标准化的性能日志记录。

基于此基础架构,已成功将 Humanoid-Bench [106] 基准测试中多个人形机器人控制任务移植到 ROBOVERSE。通过针对 rsl_rl [102] 进行适配的接口,有效地扩展了框架兼容性,使其能够支持原始基准测试中的 TD-MPC2 [41, 42] 算法,同时保持了实现的保真度。

相关文章:

ROBOVERSE:面向可扩展和可泛化机器人学习的统一平台、数据集和基准

25年4月来自UC Berkeley、北大、USC、UMich、UIUC、Stanford、CMU、UCLA 和 北京通用 AI 研究院(BIGAI)的论文“ROBOVERSE: Towards a Unified Platform, Dataset and Benchmark for Scalable and Generalizable Robot Learning”。 数据扩展和标准化评…...

【Bootstrap V4系列】学习入门教程之 组件-轮播(Carousel)高级用法

【Bootstrap V4系列】学习入门教程之 组件-轮播(Carousel)高级用法 轮播(Carousel)高级用法2.5 Crossfade (淡入淡出)2.6 Individual .carousel-item interval (单个轮播项目间隔)2.…...

LangChain4j简介

LangChain4j 是什么? The goal of LangChain4j is to simplify integrating LLMs into Java applications. LangChain4j 的目标是简化将 LLMs 集成到 Java 应用程序中。 提供如下能力: ● 统一的 API: LLM 提供商(如 OpenAI 或 Go…...

Git 撤销已commit但未push的文件

基础知识:HEAD^ 即上个版本, HEAD~2 即上上个版本, 依此类推… 查看commit日志 git log撤销commit,保留git add git reset --soft HEAD^ #【常用于:commit成功,push失败时的代码恢复】保留工作空间改动代码,撤销com…...

OC语言学习——面向对象(下)

一、OC的包装类 OC提供了NSValue、NSNumber来封装C语言基本类型(short、int、float等)。 在 Objective-C 中,**包装类(Wrapper Classes)**是用来把基本数据类型(如 int、float、char 等)“包装…...

SafeDrive:大语言模型实现自动驾驶汽车知识驱动和数据驱动的风险-敏感决策——论文阅读

《SafeDrive: Knowledge- and Data-Driven Risk-Sensitive Decision-Making for Autonomous Vehicles with Large Language Models》2024年12月发表,来自USC、U Wisconsin、U Michigan、清华大学和香港大学的论文。 自动驾驶汽车(AV)的最新进…...

什么是先验?(CVPR25)Detail-Preserving Latent Diffusion for Stable Shadow Removal论文阅读

文章目录 先验(Prior)是什么?1. 先验的数学定义2. 先验在深度生成模型中的角色3. 为什么需要先验?4. 先验的常见类型5. 如何选择或构造先验?6. 小结 先验(Prior)是什么? 在概率统计…...

【论文阅读】Attentive Collaborative Filtering:

Attentive Collaborative Filtering: Multimedia Recommendation with Item- and Component-Level Attention Attentive Collaborative Filtering (ACF)、隐式反馈推荐、注意力机制、贝叶斯个性化排序 标题翻译:注意力协同过滤:基于项目和组件级注意力的…...

如何使用极狐GitLab 软件包仓库功能托管 maven?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Maven 包 (BASIC ALL) 在项目的软件包库中发布 Maven 产物。然后,在需要将它们用作依赖项时安装它…...

Notion Windows桌面端快捷键详解

通用导航 这些快捷键帮助用户在 Notion 的界面中快速移动。 打开 Notion:Ctrl T 打开一个新的 Notion 窗口或标签页,方便快速进入工作空间。返回上一页:Ctrl [ 导航回之前查看的页面。前进到下一页:Ctrl ] 跳转到导航历史中的…...

企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢

随着Deepseek乃至AI人工智能技术在企业中得到了广泛的关注和使用,多数企业开始了AI探索之旅,迅易科技也不例外,且在不断地实践中强化了AI智能应用创新的强大能力。 为解决企业知识管理碎片化、提高内部工作效率等问题,迅易将目光放…...

GoFly企业版框架升级2.6.6版本说明(框架在2025-05-06发布了)

前端框架升级说明: 1.vue版本升级到^3.5.4 把"vue": "^3.2.40",升级到"vue": "^3.5.4",新版插件需要时useTemplateRef,所以框架就对齐进行升级。 2.ArcoDesign升级到2.57.0(目前最新2025-02-10&a…...

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶飞跃——论文阅读

《LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking》2025年1月发表,来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文。 尽管自动驾驶技术取得了显著进步,但由于推理能力有限,数…...

ps信息显示不全

linux执行ps是默认宽度是受限制的,例如: ps -aux 显示 遇到这种情况,如果显示的信息不是很长可以添加一个w参数来放宽显示宽度 ps -auxw 显示 再添加一个w可以接触宽度限制,有多长就显示多长 ps -auxww 显示...

性能比拼: Redis Streams vs Pub/Sub

本内容是对知名性能评测博主 Anton Putra Redis Streams vs Pub/Sub: Performance 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在这个视频中,我们首先将介绍 Redis Streams 和 Redis Pub/Sub 之间的区别。然后,我们将在 AWS 上运行一个基准…...

实践004-Gitlab CICD部署应用

文章目录 Gitlab CICD部署应用部署设计集成Kubernetes后端Java项目部署创建gitlab部署项目创建部署文件创建流水线提交流水线 前端Web项目部署创建gitlab部署项目创建部署文件创建流水线提交流水线 Gitlab CICD部署应用 部署设计 对于前后端服务都基于 Kubernetes 进行部署&a…...

二叉树与优先级队列

1.树 树是由n个数据构成的非线性结构,它是根朝上,叶朝下。 注意:树形结构之中,子树之间不能连接,不然就不构成树形结构 1.子树之间没有交集 2.除了根节点以外,每一个节点有且只有一个父亲节点 3.一个n个…...

如何使用极狐GitLab 软件包仓库功能托管 npm?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 npm 包 (BASIC ALL) npm 是 JavaScript 和 Node.js 的默认包管理器。开发者使用 npm 共享和重用代码&#xff…...

uniapp自定义底部导航栏h5有效果小程序无效的解决方案

在使用 uni-app 开发跨端应用时,常见问题之一是自定义底部导航栏(tabbar)在H5端有效,但在小程序端无效。这是因为小程序端的页面结构和生命周期与H5有差异,且小程序端的原生tabbar有更高的优先级,覆盖了自定…...

开发搭载阿里云平台的物联网APP(支持数据接收与发送)

一、开发环境准备 工具安装 HBuilderX:下载并安装最新版(支持Vue.js和uni-app框架)阿里云IoT SDK:使用JavaScript版SDK(如aliyun-iot-mqtt或mqtt.js)插件安装:HBuilderX插件市场搜索安装mqtt相关…...

Flowchart 流程图的基本用法

以下是 Flowchart 流程图 的基本用法整理,涵盖核心概念、符号含义、绘制步骤及注意事项,助你高效表达流程逻辑: 一、流程图的核心作用 可视化流程:将复杂步骤转化为直观图形,便于理解和分析。梳理逻辑:明确…...

Excel模版下载文件导入

工作中经常遇到Excel模板下载,然后填好后再导入的情况,简单记录下,方便下次使用 Excel模版下载(返回Base64) 模板文件存放位置 import java.util.Base64; import org.apache.commons.io.IOUtils; import org.sprin…...

深入了解linux系统—— 进程控制

进程创建 fork函数 在Linux操作系统中,我们可以通过fork函数来创建一个子进程; 这是一个系统调用,创建子进程成功时,返回0给子进程,返回子进程的pid给父进程;创建子进程失败则返回-1给父进程。 我们就可…...

【前端基础】7、CSS的字体属性(font相关)

一、font-size:设置字体大小 设置方法: 具体数值单位 例如:100px 也可以用em为单位:1em代表100%,2em代表200%……0.5em代表50%。 px方式: em方式: 但是设置em的时候具体是多大呢&#xff1f…...

学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法

学习整理使用php将SimpleXMLElement 对象解析成数组格式的方法 要将 SimpleXMLElement 对象解析成数组格式,您可以使用 PHP 的 json_decode 和 json_encode 函数。首先,将 SimpleXMLElement 对象转换为 JSON 字符串,然后将这个字符串解码成数…...

MSF(3)免杀混淆

声明!本文章所有的工具分享仅仅只是供大家学习交流为主,切勿用于非法用途,如有任何触犯法律的行为,均与本人及团队无关!!! 一、前言 前面说了木马的捆绑,dll,exe,hta等密…...

经典密码学算法实现

# AES-128 加密算法的规范实现(不使用外部库) # ECB模式S_BOX [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B,0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0,0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0x…...

idea里maven自定义的setting.xml文件不生效问题

问题描述: 内网环境中:maven选择选择自定义的maven文件夹时,使用的是自定义的setting.xml和本地仓库,怎么都读取不到仓库的依赖; 分析: 1.可能是setting.xml文件里没有配置本地仓库的路径; 2…...

注意力机制(Attention)

1. 注意力认知和应用 AM: Attention Mechanism,注意力机制。 根据眼球注视的方向,采集显著特征部位数据: 注意力示意图: 注意力机制是一种让模型根据任务需求动态地关注输入数据中重要部分的机制。通过注意力机制&…...

【java】使用iText实现pdf文件增加水印功能

maven依赖 <dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom</type></dependency> </dependencies>实现代码 前…...

TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章

ParseX重要版本更新内容速读 - 新增公式解析参数 formula_level&#xff0c;支持 LaTeX / Text 灵活切换&#xff1b; - 表格解析优化单元格内换行输出&#xff1b; - 导出excel时&#xff0c;图片链接放在单元格内&#xff1b; - 新增电子档pdf去印章功能。 体验文档解析…...

禁止idea联网自动更新通过防火墙方式

防火墙方式禁止idea更新检测&#xff0c;解决idea无限循环触发密钥填充流程。 1.首先打开控制面板找到高级设置 2.点击出站规则 3.新建规则 4.选择程序 5.找到idea路径 6.下一步 7.阻止连接 8.全选 9.输入禁止idea的名称 10.至此idea自动更新禁用完成...

面向智能体开发的声明式语言:可行性分析与未来图景

面向智能体开发的声明式语言&#xff1a;可行性分析与未来图景 一、技术演进的必然性&#xff1a;从“脚本化AI”到“声明式智能体” 当前AI开发仍停留在“脚本化AI”阶段&#xff1a;开发者通过Python/Java编写条件判断调用LLM API&#xff0c;如同用汇编语言编写操作系统。…...

【Bug经验分享】SourceTree用户设置必须被修复/SSH 主机密钥未缓存(踩坑)

文章目录 配置错误问题原因配置错误问题解决主机密钥缓存问题原因主机密钥缓存问题解决 更多相关内容可查看 配置错误问题原因 电脑太卡&#xff0c;曾多次强制关机&#xff0c;在关机前没有关闭SourceTree&#xff0c;导致配置错误等问题 配置错误问题解决 方式一&#xff…...

http Status 400 - Bbad request 网站网页经常报 HTTP 400 错误,清缓存后就好了的原因

目录 一、HTTP 400 错误的常见成因(一)问题 URL(二)缓存与 Cookie 异常(三)请求头信息错误(四)请求体数据格式不正确(五)文件尺寸超标(六)请求方法不当二、清缓存为何能奏效三、其他可以尝试的解决办法(一)重新检查 URL(二)暂时关闭浏览器插件(三)切换网络环…...

六个仓库合并为一个仓库,保留master和develop分支的bat脚本

利用git subtree可以实现多个仓库合并为一个仓库&#xff0c;手动操作起来太麻烦了&#xff0c;今天花了点时间写了一个可执行的脚本&#xff0c;现在操作起来就方便多了。 1、本地新建setup.bat文件 2、用编辑器打开&#xff08;我用的是Notepad&#xff09; 3、把下面代码…...

新能源汽车中的NVM计时与RTC计时:区别与应用详解

在新能源汽车的电子控制系统中&#xff0c;时间管理至关重要&#xff0c;而NVM计时&#xff08;Non-Volatile Memory Timing&#xff09;和RTC计时&#xff08;Real-Time Clock&#xff09;是两种不同的时间记录机制。虽然它们都与时间相关&#xff0c;但在工作原理、应用场景和…...

✨WordToCard使用分享✨

家人们&#xff0c;今天发现了一个超好用的工具——WordToCard&#xff01;&#x1f61c; 它可以把WordToCard文档转换成漂亮的知识卡片&#xff0c;学习笔记、知识整理和内容分享都变得超轻松&#xff5e;&#x1f917; 支持各种WordToCard语法&#xff0c;像标题、列表、代…...

内网和外网怎么互通?外网访问内网的几种简单方式

在企业或家庭网络中&#xff0c;经常会遇到不同内网环境下网络互通问题。例如&#xff0c;当公司本地局域网内有个办公OA网站&#xff0c;在办公室内电脑上网可以登录使用&#xff0c;但在家带宽下就无法直接通信访问到。这就需要我们采取一些实用的内外网互通技巧来解决这个问…...

Mac中Docker下载与安装

目录 Docker下载安装配置 版本查询以及问题处理配置国内镜像在Docker中安装软件Nginx Docker 下载 官网&#xff1a;https://www.docker.com/get-started/ 或者 安装 配置 这里我们选择 Accept 选择默认配置就行&#xff0c;Docker 会自动设置一些大多数开发人员必要的配…...

固件测试:mac串口工具推荐

串口工具对固件测试来说非常重要&#xff0c;因为需要经常看日志&#xff0c;Windows上有Xshell和secureCRT&#xff0c;用起来很方便&#xff0c;尤其可以保存日志&#xff0c;并且可以进行日志分割。 mac上用什么串口工具呢&#xff0c;今天给大家推荐CoolTerm。 CoolTerm …...

41.防静电的系列措施

静电干扰的处理措施 1. ESD放电特征2. 静电防护电路设计措施3. ESD防护结构措施4. 案例分析 1. ESD放电特征 &#xff08;1&#xff09;放电电流tr≈1nS&#xff0c;ESD保护器件响应时间应小于1nS&#xff1b; &#xff08;2&#xff09;频率集中在几十MHz到500MHz&#xff1b;…...

Jmeter进行http接口测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤&#xff08;1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL&#xff0c;路径&#x…...

Ubuntu也开始锈化了?Ubuntu 计划在 25.10 版本开始引入 Rust Coreutils

上个月&#xff0c;jnsgruk发表了《未来20年的Ubuntu工程》&#xff08;Engineering Ubuntu For the Next 20 Years&#xff09;一文&#xff0c;其中概述了打算在未来几年中如何发展Ubuntu的四个关键主题。在这篇文章中&#xff0c;重点讨论 了“现代化”。在很多方面对Ubuntu…...

C++命名空间、内联与捕获

命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...

PostgreSQL 系统管理函数详解

PostgreSQL 系统管理函数详解 PostgreSQL 提供了一系列强大的系统管理函数&#xff0c;用于数据库维护、监控和配置。这些函数可分为多个类别&#xff0c;以下是主要功能的详细说明&#xff1a; 一、数据库配置函数 1. 参数管理函数 -- 查看所有配置参数 SELECT name, sett…...

mdadm 报错: buffer overflow detected

最近跑 blktest (https://github.com/osandov/blktests) 时发现 md/001 的测试失败了 单独执行&#xff0c;最后定位到是 mdadm 命令报错: buffer overflow detected 这个 bug 目前已经修复: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id827e1870f3205…...

java ReentrantLock

线程同步工具。可以替代 synchronized . private final ReentrantLock reentrantLock new ReentrantLock();void testTask1 () {reentrantLock.lock(); // 获取锁try {System.out.println(Thread.currentThread().getName() " 进入临界区");// 模拟执行业务逻辑Th…...

kettle从入门到精通 第九十六课 ETL之kettle Elasticsearch 增删改查彻底掌握

场景&#xff1a; 群里有小伙伴咨询kettle从Elasticsearch中抽取数据&#xff0c;群里老师们纷纷响应&#xff0c;vip小伙伴是不是有中受宠若惊的感觉。 今天我们使用kettle通过es的原生rest接口来进行操作es&#xff0c;开整。 前提&#xff1a;本篇文章基于elasticsearch:7.…...

Kafka的核心组件有哪些?简要说明其作用。 (Producer、Consumer、Broker、Topic、Partition、ZooKeeper)

Kafka 核心组件解析 1. 基础架构图解 ┌─────────┐ ┌─────────┐ ┌─────────┐ │Producer │───▶ │ Broker │ ◀─── │Consumer │ └─────────┘ └─────────┘ └────────…...