基于视觉语言模型的机器人实时探索系统!ClipRover:移动机器人零样本视觉语言探索和目标发现

news2025/4/15 9:31:44

  • 作者:Yuxuan Zhang 1 ^{1} 1, Adnan Abdullah 2 ^{2} 2, Sanjeev J. Koppal 3 ^{3} 3, and Md Jahidul Islam 4 ^{4} 4
  • 单位: 2 , 4 ^{2,4} 2,4佛罗里达大学电气与计算机工程系RoboPI实验室, 1 , 3 ^{1,3} 1,3佛罗里达大学电气与计算机工程系FOCUS实验室, 3 ^{3} 3Amazon Robotics
  • 论文标题:ClipRover: Zero-shot Vision-Language Exploration and Target Discovery by Mobile Robots
  • 论文链接:https://arxiv.org/pdf/2502.08791
  • 项目主页:https://robopi.ece.ufl.edu/cliprover.html

主要贡献

  • 提出了新的导航管道流程ClipRover,用于无人地面车辆(UGV)在未知环境中的同时探索和目标发现。该系统利用视觉语言模型(VLM)的空间上下文感知能力,通过模块化架构实现。
  • 设计了新的UGV平台Rover Master,支持VLM导航系统的机动性和计算需求,旨在为通用机器人研究提供强大且可配置的支持,并计划开源供学术使用。
  • 开发了功能齐全的系统,将提出的导航管道与UGV平台集成在一起,并通过全面基准测试进行优化,以实现实时性能。
  • 通过广泛的实验评估,证明了ClipRover在效率和成功率方面优于传统的地图遍历算法,并且在轨迹效率或成功率方面达到了与依赖先验知识的路径规划方法相当的性能。

研究背景

研究问题

  • 传统的系统通常将地图探索和路径规划分开进行,导致探索效率低下。
  • 论文主要解决的问题是如何在未知环境中实现移动机器人的零样本视觉语言导航和目标发现。

研究难点

该问题的研究难点包括:

  • 在没有预先构建的地图或目标知识的情况下,如何利用视觉语言模型(VLM)进行实时主动导航;
  • 如何在动态和部分可观测的环境中适应路径规划。

相关工作

  • 路径规划:讨论了用于移动机器人路径规划的多种方法,包括树搜索算法(如BFS、DFS、Dijkstra、A*)和采样算法(如PRM、RRT)。这些方法在静态环境中表现良好,但在复杂和动态环境中可能需要频繁调整。
  • 局部策略算法:介绍了Bug算法(如Bug0、Bug1、Bug2),这些算法采用局部最优策略,通过跟随视线和避开障碍物边界来实现导航。这些方法在有限的环境信息下表现良好。
  • 零样本学习:讨论了零样本学习的概念,使机器人能够在不熟悉的环境中识别物体并做出导航决策。研究人员使用视觉特征、知识图、语义嵌入等技术来编码对象信息。
  • 视觉语言导航:介绍了结合视觉和语言信息的导航方法,特别是基于CLIP模型的系统。这些系统通过生成语义标签来支持在线导航,实现零样本语义任务。然而,这些系统通常依赖于预先构建的地图和目标位置信息。

Rover Master

系统设计

平台概述
  • Rover Master是一个便携且可扩展的平台,专为2D导航任务设计。它的主要传感器和执行器组件包括一个单目RGB摄像头和一个2D激光雷达,用于外部感知。
  • 四个独立的轮子组件负责执行动作,每个轮子组件都是模块化的,自包含的,包括变速箱、无刷直流电机和悬挂系统。
轮子组件
  • 每个轮子组件由一个无刷直流电机通过行星齿轮箱连接,齿轮比为16:1。这种设计允许机器人在较高速度下行驶,并轻松克服中等障碍物。
  • 为了确保操作安全,设置了20%的油门限制,将机器人的最大速度限制在约2米/秒。
计算能力
  • Rover Master的计算管道由Nvidia Jetson Orin模块提供动力。
  • 这个模块提供了足够的计算能力来处理通用视觉语言模型和其他计算密集型任务。
