DemoGen:用于数据高效视觉运动策略学习的合成演示生成
25年2月来自清华、上海姚期智研究院和上海AI实验室的论文“DemoGen: Synthetic Demonstration Generation for Data-Efficient Visuomotor Policy Learning”。
视觉运动策略在机器人操控中展现出巨大潜力,但通常需要大量人工采集的数据才能有效执行。驱动高数据需求的一个关键因素,是其有限的空间泛化能力,这需要跨不同物体配置收集大量数据。本研究提出 DemoGen,一种低成本、完全合成的自动演示生成方法。DemoGen 每个任务仅使用一个人工采集的演示,通过将演示的动作轨迹调整到新的物体配置来生成空间增强的演示。通过利用 3D 点云作为模态并通过 3D 编辑重新排列场景中的主体来合成视觉观测。经验表明,DemoGen 显著提升各种现实世界操控任务的策略性能,即使在涉及可变形体、灵巧手末端执行器和双手平台的挑战性场景中也表现出其适用性。此外,DemoGen 可以扩展以实现额外的分布外(OOD)能力,包括抗干扰和避障。
视觉运动策略学习已在机器人操控任务中展现出卓越的能力 [7, 61, 16, 59],但它通常需要大量人工收集的数据。最先进的方法通常需要数十到数百次演示才能在复杂任务上取得一定程度的成功,
例如在披萨上涂抹酱汁 [7] 或用灵巧的手制作卷饼 [59]。更复杂、更长远的任务可能需要数千次演示 [62]。
导致这些方法数据密集型特性的一个关键因素,是其有限的空间泛化能力 [41, 43]。实证研究表明,即使与预训练或 3D 视觉编码器 [33, 39, 34, 59] 结合使用,视觉运动策略 [7] 也表现出有限的空间容量,通常局限于与演示的物体配置相邻的区域。这种限制需要反复收集重定位物体的数据,直到演示的配置充分覆盖整个桌面工作空间。这就产生了一个悖论:虽然实现灵巧操作的关键动作集中在一小部分接触丰富的片段中,但人类的大量精力却花在了教机器人接近自由空间中的物体上。
减少重复人工劳动的一个潜在解决方案,是用自动演示生成来取代繁琐的重定位和重新收集过程。MimicGen [32] 及其后续扩展 [20, 18, 22] 等最新进展提出,通过基于物体交互对演示轨迹进行分段来生成演示。然后,这些以物体为中心的片段被转换并插值到适合所需空间增强物体配置的执行规划中。之后,生成的规划通过机器人上的开环部署(称为机器人上部署)来执行,以验证其正确性并同时捕获策略训练所需的视觉观察结果。
尽管 MimicGen 式策略在模拟环境中取得成功,但将其应用于现实环境却受到高昂的机器人部署成本的阻碍,其成本几乎与收集原始演示的成本相当。另一种方法是通过模拟-到-现实的迁移进行部署 [36, 44, 56],尽管弥合模拟到现实的差距仍然是机器人技术领域的一项重大挑战。
本研究介绍 DemoGen,这是一个数据生成系统,可以无缝地接入模拟和物理世界中的策略学习工作流程中。如图所示:
空间有效范围可视化
空间泛化,是指策略执行涉及训练期间未见过物体任务的能力。为了直观地理解空间泛化,将视觉运动策略的空间有效范围与演示数据的空间分布之间的关系可视化。
任务。评估改编自 MetaWorld [54] 基准的“Button-Large”任务,其中机器人接近一个按钮并按下。物体随机化范围修改为桌面工作空间上 30cm × 40cm = 1200cm² 的区域,覆盖末端执行器的大部分可触及空间。注意到即使按下动作没有精确击中按钮中心,按钮的尺寸也较大,因此还研究一个对精度要求更高的变型“Button-Small”,其中按钮尺寸缩小 4 倍。
策略。采用 3D 扩散策略 (DP3) [59] 作为研究策略,因为基准测试结果表明,3D 观测比 2D 方法具有更出色的空间泛化能力。
评估。为了可视化空间有效范围,在工作空间内沿每个轴均匀采样 21 个点,共得到 441 个不同的按钮位置。演示是使用脚本策略生成的,具有 4 种不同的空间分布,从 single 到 full。在 441 个位置上评估每种配置的性能,从而可以全面评估空间泛化能力。可视化结果如图所示。
主要发现。总体而言,视觉运动策略的空间有效范围与演示中看到的物体配置分布密切相关。具体而言,有效范围可以通过演示物体位置周围区域的并集来近似。因此,为了训练一个能够在整个目标随机化范围内良好泛化的策略,演示必须覆盖整个工作空间,这将导致巨大的数据收集成本。此外,随着任务精度要求的提高,有效范围会缩小到更局部的区域,因此需要进行更多次演示才能充分覆盖整个工作空间。
空间泛化能力基准测试
空间泛化能力的实际表现,体现在有效策略学习所需的演示次数上。在接下来的基准测试中,将探讨演示次数与策略性能之间的关系,以确定多少次演示足以进行有效的训练。
任务。为了抑制策略部署不准确但成功的情况,设计一个精确插钉任务,该任务在拾取和插入阶段均强制执行 1 厘米的严格容错,要求达到毫米级精度。插钉和插座在40厘米×20厘米的区域内随机分布,从而产生40厘米×40厘米=1600平方厘米的有效工作空间。为了检验目标随机化的影响,还考虑半工作空间(其中两个目标的随机化范围减半)和固定设置(其中目标位置保持不变)。
策略。除了从头训练的扩散策略 (DP) [7] 和 3D 扩散策略 (DP3) [59] 之外,还探索预训练视觉表征在增强空间泛化方面的潜力。具体而言,将 DP 中从头训练的 ResNet [19] 编码器替换为预训练的编码器,包括 R3M [33]、DINOv2 [34] 和 CLIP [39]。
演示。将演示的数量从 25 到 400 不等。目标配置是从比评估工作区略大的范围随机采样的,以避免在工作区边界附近性能下降。
评估。在完整工作区中,将钉子和插座放置在 45 个均匀采样的坐标上,从而产生 2025 种不同的配置用于评估。对于半值设置和固定设置,评估的配置数量分别为 225 和 1。结果如图所示。
主要发现。物体随机化的程度显著影响所需的演示。因此,有效的视觉运动策略评估协议必须包含足够大的工作空间,以提供足够的物体随机化。另一方面,3D 表征和预训练的 2D 视觉编码器都有助于提升空间泛化能力。然而,这些方法均未从根本上解决空间泛化问题。这表明,智体的空间能力并非源于策略本身,而是通过对给定演示中工作空间的广泛遍历而发展起来的。
DemoGen 旨在解决视觉运动策略的海量数据需求与人工采集演示的高昂成本之间的矛盾,它通过少量源演示生成空间增强的观察-动作对。对于动作,DemoGen 将源轨迹解析为以目标为中心的运动和技能片段,并应用基于 TAMP (任务和运动规划)的自适应算法。对于观察,DemoGen 使用分割-和-变换策略高效地合成机器人和目标的点云。
视觉运动策略 π 直接将视觉观察 o 映射到预测动作 a。为了训练这样的策略,必须准备一个包含演示的数据集 D。DemoGen 旨在通过生成基于不同初始目标配置的新演示来增强人工收集的源演示。
源演示的预处理
分割点云观测值。为了提高在实际场景中的实用性,使用单视角 RGBD 相机采集点云。首先对原始点云观测值进行预处理,从背景和桌面裁剪掉多余的点。假设保留的点与被操作物体或机器人的末端执行器相关。然后应用聚类操作 [14] 滤除嘈杂实际观测值中的异常点。随后,使用最远点采样将点云下采样到固定数量的点(例如 512 或 1024),以促进策略学习 [38]。
对于轨迹的第一帧,使用 Grounded SAM [40] 从 RGB 图像中获取被操作物体的分割掩码。然后将这些掩码应用于像素对齐的深度图像,并投影到 3D 点云上,如图所示。
解析源轨迹。根据先前的研究 [32, 18],假设执行轨迹可以解析为一系列以物体为中心的片段。注意到机器人必须首先在自由空间中接近物体,然后才能通过接触进行物体操作,因此每个以物体为中心的片段可以进一步细分为两个阶段:运动阶段和技能阶段。例如,在如图所示的任务中,轨迹分为四个阶段:1) 移向花朵,2) 拿起花朵,3) 将花朵移入花瓶,4) 将花朵插入花瓶。
通过检查物体点云的几何中心和机器人末端执行器之间的距离是否在预定义的阈值内,可以轻松识别与给定物体相关的技能段,如图中的球体所示。两个技能段之间的中间轨迹被归类为运动段。
基于 TAMP 的动作生成
使动作适应新的配置。生成过程首先选择一个目标初始配置 s′_0 = {T’_0O1, T’_0O2, …, T’_0^OK}。在 4 × 4 齐次矩阵表示下,计算目标配置和源配置之间的空间变换。
回想一下,这些动作由机械臂和机械手命令组成。机械手命令定义与物体的交互动作,例如,用夹持器夹住花朵,或者用灵巧的手卷起面团。由于它们不随空间变换而变化,因此无论物体配置如何,a_t^hand 都应保持不变。
相反,机械臂命令,应与物体运动在空间上等变,以便根据改变的配置调整轨迹。具体来说,对于涉及第 k 个目标的运动和技能片段,按照基于 TAMP 的程序调整机械臂命令 AEE [τ_km ]、AEE [τ_k^s ],如图所示。
对于具有灵巧的物体行为技能段,末端执行器与物体之间的空间关系必须保持相对静态。因此,整个技能段会跟随相应的物体进行变换。
对于在自由空间中移动的运动段,目标是将相邻的技能段串联起来。因此,通过运动规划来规划运动阶段的机械臂指令。
对于简单整洁的工作空间,线性插值即可。对于需要避障的复杂环境,采用现成的运动规划方法 [26]。
无故障动作执行。为了确保无需机器人上展开(以过滤失败的轨迹)的合成演示有效性,要求动作执行无故障。与以往[32, 18]依赖操作空间控制器和增量末端执行器位姿控制的研究不同,我们采用逆运动学 (IK) 控制器 [57],并以绝对末端执行器位姿为目标。经验表明,这些调整有助于最大限度地减少复合控制误差,从而有助于成功执行生成的动作。
完全合成观测生成
自适应本体感受状态。观测数据由点云数据和本体感受状态组成。由于本体感受状态与动作具有相同的语义,因此它们应该经历相同的转换。
注:直接用下一个目标姿态动作(即 oˆ_tarm ← aˆ_t+1^arm)替换当前手臂状态可能会影响性能,因为反向运动控制器可能无法始终达到精确的目标姿态。
合成点云观测值。为了合成机器人和物体的空间增强点云,采用一种简单的分割-和-变换策略。除了目标变换之外,合成唯一需要的信息是源演示第一帧中 K 个物体的分割掩码。
对于每个物体,定义 3 个阶段。在待完成(to-do)阶段,物体处于静止状态且不受机器人影响,其点云根据初始物体配置进行变换 (T_oO_k)−1 · T_0^O_k′。在执行(doing)阶段,物体与机器人接触,其点云与末端执行器的点云合并。在完成(done)阶段,物体保持其最终状态。通过参考轨迹级运动和技能段,可以轻松识别这些阶段。
对于机器人的末端执行器,其点云经历与本体感受状态相同的变换,即 (A_tEE)−1·Aˆ_t^EE。假设工作空间被裁剪,可以通过从场景点云中减去待执行和完成阶段的物体点云,来分离执行阶段的机器人点云和物体点云。
此过程的具体示例如图所示。
策略训练与实施细节
选择三维扩散策略 (DP3) [59] 作为用于真实世界和模拟实验的视觉运动策略。在第三部分中,我们将它的性能与二维扩散策略 (DP) [7] 进行实证研究比较。训练与实施细节如下。
- 策略训练细节:为了公平比较,将所有评估设置中按“观察-动作”对计数的总训练步数固定为 2M,这样无论数据集大小如何,训练成本都相同。为了稳定训练过程,使用 AdamW [30] 优化器,并将学习率设置为 1e−4,并进行 500 步预热。
在实际实验中,使用 DBSCAN [14] 聚类算法丢弃异常点,并将点云观测中的点数下采样至 1024。在模拟器中,跳过聚类阶段,将点云下采样至 512 个点。
遵循扩散策略 [7] 论文中的符号,其中 To 表示观测范围,Tp 表示动作预测范围,Ta 表示动作执行范围。在实际实验中,设置 To = 2、Tp = 8、Ta = 5。以 10Hz 的频率运行视觉运动策略。由于 Ta 表示无需重规划即可在机器人上执行的动作步骤,因此范围设置可使闭环重规划延迟为 0.5 秒,足以响应灵巧的重试行为并具有抗干扰能力。在模拟器中,由于任务比较简单,设定To = 2,Tp = 4,Ta = 3。
2)用于扩散策略的预训练编码器:为了替换原始扩散策略架构中从头开始训练的ResNet18 [19]视觉编码器,考虑3个具有代表性的预训练编码器:R3M [33]、DINOv2 [34]和CLIP [39]。R3M采用ResNet [19]架构,并针对机器人特定任务进行预训练。DINOv2和CLIP采用ViT [13]架构,并针对开放世界视觉任务进行预训练。这些编码器在先前的研究[8, 29]中被广泛用于提升策略性能。
相关文章:
DemoGen:用于数据高效视觉运动策略学习的合成演示生成
25年2月来自清华、上海姚期智研究院和上海AI实验室的论文“DemoGen: Synthetic Demonstration Generation for Data-Efficient Visuomotor Policy Learning”。 视觉运动策略在机器人操控中展现出巨大潜力,但通常需要大量人工采集的数据才能有效执行。驱动高数据需…...
影楼精修-高低频磨皮算法解析
注意:本文样例图片为了避免侵权,均使用AIGC生成; 高低频磨皮基础 高低频磨皮是一种常用于人像后期修图的技术,它能在保留皮肤纹理的同时柔化瑕疵,使皮肤看起来更加自然细腻。高低频磨皮的算法原理如下: …...
打造搜索神功:Express 路由中的关键词探查之道
前言 在 Web 开发的江湖,Express 好比一位身怀绝技的武林高手,出手稳准狠,擅长解决各种疑难杂症。今天,我们将与这位高手并肩作战,一探关键词搜索路由的奥义。这不是枯燥的教学,而是一场充满玄机与笑点的江湖奇遇。挥起代码之剑,踏上探索之路,不仅能习得招式,还能在轻…...
kubernetes-使用ceph-csi
kubernetes-使用ceph-csi Kubernetes (简称K8s)和Ceph都是开源的云计算技术,K8s是一个容器编排平台,而Ceph是一个分布式存储系统。将K8s和Ceph集成在一起可以为应用程序提供高可用性和持久性存储。本文主要介绍如何在使用openEul…...
从Shell到域控:内网渗透中定位域控制器的8种核心方法
在内网渗透中,定位域控制器(Domain Controller, DC)是攻防对抗的关键环节。本文结合实战经验与工具技术,总结出8种从Shell快速发现域控主机的方法,涵盖命令探测、网络扫描、日志分析等维度,助你系统…...
FA-YOLO:基于FMDS与AGMF的高效目标检测算法解析
本文《FA-YOLO: Research On Efficient Feature Selection YOLO Improved Algorithm Based On FMDS and AGMF Modules》针对YOLO系列在特征融合与动态调整上的不足,提出两种创新模块:FMDS(细粒度多尺度动态选择模块)和AGMF(自适应门控多分支聚焦融合模块)。论文结构…...
【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-结束和重新开始游戏
结束和重新开始游戏 文章目录 结束和重新开始游戏1、概述2、更新Globals.h3、触发GAME_WON和GAME_LOST事件4、对游戏结束的反应5、重启游戏6、创建新游戏按钮7、完整代码8、总结在本文中,将实现胜负检测并添加重新开始功能以完成游戏循环。 1、概述 在本文中,我们将更新我们…...
OpenAI重返巅峰:o3与o4-mini引领AI推理新时代
引言 2025年4月16日,OpenAI发布了全新的o系列推理模型:o3和o4-mini,这两款模型被官方称为“迎今为止最智能、最强大的大语言模型(LLM)”。它们不仅在AI推理能力上实现了质的飞跃,更首次具备了全面的工具使…...
《软件设计师》复习笔记(12.3)——质量管理、风险管理
目录 一、质量管理 1. 质量定义 2. 质量管理过程 3. 软件质量特性(GB/T 16260-2002) 4. 补充知识 McCall质量模型: 软件评审 软件容错技术 真题示例: 二、风险管理 1. 风险管理的目的: 2. 风险管理流程及内…...
优化自旋锁的实现
在《C11实现一个自旋锁》介绍了分别使用TAS和CAS算法实现自旋锁的方案,以及它们的优缺点。TAS算法虽然实现简单,但是因为每次自旋时都要导致一场内存总线流量风暴,对全局系统影响很大,一般都要对它进行优化,以降低对全…...
项目实战--新闻分类
从antd中拿一个表格 表格 Table - Ant Designhttps://ant-design.antgroup.com/components/table-cn#table-demo-edit-cell使用的是可编辑单元格 实现引入可编辑单元格: import React, { useState, useEffect, useRef, useContext } from react import { Button, …...
人像面部关键点检测
此工作为本人近期做人脸情绪识别,CBAM模块前是否能加人脸关键点检测而做的尝试。由于创新点不是在于检测点的标注,而是CBAM的改进,因此,只是借用了现成库Dilb与cv2进行。 首先,下载人脸关键点预测模型:Index of /file…...
OpenVINO怎么用
目录 OpenVINO 简介 主要组件 安装 OpenVINO 使用 OpenVINO 的基本步骤 OpenVINO 简介 OpenVINO(Open Visual Inference and Neural Network Optimization)是英特尔推出的一个开源工具包,旨在帮助开发者在英特尔硬件平台上高效部署深度学…...
写论文时降AIGC和降重的一些注意事项
‘ 写一些研究成果,英文不是很好,用有道翻译过来句子很简单,句型很单一。那么你会考虑用ai吗? 如果语句太正式,高级,会被误判成aigc ,慎重选择ai润色。 有的话就算没有用ai生成,但…...
SpringBoot学习(properties、yml(主流)、yaml格式配置文件)(读取yml配置文件的3种方式)(详解)
目录 一、SpringBoot配置文件详解。 1.1配置文件简介。 1.2配置文件分类。(3种配置文件格式) <1>application.properties(properties格式)。 <2>application.yml(yml格式)。 <3>applicat…...
STM32单片机C语言
1、stdint.h简介 stdint.h 是从 C99 中引进的一个标准 C 库的文件 路径:D:\MDK5.34\ARM\ARMCC\include 大家都统一使用一样的标准,这样方便移植 配置MDK支持C99 位操作 如何给寄存器某个值赋值 举个例子:uint32_t temp 0; 宏定义 带参…...
前端为什么需要单元测试?
一. 前言 对于现在的前端工程,一个标准完整的项目,通常情况单元测试是非常必要的。但很多时候我们只是完成了项目而忽略了项目测试。我认为其中一个很大的原因是很多人对单元测试认知不够,因此我写了这篇文章,一方面期望通过这篇…...
QT 文件和文件夹操作
文件操作 1. 文件读写 QFile - 基本文件操作 // 只写模式创建文件(如果文件已存在会清空内容) file.open(QIODevice::WriteOnly);// 读写模式创建文件 file.open(QIODevice::ReadWrite);// 追加模式(如果文件不存在则创建) fil…...
AIP目录
专注于开发灵活API的设计文档。 AIP是总结了谷歌API设计决策的设计文档,它也为其他人提供了用文档记录API设计规则和实践的框架和系统。 基础1AIP目的和指南2AIP编号规则3AIP版本管理200先例8AIP风格与指导9术语表流程100API设计评审常见问题205Beta版本发布前置条…...
Function Calling的时序图(含示例)
🧍 用户: 发起请求,输入 prompt(比如:“请告诉我北京的天气”)。 🟪 应用: 将用户输入的 prompt 和函数定义(包括函数名、参数结构等)一起发给 OpenAI。 …...
基于尚硅谷FreeRTOS视频笔记——6—滴答时钟—上下文切换
FreeRTOS滴答 FreeRTOS需要有一个时钟参照,并且这个时钟不会被轻易打断,所以最好选择systick 为什么需要时间参照 就是在高优先级任务进入阻塞态后,也可以理解为进入delay()函数后,需要有一个时间参照&…...
Playwright框架入门
Playwright爬虫框架入门 Playwright介绍 playwright官方文档 Playwright是一个用于自动化浏览器操作的开源工具,由Microsoft开发和维护,支持多种浏览器和多种编程语言,可以用于测试、爬虫、自动化任务等场景。 Playwright是基于WebSocket…...
针对渲染圆柱体出现“麻花“状问题解决
圆柱体渲染结果,在侧面有麻花状条纹,边缘不够硬朗,上下的圆看起来不够平,很明显,是法向量导致的。 原始模型 渲染结果 计算点的法向量采用简单的平均法…...
手撕数据结构算法OJ——栈和队列
文章目录 一、前言二、手撕OJ2.1有效的括号2.2用队列实现栈2.2.1初始化2.2.2入栈2.2.3出栈2.2.4取栈顶2.2.5判空2.2.6销毁2.2.7整体代码 2.3用栈实现队列2.3.1初始化2.3.2入队2.3.3出队2.3.4取队头2.3.5判空2.3.6销毁2.3.7整体代码 四、总结 一、前言 兄弟们,今天的…...
基础知识-指针
1、指针的基本概念 1.1 什么是指针 1.1.1 指针的定义 指针是一种特殊的变量,与普通变量存储具体数据不同,它存储的是内存地址。在计算机程序运行时,数据都被存放在内存中,而指针就像是指向这些数据存放位置的 “路标”。通过指针…...
Thymeleaf简介
在Java中,模板引擎可以帮助生成文本输出。常见的模板引擎包括FreeMarker、Velocity和Thymeleaf等 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎。 Thymeleaf 和 JSP比较: Thymeleaf目前所作的工作和JSP有相似之处,Thyme…...
ifconfig -bash: ifconfig: command not found
Ubuntu系统安装完成想查看其ip 报错ifconfig -bash: ifconfig: command not found 解决方法 sudo apt update sudo apt install net-tools ip查找成功...
MCP协议量子加密实践:基于QKD的下一代安全通信(2025深度解析版)
一、量子计算威胁的范式转移与MCP协议改造必要性 1.1 传统加密体系的崩塌时间表 根据IBM 2025年量子威胁评估报告,当量子计算机达到4000个逻辑量子比特时(预计2028年实现),现有非对称加密体系将在72小时内被完全破解。工业物联网…...
STM32 基本GPIO控制
目录 GPIO基础知识 编辑IO八种工作模式 固件库实现LED点灯 蜂鸣器 按键基础知识 编辑继电器 震动传感器 433M无线模块 GPIO基础知识 GPIO(General-Purpose input/output,通用输入/输出接口) 用于感知外部信号(输入模式)和控制外部设备&…...
【天外之物】叉乘(向量积)的行列式表示方法
叉乘(向量积)的行列式表示方法如下: 步骤说明: 构造33矩阵: 将三维向量叉乘转换为行列式的形式,需构造一个包含单位向量 i , j , k \mathbf{i}, \mathbf{j}, \mathbf{k} i,j,k 和原向量分量的矩阵&#x…...
北京SMT贴片厂精密制造关键工艺
内容概要 随着电子设备小型化与功能集成化需求日益提升,北京SMT贴片厂在精密制造领域持续突破工艺瓶颈。本文以高密度PCB板贴片全流程为核心,系统梳理从锡膏印刷、元件贴装到回流焊接的关键技术节点,并结合自动化检测与缺陷预防方案…...
服务器架构:SMP、NUMA、MPP及Docker优化指南
文章目录 引言 一、服务器架构基础1. SMP(对称多处理,Symmetric Multiprocessing)2. NUMA(非统一内存访问,Non-Uniform Memory Access)3. MPP(大规模并行处理,Massively Parallel Pr…...
Datawhale春训营赛题分析和总结
1.Datawhale春训营任务一 借助这个云平台,支持类似于这个anaconda相关的交互式的操作,第一个任务就是跑通这个baseline,然后注册账号之后送了对应的相关算力,跑通这个之后需要进行打卡,跑通其实是没问题不大的&#x…...
一键模仿图片风格,图生生APP,实现随时随地“生图自由“
一、什么是"图片模仿"功能? "图片模仿"是图生生AI的功能之一,利用先进的AI技术,分析上传的图片风格、色调、构图等元素,快速生成具有相同风格的图片。无论是产品展示、广告海报还是社交媒体配图,…...
C++——C++11常用语法总结
C11标准由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于C11标准…...
C++17 新特性简解
C17 新特性简解 一、核心语言特性 1. 结构化绑定(Structured Bindings) 用途:解构复合类型(如元组、结构体)为独立变量 示例: #include <iostream> #include <tuple>int main() {// 解构 st…...
【失败】Gnome将默认终端设置为 Kitty
起因 一会儿gnome-terminal一会儿kitty终端,实在是受不了,决定取缔默认的gnome-terminal。 过程 在 Ubuntu 或 Debian 系统上: 确保 Kitty 已经安装。如果未安装,可以在终端中运行命令sudo apt install kitty -y进行安装。 使用系…...
【Easylive】微服务架构在系统中的优缺点的具体体现
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 在线视频分享系统项目简介 系统概述 该项目是一个基于SpringCloud微服务架构的在线视频分享系统,主要功能包括: • 用户自主发布视频 • 后台视频审核 • 用户互动…...
锁(Mutex)、信号量(Semaphore)与条件量(Condition Variable)
一、同步机制的核心意义 在多线程/多进程编程中,当多个执行流共享资源(如变量、内存、文件)时,可能因操作顺序不确定导致数据竞争(Data Race)。同步机制的作用是: 保证原子性:确保…...
使用pnpm第一次运行项目报错 ERR_PNPM_NO_PKG_MANIFEST No package.json found in E:\
开始用unibestpnpm写一个小程序 运行pnpm init报错 如标题所示没有package.json这个文件 博主犯了一个很愚蠢的错误。。 准备方案手动创建一个json文件 此时才发现没到根目录下,创建了一个项目之后就没有切入文件夹里。 切入根目录再下载就成功啦...
前沿篇|CAN XL 与 TSN 深度解读
引言 1. CAN XL 标准演进与设计目标 2. CAN XL 物理层与帧格式详解 3. 时间敏感网络 (TSN) 关键技术解析 4. CAN XL + TSN 在自动驾驶领域的典型应用...
从零开始学A2A一:A2A 协议的高级应用与优化
A2A 协议的高级应用与优化 学习目标 掌握 A2A 高级功能 理解多用户支持机制掌握长期任务管理方法学习服务性能优化技巧 理解与 MCP 的差异 分析多智能体场景下的优势掌握不同场景的选择策略 第一部分:多用户支持机制 1. 用户隔离架构 #mermaid-svg-Awx5UVYtqOF…...
追赶地球变化的“快镜头“:遥感时间分辨率的奥秘
在地球表面,万物的生长、兴衰和变迁,如同一部永不停歇的电影。而科学家们想要看清每一帧画面,就必须依赖遥感卫星这个"超级摄影师"。今天,我们就来聊聊遥感领域里一个关键的维度——时间分辨率。 想象一下,如…...
轻量还是全量?Kubernetes ConfigMap 与专业配置中心的抉择
文章目录 简介什么是 ConfigMapConfigMap 的核心能力配置存储与注入动态更新与 Kubernetes 原生生态深度集成 ConfigMap 的固有局限专业配置中心对比选型建议结语 简介 在现代微服务架构中,集中式配置管理是保证应用可维护性、可扩展性和安全性的关键环节。Kuberne…...
mybatis plus打印sql日志到指定目录
1、mybatis plus打印sql日志 参考文档:mybatis plus打印sql日志_mybatisplus日志打印-CSDN博客 2、修改 修改InfoLevelLogger Override public void debug(String s) {// 修改这里logger.info(s);log.debug(s); } 增加:log.debug(s); 修改logback.x…...
CUDAfy的使用
此文章是对一篇使用文档的翻译总结 文档地址 https://www.doczj.com/doc/0f2570173.html CUDAfy使用步骤 1. 环境准备 硬件要求:支持CUDA的NVIDIA显卡(如GTX系列)。软件安装: 安装最新版NVIDIA驱动。下载并安…...
DeepSeek 部署中的常见问题及解决方案
DeepSeek(深度求索)大模型部署过程中常见问题的系统性解决方案,涵盖环境配置、模型加载、性能优化、安全防护及企业级部署等核心场景,结合官方文档与社区实践提供可落地的操作指南: 一、环境配置与依赖问题 1. 操作系统与硬件兼容性 问题表现:部署失败提示驱动不兼容或…...
【AI提示词】儿童看护员
提示说明 儿童看护员旨在帮助用户构建一个既专业又富有爱心的儿童看护员角色,以满足儿童在成长过程中的各种需求。 提示词 # 角色 儿童看护员## 注意 1. 儿童看护员应具备亲和力和耐心,以确保与儿童的良好互动。 2. 专家设计应关注儿童的安全、健康和…...
深入解析 Python 中的装饰器 —— 从基础到实战
1. 装饰器基础 1.1 什么是装饰器? 装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能。装饰器的返回值也是一个函数对象。 1.2 语法糖: 符号 Python 提供了 符号作为装饰器的语法糖,…...
学习海康VisionMaster之中线查找
一:进一步学习了 今天学习下VisionMaster中的中线查找,这个就是字面意思,输入两条直线,输出两条直线的中线 二:开始学习 1:什么是中线查找?今天这个比较简单,其实这个模块算是一个几…...