【机器人】Graspness 端到端 抓取点估计 | 论文解读
在复杂场景中实现抓取检测,Graspness是一种端到端的方法;
输入点云数据,输出抓取角度、抓取深度、夹具宽度等信息。
开源地址:GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness.
论文地址:Graspness Discovery in Clutters for Fast and Accurate Grasp Detection
将通用的抓取位姿检测,分解为两个阶段(two-stage)问题:
- where阶段:从单视角点云中找到高可抓取性(high graspability)的区域,即识别出场景中值得关注的局部空间点。
- how阶段:在确定了待抓取区域的基础上,为这些点确定具体的抓取参数,包括抓取器相对于物体的入射角度、绕物体表面的平面内旋转角度、抓取深度、抓取分数(置信度)以及抓取器张开的宽度等。
该两阶段划分将复杂的抓取检测过程拆分:首先关注 “抓哪儿”(区域选择),然后再精确计算 “怎么抓”。
目录
1、研究背景与动机
2、改进思路
3、模型框架
第一阶段:可抓取性模型
第二阶段:抓取操作模型
特征图维度变化总结
4、细节设计
4.1 抓取性度量的引入
4.2 单物体抓取性得分的计算公式
4.3 复杂抓取性得分的计算公式
4.4 t-SNE数据降维可视化
4.5 最远点采样(FPS)
4.6 圆柱分组(Cylinder-Grouping)
4.7 抓取参数估计
4.8 多任务损失
五、实验测试
1、研究背景与动机
对于机器人操作而言,抓取是一个关键但具有挑战性的任务。
在传统的6DoF抓取检测方法中,一般会对场景中的所有点进行均等处理(如在点云中均匀采样抓取位姿候选),试图寻找最优的抓取姿势。
然而,这种“不加区分”的处理方式会带来两个明显的问题:
- 速度问题:在一个复杂或拥挤(cluttered)的场景中,不区分优先级地处理大量候选抓取点位,将导致计算成本过高,降低推理速度。
- 精度问题:忽视场景中不同区域的质量差异会使得搜索过程变得无谓冗余,影响整体的抓取检测准确性。
现有6-DoF抓取姿态检测方法主要着力于“how阶段”,即专注于提高最终抓取参数预测的质量,而对“where阶段”(初步过滤场景中那些明显不可能抓取的区域)关注不足。
已有方法可分为两类:
- 采样-评估范式(sampling-evaluation):这类方法在场景中均匀地随机采样大量抓取候选点,然后用模型对这些点逐一评估抓取质量。
- 端到端方法(end-to-end):这类方法采用端到端神经网络,从输入的点云直接预测整个场景的抓取参数。有的在网络输入前对点云进行下采样,有的在网络前向传播过程中进行采样。但本质上仍然没有显式区分出“值得关注的点”(可抓取点)和“不值得关注的点”。
然而,无论是上述哪一类方法,它们并没有显式地在第一阶段对场景进行有效过滤,都采用了均匀分布的候选点。
这意味着不管场景中是否存在大量不可抓取区域,这些方法都会耗费大量资源在不必要的点上,从而导致计算冗余。
2、改进思路
作者指出,均匀采样策略在实际中存在很大缺点。3D空间中无数点存在,能够真正被稳定抓取(可抓取区域)的点只是很小一部分。
关键点1:在通过场景的局部几何特征,来区分哪些区域更具有可抓性。
- 在尝试实际抓取参数计算之前,先通过对局部空间点的几何结构分析,为其分配一个“可抓取程度”的分数。
- 这种先行的度量可以让算法在早期对整个场景进行过滤。
关键点2:从认知科学视角审视,人类在实际抓取任务中,会将视觉注意力偏向于那些最易于抓取的区域
- 在实际行动(抓取参数预测)之前,先通过感知偏向将注意力分配到高可抓取区域
- 在机器人抓取任务中类比这种注意力分配机制
整体模型框架,是一个两阶段-端到端网络,其流程如下:
- 输入完整的场景点云。
- 第一阶段利用可抓取评分筛选出高抓取性点(where阶段),舍弃低分点,从而减少后续计算量。
- 第二阶段对所选择的高分点进一步预测完整的抓取参数(how阶段)。
3、模型框架
整体模型框架,是一个两阶段-端到端网络,如下图所示
- 第一阶段:可抓取性模型(上图部分)
- 第二阶段:抓取操作模型(下图部分)
第一阶段:可抓取性模型
-
输入点云:接收一个点云作为输入,维度Nx3,其中包含场景的3D坐标信息。
-
点编码器-解码器:点云通过一个点编码器-解码器结构,维度Nx(3+C),该结构输出每个点的C维特征向量。
-
点级抓取性景观:通过一个多层感知机MLP,生成点级抓取性得分,这些得分表示每个点的抓取可能性。
-
抓取可能性高的点:使用最远点采样FPS策略从点级抓取性景观中选择M个种子点,维度Mx(3+C),这些点具有较高的抓取性得分。
-
种子点:选出的种子点用于生成视图级抓取性景观。
-
视图级抓取性景观:通过MLP为每个种子点生成视图级抓取性得分,维度Mx(V+C),这些得分表示在不同视图方向上的抓取可能性.
第二阶段:抓取操作模型
-
选择最佳的抓取视图:结合了“抓取位置可能性高的点”和“抓取方向信息”,选择最佳的抓取视图。输入维度是维度Mx(3+C)和Mx(V+C);其中V是其是也是3;形成的维度Mx(3+3+C)
-
圆柱分组:种子点被分组到圆柱形区域中,这些区域由种子点的位置和选定的视图方向确定。每个圆柱组包含 K个点,特征维度为 K×(3+C)
-
圆柱组:每个圆柱形区域中的点被采样并用于抓取参数的估计。
-
MLP处理:每个圆柱组的点通过MLP处理,生成抓取候选点的特征向量,维度为 M×C′,其中 C′是MLP输出的特征维度。
-
角度-深度搜索:在每个圆柱组中,通过搜索不同的角度和深度来优化抓取姿态,输出抓取姿态的得分和夹持器宽度,维度为 M×(A×D×2),其中 A是角度的数量,D 是深度的数量,2代表得分和宽度。
-
输出抓取姿态:对于每个圆柱组,网络输出M个抓取姿态,包括抓取得分和夹持器宽度。
特征图维度变化总结
- 输入到编码器-解码器:N×3到 N×(3+C)
- 点级抓取性得分:N×(3+C) 到 M×(3+C)
- 视图级抓取性得分:M×(3+C) 到 M×(V+C)
- 视图选择:Mx(3+C)和Mx(V+C),到Mx(3+3+C)
- 圆柱分组:M×(3+3+C) 到 K×(3+C)
- 抓取候选点特征:K×(3+C) 到 M×C′
- 输出抓取姿态:M×C′到 M×(A×D×2)
4、细节设计
4.1 抓取性度量的引入
引入了点级抓取性和视图级抓取性,两种抓取性度量:
- 点级抓取性(Point-wise Graspness):表示为Sp={
∣
⊂[0,1],i=1,...,N},其中[0,1][0,1]表示每个点的抓取性得分范围。
- 视图级抓取性(View-wise Graspness):表示为Sv={
∣
⊂
,i=1,...,N},其中
表示在V维空间中的抓取性得分。
抓取性度量的基本符号
- 点集P={
∣i=1,...,N},表示场景中的所有点。
- 视图方向集V={
∣j=1,...,V},表示在球面空间中均匀分布的视图方向。
4.2 单物体抓取性得分的计算公式
点级抓取性得分(Point-wise Graspness Score)
- 其中,1(g)是一个指示函数,如果抓取 g成功则为1,否则为0。
是以点
为中心,视图
下所有可行抓取姿态的集合。
- 一个点在所有可能的抓取方向上成功抓取的平均概率。
- 得分越高,表示该点在更多方向上具有成功的抓取潜力,因此更适合作为抓取点。
视图级抓取性得分(View-wise Graspness Score)
- 是用于评估在特定视图方向上抓取成功可能性的量化指标
- 帮助于机器人在复杂环境中快速识别出哪些方向更有可能成为成功的抓取方向
4.3 复杂抓取性得分的计算公式
在复杂场景中,抓取性不仅取决于点的几何特性,还受到场景中其他物体的影响。
碰撞检测用于评估在特定抓取姿态下,夹持器是否会与场景中的其他物体发生碰撞。
- 作者提出了一种方法,通过重建场景并进行碰撞检测来处理碰撞问题。
- 每个抓取候选点
都会经过碰撞检测,并根据结果更新抓取性得分。
- 使用物体的3D模型和相应的6D姿态重建场景,对每个抓取候选点进行碰撞检测,并分配碰撞标签
其中,是抓取质量得分,c是一个阈值,用于过滤不成功的抓取。
- 重建场景:使用物体的3D模型和相应的6D姿态(位置和方向)来重建场景。
- 评估抓取候选点:对每个抓取候选点
进行碰撞检测,确定它是否与场景中的其他物体发生碰撞。
- 更新抓取性得分:根据碰撞检测的结果更新抓取性得分。如果抓取候选点与场景中的其他物体发生碰撞,其抓取性得分将被降低。
- 正负样本的选择:作者将抓取性得分高于0.3的点视为正样本,而抓取性得分低于0.1的点则作为同样数量的负样本。
4.4 t-SNE数据降维可视化
利用t-SNE(t-distributed Stochastic Neighbor Embedding)方法对GraspNet-1Billion数据集中所有场景的训练集和测试集进行了局部几何特征的可视化。
- t-SNE是一种用于高维数据降维的技术,它能够将高维空间中相似的点映射到低维空间中相近的位置,从而便于观察数据的分布情况。
- 作者观察到不同抓取性得分的区域在几何上是相当可区分的。
- 这意味着高抓取性得分的区域与低抓取性得分的区域在局部几何特征上存在明显差异。这些观察结果证明了抓取性度量是合理的
4.5 最远点采样(FPS)
为了最大化种子点之间的距离,从而确保采样点在空间上尽可能分散,采用最远点采样策略。
这个过程开始于随机选择一个种子点,然后迭代选择距离已选种子点集合最远的点作为新的种子点。
这个过程重复进行,直到选择了足够数量的种子点。
4.6 圆柱分组(Cylinder-Grouping)
- 种子点-视图对:首先,根据种子点和视图向量确定圆柱空间的位置和方向。
- 分组和采样:对于每对种子点和视图,使用固定高度和半径的圆柱体从种子点中分组并采样点。这些点将用于抓取参数的估计。
4.7 抓取参数估计
- 坐标归一化:将圆柱体内的点坐标按圆柱半径归一化,并与通过抓取性FPS和抓取性PVS输出的特征向量拼接。
- 特征向量:分组后的点集被称为抓取候选点,其大小为 M×K×(3+C),其中 M是种子点的数量,K是每个分组中采样的点数,C是特征向量的维度。
4.8 多任务损失
- 级联抓取性模型和抓取操作模型同时训练,
- 使用多任务损失函数,包括物体分类损失、点级抓取性、视图级抓取性、抓取得分和夹持器宽度的回归损失。
五、实验测试
- 基准数据集 GraspNet-1Billion:这是一个大规模的数据集,用于抓取姿态检测,包含190个场景,每个场景有256个不同视角的视图,由两个相机(RealSense/Kinect)捕获。
- 点云下采样:在输入网络之前,点云通过体素网格下采样,体素大小为0.005米,仅包含相机坐标系中的XYZ信息。
- 数据增强:在训练过程中,通过随机翻转YZ平面,和围绕Z轴随机旋转±30°来增强输入云。
- 抓取性模型:对于GraspNet-1Billion中的场景,为每个点密集标记300个不同视图和每个视图48个抓取的质量得分。
Graspness的方法,比GraspNet方法高出接近40个点,巨大的涨幅。
看看不同采用点的方法
分析使用可抓取最远点采样(Graspable FPS)与其他采样方法(如随机采样、普通FPS)对模型性能的影响
看一下模型效果
分享完成~
相关文章:
【机器人】Graspness 端到端 抓取点估计 | 论文解读
在复杂场景中实现抓取检测,Graspness是一种端到端的方法; 输入点云数据,输出抓取角度、抓取深度、夹具宽度等信息。 开源地址:GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness. 论文地…...
服务器Docker OOM RSS高问题排查思路
优质博文:IT-BLOG-CN 防走弯路为防止走弯路,强烈建议先仔细阅读以下加粗内容: 如果你的应用是因为公司最近降成本调小实例物理内存才出现docker oom,而之前从来没有出现过,那么大概率是堆内存太大导致,这种…...
动态导出word文件支持转pdf
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、功能说明二、使用步骤1.controller2.工具类 DocumentUtil 导出样式 前言 提示:这里可以添加本文要记录的大概内容: 例如ÿ…...
【文档搜索引擎】在内存中构造出索引结构(下)
文章目录 4.保存到磁盘中为什么要保存在磁盘中怎么保存操作步骤1. 前期准备2. 主要操作 5. 将磁盘中的数据加载到内存中Parser 类完整源码Index 类完整源码 4.保存到磁盘中 为什么要保存在磁盘中 索引本来是存储在内存中的,为什么要将其保存在硬盘中? …...
旅游资源系统|Java|SSM|VUE| 前后端分离
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...
如何用细节提升用户体验?
前端给用户反馈是提升用户体验的重要部分,根据场景选择不同的方式可以有效地提升产品的易用性和用户满意度。以下是常见的方法: 1. 视觉反馈 用户执行了某些操作后,需要即时确认操作结果。例如:按钮点击、数据提交、页面加载等。…...
容器设计模式:Sidecar
文章目录 容器设计模式:Sidecar 模式1. 什么是 Sidecar 模式?2. Sidecar 模式的原理2.1 工作机制2.2 常见用途 3. Sidecar 模式示例示例:日志收集 4. Sidecar 模式的架构图图例: 5. Sidecar 模式的优点6. Sidecar 模式的局限性7. …...
深入剖析MyBatis的架构原理
架构设计 简要画出 MyBatis 的架构图 >> Mybatis 的功能架构分为哪三层? API 接口层 提供给外部使用的接口 API,开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。MyBatis 和数据库的…...
深入C语言文件操作:从库函数到系统调用
引言 文件操作是编程中不可或缺的一部分,尤其在C语言中,文件操作不仅是处理数据的基本手段,也是连接程序与外部世界的重要桥梁。C语言提供了丰富的库函数来处理文件,如 fopen、fclose、fread、fwrite 等。然而,这些库…...
【Linux】shell脚本二
2、接收用户的参数 shell脚本已经内设了用于接收用户输入参数的变量,变量之间可以使用空格隔开。 如:./test.sh one two three four $0:对应的是当前shell脚本程序的名称,即test.sh$#:对应的是总共有几个参数&#…...
从万维网到人工智能:改变生活的11项技术里程碑
1984 年 1 月 24 日,苹果公司推出了 Macintosh 128K,从此永远改变了个人电脑的面貌。 史蒂夫・乔布斯(Steve Jobs)这款小巧且用户友好的电脑向全世界引入了图形用户界面,标志着个人技术发展历程中的一个关键时刻。 从…...
Hyperledger Fabric 2.x 环境搭建
Hyperledger Fabric 是一个开源的企业级许可分布式账本技术(Distributed Ledger Technology,DLT)平台,专为在企业环境中使用而设计,与其他流行的分布式账本或区块链平台相比,它有一些主要的区别。 环境准备…...
【Maven】自定义Maven插件
场景: 1、自定义一个插件目标 timer,用于显示当前日期时间。 2、将 timer 绑定到 validate 阶段。 调研 1、maven-clean-plugin 下载 maven-clean-plugin 插件的源码,在本地使用 IDEA 打开 可以看到,maven-clean-plugin 插件是…...
修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号
效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改,增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…...
数据结构day3作业
一、完整功能【顺序表】的创建 【seqList.h】 #ifndef __SEQLIST_H__ #define __SEQLIST_H__#include <stdio.h> #include <string.h> #include <stdlib.h>//宏定义,线性表的最大容量 #define MAX 30//类型重定义,表示要存放数据的类…...
pydub AudioSegment实现音频重采样 - python 实现
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...
C++多线程常用方法
在 C 中,线程相关功能主要通过头文件提供的类和函数来实现,以下是一些常用的线程接口方法和使用技巧: std::thread类 构造函数: 可以通过传入可调用对象(如函数指针、函数对象、lambda 表达式等)来创建一…...
【网络安全】Web Timing 和竞争条件攻击:揭开隐藏的攻击面
Web Timing 和竞争条件攻击:揭开隐藏的攻击面 在传统的 Web 应用中,漏洞的发现和利用通常相对容易理解。如果代码存在问题,我们可以通过发送特定输入来强制 Web 应用执行非预期的操作。这种情况下,输入和输出之间往往有直接关系&…...
12月最新编程语言排行榜
“岁末将至,2024年的编程世界又发生了哪些变化?是Python依然稳坐王座,还是有新语言杀出重围?让我们一起看看12月最新编程语言排行榜,寻找未来技术的风向标。” 今年,哪些编程语言成为行业焦点?…...
迭代器模式
迭代器模式 迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种方法来访问一个聚合对象中的各个元素,而又不暴露其内部的表示。这种模式允许你逐个访问对象中的元素,而无需知道其底层的数据结构。迭代器模…...
探秘 WB 实验:AI 助力攻克操作难关
在生物学研究的浩瀚领域中,WB 实验犹如一座关键的灯塔,照亮了我们探索蛋白质世界的道路。今天,就让我们一同深入了解 WB 实验的全貌,以及 AI 如何在其中发挥神奇作用,帮助我们应对实际操作中的重重挑战。 WB 实验&…...
labelimg使用指南
YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训…...
车载终端_智能车载终端定制_农机/出租车/叉车/驾培车载终端MTK方案
车载终端集成了先进的技术和卓越的性能,采用了联发科的高效低功耗ARM处理器,具备八核架构,主频高达2.0GHz,基于12nm制程工艺,不仅性能强劲,而且功耗控制出色。基本配置为4GB内存与64GB存储,用户…...
Unity中Pico实现透视
1.参照Pico官方【透视 | PICO 开发者平台】文档设置。 2.额外的需要将主相机的post processing禁用。...
elk部署与实战案例
**ELK Stack** 是一个非常强大的日志处理和分析平台,由 **Elasticsearch**、**Logstash** 和 **Kibana** 三个组件组成。它被广泛应用于日志收集、搜索、分析和可视化。ELK 可以处理大量数据,并帮助用户从中提取有价值的信息。以下是一个从部署到实际应用…...
Isaac Gym, Sim, Lab
本文仅为个人学习笔记,文章参考请见参考资料部分,主要目的是进行多场景并行仿真测试,笔记中大部分内容都是针对于这个目标。 参考资料 常见问题 — Isaac Lab 文档 https://github.com/isaac-sim/IsaacLab 一. Gym, Sim, Lab 之间的关系 Is…...
活着就好20241217
亲爱的朋友们,大家早上好!🌞 今天是17号,星期二,2024年12月的第十七天,同时也是第50周的第八天,农历甲辰[龙]年十一月初十三日。在这晨光熹微的美好时刻,愿那温暖而明媚的阳光轻轻拂…...
第十六章:IO流 (java.io包中)
一、理解 1. 简单而言:流就是内存与存储设备之间传输数据的通道、管道。 2. 分类: (1) 按方向 ( 以 JVM 虚拟机为参照物 ) 【重点】 输入流:将 < 存储设备 > 中的内容读入到 < 内存 > 中。 输出流:将 < 内…...
Introduction to NoSQL Systems
What is NoSQL NoSQL database are no-tabular非數據表格 database that store data differently than relational tables 其數據的存儲方式與關係型表格不同 Database that provide a mechanism機制 for data storage retrieval 檢索 that is modelled in means other than …...
【JVM】JVM基础教程(四)
上一章:【JVM】JVM基础教程(三)-CSDN博客 目录 自动垃圾回收 方法区的回收 方法区回收条件 手动触发回收 堆回收 如何判断堆上的对象可以回收? 可以给对象引用赋值null,切断引用 引用计数法 循环引用缺点 查…...
前端实现在线预览excel文件
在前端开发中,经常会遇到需要在线预览各种文件的需求。本文将介绍如何使用前端技术实现在线预览 Excel 文件的功能。 一、基于微软office服务的excel预览 获取要预览的 Excel 文件的 URL(例如存储在 OneDrive 或 SharePoint 上的文件)。 使…...
Python 写的《桌面时钟》屏保
原代码: # 日历式时钟 # 导入所需的库 # 作者:Hoye # 日期:2024年12月16日 # 功能:显示当前日期、星期、时间,并显示模拟时钟 import tkinter as tk from tkinter import ttk import time import math import sysdef …...
计算机视觉单阶段实例分割实践指南与综述
概述 原文地址:https://towardsdatascience.com/single-stage-instance-segmentation-a-review-1eeb66e0cc49 实例分割是一项具有挑战性的计算机视觉任务,需要预测对象实例及其每像素分割掩码。这使其成为语义分割和目标检测的混合体。 自 Mask R-CNN …...
Axios结合Typescript 二次封装完整详细场景使用案例
Axios 是一个基于 promise 的 HTTP 客户端,用于浏览器和 node.js。二次封装 Axios 主要是为了统一管理 HTTP 请求,例如设置统一的请求前缀、头部、超时时间,统一处理请求和响应的格式,以及错误处理等。 以下是一个使用 TypeScrip…...
C++面试:HTTP1.0/1.1,HTTP2.0,HTPP3.0的区别
1.你对HTTP1.0/1.1,HTTP2.0,HTPP3.0有什么了解? 答:HTTP1.0: ①属于无连接式,每次发送HTTP请求都需要建立TCP连接。 ②会造成发送时的对头阻塞,当上一个请求没有应答,当前的请求就会…...
使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群
文章目录 使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群Redis 主从架构简介Redis Sentinel 简介配置文件1. 主节点配置 (redis-master.conf)2. 从节点配置 (redis-slave1.conf 和 redis-slave2.conf)redis-slave1.confredis-slave2.conf3. Sentinel 配置 (sentin…...
【Java】4、虚拟机 JVM
目录 Java内存区域详解(重点) JVM垃圾回收详解(重点) 类文件结构详解 类加载过程详解 类加载器详解(重点) 最重要的JVM参数总结 JDK监控和故障处理工具总结 JVM线上问题排查和性能调优案例 参考: JVM 核心技术 32 讲 深入浅出 Java 虚拟机...
Vue3之组合式API详解
Vue 3引入了一种新的API风格——组合式API(Composition API),旨在提升组件的逻辑复用性和可维护性。本文将详细阐述Vue 3中的组合式API,包括其定义、特点、使用场景、优势等,并给出具体的示例代码。 一、定义 组合式…...
Flutter编译Module was compiled with an incompatible version of Kotlin错误解决
文章目录 编译报错如下解决方法修复方案 编译报错如下 e: C:/Users/YUAN/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.9.20/e58b4816ac517e9cc5df1db051120c63d4cde669/kotlin-stdlib-1.9 .20.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module:…...
Uniapp插件如何通过NFC读取多种证卡信息?
nfc读卡uniapp插件,由中软高科进行开发,主要是通过NFC读取居民身份证、港澳台居住证、外国人居住证、护照等证卡的信息。经过多个版本的升级更新,目前性能已趋于稳定,并且读卡速度较之最初版本有了大的提升。 注意事项 测试使用的…...
本地docker镜像改名字
如果你想修改本地 Docker 镜像的名字,可以通过创建该镜像的新标签(tag)来实现。Docker 中没有直接修改镜像名字的命令,但可以通过重新打标签的方式实现类似的效果。以下是具体步骤: 查看当前镜像: docker…...
VS Code 远程连接 SSH 服务器
文章目录 一、安装 Remote - SSH 扩展并连接远程主机二、免密连接远程主机1. 生成 SSH 密钥对2. 将公钥复制到远程服务器3. 配置 SSH 客服端4. 连接测试 随着技术的不断迭代更新,在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器(我曾经也是个 …...
艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型
在现代软件开发领域,效率和可靠性是企业在竞争中取胜的关键。本文将深入探讨 ANA Systems 如何通过引入业界领先的 CI/CD 平台——CircleCI,克服传统开发流程的瓶颈,实现开发运营效率的全面提升。同时,本文还将详细解析 CircleCI …...
vue 上传组件 vxe-upload 实现拖拽调整顺序
vue 上传组件 vxe-upload 实现拖拽调整顺序,通过设置 drag-sort 参数就可以启用拖拽排序功能 官网:https://vxeui.com/ 图片拖拽排序 <template><div><vxe-upload v-model"imgList" mode"image" multiple drag-sor…...
Elasticsearch的一些介绍
你想问的可能是 **Elasticsearch**,以下是关于它的一些介绍: ### 概述 Elasticsearch是一个基于Apache Lucene库构建的开源分布式搜索和分析引擎,采用Java语言编写,具有高性能、可扩展性和易用性等特点,可用于各种数据…...
从源码构建安装Landoop kafka-connect-ui
背景 部署Landoop kafka-connect-ui最简单的办法还是通过docker来部署,我们之前的kafka-connect-ui就是通过docker部署的,但是,最近发现个问题:当使用docker部署且防火墙使用的是firewalld的情况下,就会出现端口冲突。…...
MybatisPlus-扩展功能
代码生成 在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用,也很麻烦。 这里…...
发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)
CS软件授权注册系统-发布/部署WebApi服务器(IIS.NET8ASP.NETCore) 目录 本文摘要VS2022配置发布VS2022发布WebApiIIS服务器部署WebApi 将程序文件复制到云服务器添加网站配置应用程序池配置dns域名配置端口阿里云ECS服务器配置19980端口配置https协议 (申请ssl证书)测试WebAp…...
【2025最新计算机毕业设计】基于SpringBoot+Vue城市中小学体育场馆预约系统【提供源码+答辩PPT+文档+项目部署】
一、项目技术架构: 本项目是一款城市中小学体育场馆预约系统的设计与实现。 该SpringBootVue的城市中小学体育场馆预约系统,后端采用SpringBoot架构,前端采用VueElementUI实现页面的快速开发,并使用关系型数据库MySQL存储系统运行…...
Spring Security 6 系列之二 - 基于数据库的用户认证和认证原理
之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…...