摄像头和LiDAR
  • 使用FLIR全局快门RGB摄像头进行视觉感知,摄像头被提升到离地面大约30厘米的高度。这种设计确保了镜头的光学中心与机器人的几何中心对齐。
  • 此外,飞行控制器的IMU提供的航向值支持360度扫描能力。2D激光雷达安装在上层甲板的前部,主要用于安全和可视化目的,不影响视觉语言导航(VLN)的决策。
悬挂系统
  • 四轮独立悬挂系统扩展了平台在不平坦表面的应用。
  • 使用Discovery Wheel(TPU)时,它在草地、岩石路面甚至沙地上表现良好,但机动性有所降低。
配置灵活性
  • Rover Master平台可以配置为不同的驱动类型(全向或差动)、底盘尺寸(参数化CAD设计)以及特定任务的执行器和传感器的附加组件(如摄像头、LiDAR、室内和野外机器人应用的机械手)。
  • 底盘板设计用于根据任务容纳各种附加传感器和执行器。

特点和能力

紧凑性
  • Rover Master系统的独特优势在于其轮子和电机组件的紧凑性。
  • 四轮独立悬挂系统使其能够适应不平坦的表面。
配置灵活性
  • 平台可以配置为不同的驱动类型、底盘尺寸和任务特定的执行器和传感器附加组件。
  • 底盘板设计用于根据任务容纳各种附加传感器和执行器。
成本效益

  • Rover Master平台的成本效益高,与其他标准UGV平台相比具有竞争力。
  • 具体来说,Rover Master的估计成本在650到850美元之间,而TurtleBot3(Waffle Pi)的成本约为1500美元,TurtleBot4(标准版)的成本约为2100美元。

ClipRover导航流程

视觉感知前端

  • 在前端,原始相机帧被分割成多个小块(tiles),这些小块代表机器人的视场(FOV)中的空间位置。
  • 每个tile经过缩放和处理后,通过CLIP的视觉编码器进行编码。具体来说,每个帧被分割成六个tile,并重新排列成一个张量,形状为 N × 3 × H × W N \times 3 \times H \times W N×3×H×W,其中 H H H W W W 是tile的高度和宽度。
  • 编码器处理这些输入并生成一个 N × D N \times D N×D 的嵌入向量,其中 D D D 是每个预测向量的维度(在CLIP模型中为512)。
  • 此外,每个tile的标准差也被计算并结合到模型的预测中,作为每个tile信息量的指标。这有助于在机器人遇到特征贫乏、颜色均匀的对象时,如墙壁、门或家具,识别视觉编码器的输出可能缺乏可靠性。

通行性:视觉-语言相关性

  • 为了区分可行空间和非可行空间,设计了一组正面提示(positive prompts)来描述干净和可行的环境,例如:“一张(平坦|开阔|宽阔|清晰)的(地板|地面|走廊)照片”。
  • 同时,也设计了一组负面提示(negative prompts)来描述被障碍物遮挡的空间,例如:“一张(裁剪的|糟糕的|不完整的)(阻塞|杂乱|拥挤)的(场景|空间)照片”。
  • 对于目标发现,使用类似的文本提示来定义任务的目标。例如,实验中使用玩具熊作为目标,因为其在场景中具有独特性。
  • 通过比较每个tile的嵌入与提示数据库的内积,计算出通行性和目标置信度的分数。这些分数的范围从-1.0到1.0,由最高绝对匹配得分决定。

熟悉度:视觉-视觉相关性

  • 除了通行性分数外,实时积累熟悉度数据库以跟踪已探索的空间。数据库由表示已知空间的视觉嵌入(512维向量)构建,而不存储或使用实际图像。
  • 当新嵌入与现有向量的相关性超过预定义阈值时,将其视为“已知”。新嵌入向量通过两种策略之一逐步合并到熟悉度数据库中:
    • 平均法:在所有属于已知点的向量之间取平均值,保持跟踪已合并向量的计数:
      v next = s s + 1 ⋅ v prev + 1 s + 1 ⋅ v new v_{\text{next}} = \frac{s}{s+1} \cdot v_{\text{prev}} + \frac{1}{s+1} \cdot v_{\text{new}} vnext=s+1svprev+s+11vnew
    • 滚动平均法:在合并新向量时执行滚动平均操作,不需要跟踪已合并向量的总数。这种方法使向量倾向于新插入的向量,并逐渐“忘记”较旧的向量。遗忘率由因子 λ \lambda λ 控制(即衰减因子):
      v next = ( 1 − λ ) ⋅ v prev + λ ⋅ v new v_{\text{next}} = (1 - \lambda) \cdot v_{\text{prev}} + \lambda \cdot v_{\text{new}} vnext=(1λ)vprev+λvnew

导航决策后端

  • 决策模块根据感知和关联系统提供的信息生成运动命令。
  • 引入了一个“运动混合器”作为基线的相关性到运动的转换器。它考虑每个tile的所有分数(即通行性、熟悉度和标准差),并做出智能决策。
  • 运动混合器通常优先选择高度可行但较不熟悉的区域,同时避免纹理少的区域。

此外,决策模块还包括两个附加功能:

  • 陷阱检测:使机器人能够识别并逃离潜在的死胡同。
  • 环顾四周:允许机器人在复杂环境中重新定位自己。通过执行 36 0 ∘ 360^\circ 360 旋转并收集不同方向的导航分数,应用高斯卷积来识别最可行的方向。

实现细节

切片策略

  • 为了增强管道中位置信息的嵌入,原始相机帧在输入视觉语言模型之前被分割成更小的tiles。

  • 这种策略旨在优化机器人基于其视觉感知做出明智导航决策的能力。具体来说,每个帧被分割成六个tiles(2行x3列),以适应机器人的控制能力。

  • 使用较小的tiles代替整个相机帧可以减少视觉干扰,从而提高相关结果的准确性。

  • 切片的尺寸在整个管道的所有阶段保持一致。例如,在2x3切片策略下,分割后的帧产生一个相应的 2 × 3 × 512 2 \times 3 \times 512 2×3×512 的视觉嵌入矩阵。

  • 这些嵌入随后被传递给关联系统,生成一个 2 × 3 2 \times 3 2×3 的相关分数矩阵,每个元素对应一个特定的tile。关联系统的逻辑决定了单个tiles之间的相互影响。

  • 为了保留每个tile中的空间上下文,分割的区域略微扩展到其原始边界之外。

  • 这种重叠引入了大约20%的共享区域,减少了相邻tiles之间上下文信息的丢失。

  • 这种调整在相机遇到无纹理表面(如墙壁、纸盒或门板)时特别有益,否则可能会损害机器人的感知和导航性能。

提示生成

设计了一个提示系统来组合文本提示,采用层次模板。该设计受到WinCLIP的启发,一个异常检测框架。提示系统包括以下模板和符号:

  • 顶层prompts,如:“一张[描述]的(状态){对象}的照片”。
  • 描述,如清晰、模糊、裁剪、空、损坏等。
  • 状态,如清洁、清晰、宽阔、狭窄、杂乱、堵塞等。
  • 对象,如地板、墙、门、物体等。

使用YAML语法定义提示数据库的结构,提供了选择性集成和就地扩展两个关键特性:

  • 选择性集成:允许提示绕过模板的某些层级,以实现精确定制。例如,提示“A(无意义)的照片”不应跟随任何{对象},通过提前终止提示来实现。
  • 就地扩展:通过使用垂直条语法(即|)分隔术语,便于集体定义相似的短提示。例如,提示“A照片没有{上下文|纹理|信息}”被扩展为三个不同的提示。

性能优化

  • 导航决策是实时自主机器人系统的关键组件,需要快速执行以确保安全和操作效率。
  • 然而,大多数视觉语言模型(VLMs)被设计为大型语言模型(LLMs)的扩展,对处理延迟和数据吞吐量的要求较低。
  • 为了评估VLMs在机器人导航中的适用性,识别了两个关键性能指标:
    • 决策延迟:测量从机器人相机捕获帧到向电机发出相应运动命令的时间。这个指标反映了系统对环境变化的反应能力,如避开障碍物和维护安全导航。
    • 吞吐量:量化每秒处理的帧数,直接影响机器人运动的平滑度。有限的计算资源需要丢弃未处理的帧,只保留最新的帧进行决策。更高的吞吐量最小化帧间差异,减少运动的突然变化,确保更平滑的过渡。数学上,吞吐量是决策延迟的倒数。

  • 为了减少决策延迟和提高数据吞吐量,提出的框架将导航管道分为四个主要节点:预处理、推理、相关性和决策。
  • 计算密集型任务被卸载到GPU上,以利用并行处理能力。这些优化在功率受限的嵌入式系统上实现,平衡了效率和性能。通过这些优化,实现了:
    • 决策延迟:252.10毫秒,提高了900%。
    • 吞吐量:5.01帧每秒(FPS),相比顺序CPU实现提高了400%。

2D LiDAR的使用

尽管ClipRover管道仅使用单目RGB数据进行VLN导航决策,但在机器人上安装了一个2D 360°扫描LiDAR用于实验安全、地图生成和比较分析。LiDAR的具体功能包括:

  • 模拟接近开关
    • LiDAR作为虚拟关闭开关,在操作期间检测机器人路径上的障碍物。
    • 它监控发送到车轮的运动命令,推断机器人的计划轨迹,并检查该方向上是否存在潜在障碍物。
    • 检测到潜在碰撞时,发出停止信号,严格用于安全目的,不影响导航算法。
  • 地图和机器人轨迹的可视化
    • 离线使用记录的LiDAR和里程计数据进行地图生成,随后进行轨迹分析以评估导航效率和整体性能。
    • 使用SLAM Toolbox生成地图和轨迹,实施两遍过程以提高结果质量。
  • 与传统算法的比较:使用LiDAR数据生成的2D地图用于模拟和评估传统范围传感器基于的地图遍历和路径规划算法,以进行性能比较。

波前模拟

  • 设计了“波前”模拟包作为不同方法之间比较的一般基线指标。它利用经典波动方程的概念并将其解释为概率分布,允许同时探索无限多的方向。

  • 模拟实现了一个离散时间的二维拉普拉斯方程:
    ∂ 2 ∂ t 2 ψ ( x , y , t ) = c 2 ∇ 2 ψ ( x , y , t ) \frac{\partial^2}{\partial t^2} \psi(x,y,t) = c^2 \nabla^2 \psi(x,y,t) t22ψ(x,y,t)=c22ψ(x,y,t)
    离散化后的波动方程为:
    ψ ( x , y , t n + 1 ) = 2 ⋅ ψ ( x , y , t n ) − ψ ( x , y , t n − 1 ) + c 2 Δ t 2 Δ x 2 ∇ 2 ψ ( x , y , t ) s.t. t n + 1 − t n = Δ t \begin{align*} \psi(x, y, t_{n+1}) &= 2 \cdot \psi(x, y, t_n) - \psi(x, y, t_{n-1}) \\ &+ \frac{c^2 \Delta t^2}{\Delta x^2} \nabla^2 \psi(x, y, t) \\ \text{s.t.} &\quad t_{n+1} - t_n = \Delta t \end{align*} ψ(x,y,tn+1)s.t.=2ψ(x,y,tn)ψ(x,y,tn1)+Δx2c2Δt22ψ(x,y,t)tn+1tn=Δt
    离散化的拉普拉斯算子 ∇ 2 \nabla^2 2 定义为:
    ∇ 2 ψ ( x , y ) = ψ ( x i + 1 , y j ) + ψ ( x i − 1 , y j ) + ψ ( x i , y j + 1 ) + ψ ( x i , y j − 1 ) − 4 ⋅ ψ ( x , y ) s.t. x i + 1 − x i = y j + 1 − y j = Δ x \begin{align*} \nabla^2 \psi(x,y) &= \psi(x_{i+1}, y_j) + \psi(x_{i-1}, y_j) \\ &+ \psi(x_i, y_{j+1}) + \psi(x_i, y_{j-1}) \\ &- 4 \cdot \psi(x,y) \\ \text{s.t.} &\quad x_{i+1} - x_i = y_{j+1} - y_j = \Delta x \end{align*} 2ψ(x,y)s.t.=ψ(xi+1,yj)+ψ(xi1,yj)+ψ(xi,yj+1)+ψ(xi,yj1)4ψ(x,y)xi+1xi=yj+1yj=Δx

  • 此外,地图边界和障碍物通过反射条件模拟。在时间 T = 0 T=0 T=0 时,初始化一个以机器人起始位置为中心的高斯概率分布,标准差设置为机器人大小的一半;总概率归一化为1。

  • 每次迭代,波函数乘以一个以目标位置为中心的反高斯函数,有效地减少地图上的总概率,模拟一个排水效应。

  • 模拟终止时,剩余概率低于定义的阈值(实验中为 1 e − 4 1e^{-4} 1e4)。输出是一个二维概率分布 p ( t ) p(t) p(t),指示机器人在每个时间步到达目标的概率。平均值和标准差用于与其他轨迹算法比较。

实验分析

实验设置

  • 实验在室内工作空间进行,选择了一个布局复杂且包含多个障碍物、潜在陷阱和循环的环境。
  • 实验的目标是让机器人探索实验室空间并寻找一个指定的目标——一个大约20厘米高、10厘米宽的玩具熊。
  • 实验中,机器人的起始位置(源)和目标位置(目的地)从五个预定义的区域(如SW、C、NW、NE、SE)中选择。

性能评估

  • 实验旨在评估在无先验地图或目标知识的情况下,探索区域和找到目标的效率。主要使用总行进距离(轨迹长度)作为核心指标来量化这些性能。
  • 这种方法对CPU/GPU性能和机械驱动系统的能力不敏感,因为这些被认为是可以独立改进的外部因素。
比较算法
  • 为了公平比较,实验将提出的ClipRover系统与六种广泛使用的地图遍历和路径规划算法进行了比较。

  • 为了确保一致性,开发了一个新的2D模拟框架RoboSim2D,利用相同的2D LiDAR地图进行模拟,这些地图是从实际实验中记录的扫描生成的。

  • 随机行走(Random Walk):从一个给定的方向开始,遇到障碍物时随机选择新方向。

  • 墙反弹(Wall Bounce):从一个给定方向开始,根据碰撞点的法向量反弹。

  • 波前(Wave Front):从一个高斯概率分布开始,向外扩散并反弹障碍物。

  • Bug算法

    • Bug0:一直朝目标移动,直到遇到障碍物,然后沿着障碍物边界移动。
    • Bug1:尽可能朝目标移动,否则绕过障碍物。绕过障碍物后,移动到环上距离最小的点。
    • Bug2:绕过障碍物,直到越过从起点到目标的直线(m线),然后恢复朝目标直行。
失败标准
  • 由于实际限制,如果行进距离超过预设上限,则任务被视为失败。对于在测试区域进行的实际实验,这个上限设定为100米。
  • 在模拟中,随机行走、墙反弹和波前算法的上限设定为1000米。对于Bug算法,通过检测循环来识别无尽循环,并将其分类为任务失败。
评估指标

实验使用了路径长度加权成功率(SPL)作为性能指标,定义为:
SPL = 1 N ∑ i = 1 N S i l i max ⁡ ( p i , l i ) \text{SPL} = \frac{1}{N} \sum_{i=1}^{N} S_{i} \frac{l_{i}}{\max(p_{i}, l_{i})} SPL=N1i=1NSimax(pi,li)li
其中, S i S_{i} Si 是成功次数, l i l_{i} li 是实际路径长度, p i p_{i} pi 是基线路径长度。SPL指标结合了成功率和路径效率。

定性和定量分析

  • 进行了超过60次实验,基于不同的起始和目标位置组合。对于ClipRover系统,每个起始-目标对进行了三次试验。
  • 相比之下,随机行走实验记录了200次试验,而墙反弹实验记录了180个均匀分布的方向。
结果展示
  • 实验结果显示,ClipRover在正常导航模式下表现出类似人类的运动策略,通过在开阔空间中心导航来提高探索效率并减少被困的可能性。
  • 相比之下,路径规划算法通常沿着障碍物轮廓移动,因为它们缺乏对场景的语义理解。

定量结果
  • 定量结果显示,ClipRover在达到目标前的平均行进距离为基线距离的2.66倍,而Wall Bounce算法在同一成功率下的平均行进距离为9.58倍。
  • 尽管ClipRover没有额外的环境信息,但它在成功率和轨迹效率上优于传统的地图遍历算法,并且在许多情况下超越了依赖路径规划算法的性能。
SOTA VLNs比较
  • 论文还比较了ClipRover与其他最先进的视觉-语言导航(VLN)系统。
  • 与其他系统相比,ClipRover独特地不需要任务空间的先验知识,仅使用单目RGB感知。
  • 此外,ClipRover直接输出低级运动命令,而不需要其他传统定位和导航管道,这使得它在低成本机器人上快速部署特别适用。

局限与改进

  • 纹理缺失或透明表面:ClipRover在处理无纹理或透明表面时遇到困难,容易将这些表面误判为可通行区域。
  • 开放空间和人工迷宫:在缺乏视觉线索的大型开放空间或人工迷宫中,系统的导航效率降低,因为它依赖于环境中的语义信息。
  • 熟悉度饱和:随着时间的推移,熟悉度数据库可能会饱和,导致系统难以有效探索新区域。
  • 自适应切片策略:当前系统使用固定切片策略,可能在狭窄空间中表现不佳。未来改进可以引入自适应切片策略以更好地处理这些情况。
  • 高级推理和任务叙述:未来的改进可以包括集成大型语言模型(LLM)以实现更高层次的推理和任务叙述,从而提高系统的智能水平。

总结

  • 论文提出了ClipRover,一种用于未知环境中自主地面机器人同时探索和目标发现的新型导航管道。
  • ClipRover利用VLMs的能力,实现了零样本推断和高效导航,仅需单目视觉,无需预先地图或目标特定信息。
  • 通过在Rover Master平台上进行广泛的评估,证明了ClipRover在效率和成功率上均优于现有方法。
  • ClipRover的模块化框架为未来在复杂动态环境中应用VLMs的研究奠定了基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW往复式压缩机管路故障诊断系统

往复式压缩机作为工业领域的关键设备,广泛应用于石油化工、能源等行业,承担着气体压缩的重要任务。然而,其管路故障频发,不仅降低设备性能、造成能源浪费,还可能引发严重安全事故。因此,开发精准高效的管路…

springboot 项目 jmeter简单测试流程

测试内容为 主机地址随机数 package com.hainiu.example;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotat…

算法思想之位运算(二)

欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之位运算(二) 发布时间:2025.4.13 隶属专栏:算法 目录 滑动窗口算法介绍六大基础位运算符常用模板总结 例题判定字符是否唯一题目链接题目描述算法思路代码实现 汉明距离题目链接题目…

【计网】网络交换技术之报文交换(复习自用,了解,重要3)

复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 另外两种交换技术可以直接点击链接访问相关笔记: 电路交换 分组交换 一、报文交换的定义 报文交换(Me…

【动态规划】深入动态规划:背包问题

文章目录 前言01背包例题一、01背包二、分割等和子集三、目标和四、最后一块石头的重量|| 完全背包例题一、完全背包二、 零钱兑换三、零钱兑换||四、完全平方数 前言 什么是背包问题,怎么解决算法中的背包问题呢? 背包问题 (Knapsack problem) 是⼀种组…

BUUCTF-web刷题篇(25)

34.the mystery of ip 给出链接,输入得到首页: 有三个按钮,flag点击后发现页面窃取客户端的IP地址,通过给出的github代码中的php文件发现可以通过XFF或Client-IP传入值。使用hackbar或BP 使用XSS,通过github给出的目录…

StringBuilder类基本使用

文章目录 1. 基本介绍2. StringBuilder常用方法3. String、StringBuffer 和 StringBuilder 的比较4. String、StringBuffer 和 StringBuilder 的效率测试5. String、StringBuffer 和 StringBuilder 的选择 1. 基本介绍 一个可变的字符序列。此类提供一个与StringBuffer兼容的A…

设计模式 --- 访问者模式

访问者模式是一种行为设计模式,它允许在不改变对象结构的前提下,定义作用于这些对象元素的新操作。 优点: 1.​​符合开闭原则:新增操作只需添加新的访问者类,无需修改现有对象结构。 ​​2.操作逻辑集中管理​​&am…

HashTable,HashMap,ConcurrentHashMap之间的区别

文章目录 线程安全方面性能方面总结 线程安全方面 HashMap线程不安全,HashMap的方法没有进行同步,多个线程同时访问HashMap,并至少有一个线程修改了其内容,则必须手动同步。 HashTable是线程安全的,在HashMap的基础上…

LeetCode.225. 用队列实现栈

用队列实现栈 题目解题思路1. push2. pop3. empty CodeQueue.hQueue.cStack.c 题目 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现…

LVGL AnalogClock控件和Dclock控件详解

LVGL AnalogClock控件和Dclock控件详解 一、AnalogClock控件详解1. 概述2. 创建模拟时钟2.1 函数2.2 参数2.3 返回值 3. 设置时间3.1 函数3.2 参数 4. 获取时间4.1 函数4.2 参数 5. 设置样式5.1 常用样式属性5.2 示例代码 6. 更新时间6.1 定时器回调示例6.2 创建定时器 7. 示例…

【C++初学】课后作业汇总复习(七) 指针-深浅copy

1、 HugeInt类:构造、、cout Description: 32位整数的计算机可以表示整数的范围近似为-20亿到+20亿。在这个范围内操作一般不会出现问题,但是有的应用程序可能需要使用超出上述范围的整数。C可以满足这个需求,创建功能强大的新的…

探索加密期权波动率交易的系统化实践——动态对冲工具使用

Trading Volatility – What Are My Options? 在本文中,我们将介绍一些如何交易资产波动性(而非资产价格)的示例。为了帮助理解,我们将使用 Deribit 上提供的几种不同产品,包括但不限于期权。我们将尽可能消除对标的价…

方案精读:51页 财政数据信息资源目录数据标准存储及大数据资产化规划方案【附全文阅读】

该方案聚焦财政数据信息资源管理,适用于财政部门工作人员、数据管理与分析人员以及关注财政大数据应用的相关人士。 方案旨在构建财政数据资源目录,推动大数据在财政领域的应用与落地。整体规划上,以 “金财工程” 应用支撑平台为基础,建立省、市、县三级目录体系,遵循相关…

开源实时语音交互大模型Ultravox-cn

一款为实时语音交互设计的快速多模态LLM 概述 Ultravox是一种新型的多模态LLM,能够理解文本和人类语音,无需单独的自动语音识别(ASR)阶段。基于AudioLM、SeamlessM4T、Gazelle、SpeechGPT等研究,Ultravox能够将任何…

基于web的民宿信息系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息时代的来临,民宿过去的民宿信息方式的缺点逐渐暴露,对过去的民宿信息的缺点进行分析,采取计算机方式构建民宿信息系统。本文通过阅读相关文献,研究国内外相关技术,提出了一种民宿信息管理、民宿信息管理…

04-微服务 面试题-mk

文章目录 1.Spring Cloud 常见的组件有哪些?2.服务注册和发现是什么意思?(Spring Cloud 如何实现服务注册发现)3.Nacos配置中心热加载实现原理及关键技术4.OpenFeign在微服务中的远程服务调用工作流程5.你们项目负载均衡如何实现的 ?6.什么是服务雪崩,怎么解决这个问题?…

【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析

文件系统的魔法:让计算机理解并存储你的数据 一. 文件系统1.1 块1.2 分区1.3 inode(索引节点) 二. ext2文件系统2.1 认识文件系统2.2 Block Group (块组)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 块组内部结构2.3.1 超级块(Super Bloc…

C++STL——容器-list(含模拟实现,即底层原理)(含迭代器失效问题)(所有你不理解的问题,这里都有解答,最详细)

目录 1.迭代器的分类 2.list的使用 2.1 list的构造 2.2 list iterator 2.3 list capacity 2.4 list element access ​编辑 2.5 list modifiers ​编辑2.5.1 list插入和删除 2.5.2 insert /erase 2.5.3 resize/swap/clear ​编辑 2.6 list的一些其他接口…

计算机组成原理笔记(十五)——3.5指令系统的发展

不同类型的计算机有各具特色的指令系统,由于计算机的性能、机器结构和使用环境不同,指令系统的差异也是很大的。 3.5.1 x86架构的扩展指令集 x86架构的扩展指令集是为了增强处理器在多媒体、三维图形、并行计算等领域的性能而设计的。这些扩展指令集通…