(秋招复习)自动驾驶与机器人中的SLAM技术(一)

秋招复习之--自动驾驶与机器人中的SLAM技术1

  • 前言
  • 第一章 自动驾驶基础知识
  • 第二章 基础数学知识回顾
    • 旋转的表示
    • SO(3)的BCH近似
    • 运动学表示
    • 线速度与加速度的处理
    • 一些常见的雅可比
    • 滤波器和最优化理论
  • 第三章 惯性导航与组合导航
    • IMU系统运动学
    • IMU航迹推算
    • 卫星导航
    • 基于ESKF的简单组合导航
    • 速度观测量
  • 第四章 预积分
    • 什么是预积分
    • 预积分的测量模型
    • 噪声是干什么的?噪声模型!
    • 零偏怎么更新
    • 图优化模型怎么建
  • 总结

前言

不知不觉自己也到了秋招的年纪了,虽然感觉自己还是个菜鸡,总感觉自己理论上和实践上都会一点,但又会的不多。。相比于V-SLAM,自己在激光SLAM这块真的是徒有一点理论毫无工程经验,所以为了巩固一下自己这可怜的卢纶基础,画了差不多两周多一点,把之前在深蓝学院上的网课《自动驾驶与机器人中的SLAM技术》又过了一遍,真是不复习不知道,一复习吓一跳,虽然自己当时擦着边拿到了优秀学员,但基础知识还真是忘了不少。。 写这篇文章的目的就是为了再从整本书的角度出发,把每章节大概讲了什么以及我认为的重点再大概记录一遍,这样自己以后再忘看这一篇文章再结合点博客应该差不多能想起来。当然也希望能帮助到和我一样在准备秋招的同学,如果和我一样在激光SLAM上没有什么工程经验,那就一起来巩固下基础知识吧!(PS:这里章节的顺序按照小章节顺序来了

注:本文大部分图表来自于深蓝学院《自动驾驶与机器人中的SLAM技术》课程材料,如有侵删

第一章 自动驾驶基础知识

事实上,虽然这两年自动驾驶领域在飞速发展,但关于自动驾驶的终极目标,依旧是没有改变的:让汽车拥有自动驾驶的能力。现如今。端到端的自动驾驶似乎是研究热门,"传统"的自动驾驶系统采用模块化部署策略,而端到端的自动驾驶系统可定义为完全可微的过程,以原始传感器数据为输入,并产生规划和/或低级控制动作作为输出。 由于这部分本人也不是很了解,所以这里不做过多赘述,感兴趣的可以参考上海AI Lab的综述文章:End-to-end Autonomous Driving: Challenges and Frontiers。不过关于自动驾驶的分级,依旧是L1-L5
在这里插入图片描述
之后高博引入了高精地图和定位在L4级别的自动驾驶中的重要地位, 高精定位和地图代表着一种严格、准确的理念。高精地图可以明显地减轻感知的负担,因此目前L4 级别自动驾驶方案中,大部分任务元素都是和地图绑定的。而高精地图本质上就是结构化的矢量数据,基本元素就是现实世界中的车道,像在之前看autoware的时候,里面用到的地图其实最重要的无非就是两个部分:车道线和红绿灯,当然还有诸如停车场、建筑物一类的标记物在地图上,在一些特殊的场景下(如自动泊车)也会发挥相应的作用。
高精地图的主要获取方式可以分为遥感、低空摄影测量以及车载设备扫描三种,遥感和无人机飞(无人机感觉其实也可以做SLAM,但不如倾斜摄影测量重建来的快了)这两种手段可能可以更快地得到一个比较大尺度的地图,但是普适性较差(感觉更偏向于建模而非建图),因为这本书就是针对车载设备建图这一问题,对其中的定位和建图两个部分分别进行了介绍。

第二章 基础数学知识回顾

事实上这里有很大的部分是基于SLAM十四讲或者说与十四讲的内容相同的,这里还是做简单总结

旋转的表示

所有的三维旋转矩阵组成特殊正交群,也就是SO(3) ,旋转矩阵是一个输出矩阵,满足正交(转置等于逆)和行列式为1两个性质,事实上这两个性质在程序里的体现也是最多的,对旋转的处理往往添加的就是这两个约束。关于旋转的表示还可以由四元数和旋转矢量两种方式来表达:

  1. 旋转矢量,及角轴
    旋转矢量其实本身是SO(3)对应的李代数,即小so(3),它是可以表示为SO(3)的切空间,所以也可以用它来描述角速度,旋转矢量与旋转矩阵的转换关系是罗德里格斯公式和指数映射
    在这里插入图片描述
    当然后文中主要讲exp(^)这种形式记为了Exp(),如果从旋转矩阵获得旋转矢量的话,其实就是把上边的步骤反着来了
    在这里插入图片描述
    这里还有一个性质需要注意一下,就是之前讨论的旋转矢量大多是针对旋转角度这个部分展开的,事实上轴n也是旋转中的一部分,关于旋转轴n,它对应的就是旋转矩阵特征值为1的单位特征向量,即Rn=n

  2. 四元数
    四元数的概念其实还是很复杂的,简单来说可以看作更高维度的复数,但性质还是有不少区别的,四元数最重要的部分就是乘法,主要需要掌握以下两种形式
    在这里插入图片描述
    在这里插入图片描述
    第一种是最标准的四元数乘法形式,第二种则是用的更多的左乘右乘形式,然后还有一个关键点就是四元数表示旋转的时候,是在左右两边都乘了四元数的,也就是p’=qpq-1这种形式,这个对后边理解四元数表示旋转非常重要,因为左右两边都乘了一遍,所以我们简单理解为四元数表示旋转的时候要对角度处理两次,所以最后的角度都带着二倍的关系(简记,而非真实原理)
    在这里插入图片描述

SO(3)的BCH近似

这里也是很多里理论的基础知识,把旋转看作原有姿态矩阵发生的扰动,BCH公式主要就是展示在李群空间和李代数空间这个扰动具体是怎么表现的
在这里插入图片描述
当然这里暂时用的还是左扰动模型,以及后面很多地方会将括号内的Φ省略掉

运动学表示

这个主要就是根据旋转矩阵是正交阵展开推导的,最终的目的是得到关于旋转矩阵的微分方程,也被称作泊松方程
在这里插入图片描述
这里的ω表示的就是瞬时角速度,对上述微分方程求解,事实上我们就能直接得到指数映射关系,因此离散时间下的形式一般记作
在这里插入图片描述
当然后边更常用的做法是对这个再进行一节泰勒展开

同理,我们可以从相同的出发点利用四元数展开,也就是qq*=1,通过这里的展开我们就可以表示出来四元数视角下的运动学方程,这里具体的展开没有什么特殊的,不过其中涉及到了纯虚单位四元数的两个性质
在这里插入图片描述
那么对纯虚单位四元数我们可以得到
在这里插入图片描述
再把四元数和李代数结合起来看,我们就发现了四元数表达的角速度正好是SO(3) 李代数的一半,那么四元数的运动方程也就可以记为
在这里插入图片描述
而四元数的更新公式也是类似的手段进行积分处理,最后简化为
在这里插入图片描述
这里还有一个运动学的表示方式比较常用,就是SO(3)+t的运动学表示,其实就是把线速度也考虑进来,是非常简单直观的方式
在这里插入图片描述

线速度与加速度的处理

这里其实在VIO的课程里面也有介绍过,出于简化考虑,只考虑带旋转的情况,我们可以得到两个速度之间的转换关系
在这里插入图片描述
然后我们再对这个式子求导,其实就是不停地展开求导,就可以得到两个加速度之间地关系了
在这里插入图片描述
事实上,后三项其实都可以作为小量忽略,也就是保留第一项,所以这也就是后面所有加速度展开都会带一个R在前面的理论基础

一些常见的雅可比

其实主要是对旋转矩阵的雅可比计算,下面这个式子是最基础的,但也用的最多的,这里是基于右扰动模型
在这里插入图片描述
然后复杂一点的情况就是对旋转进行复合了
在这里插入图片描述
这里用的近似后边也很常用
在这里插入图片描述

滤波器和最优化理论

这里的其实是整个SLAM问题的核心部分,SLAM问题最后可以简单概括为状态估计问题,典型的离散时间状态估计问题可以概括为运动方程+观测方程的形式,先从线性问题出发来考虑,对方程加入高斯分布的随机噪声
在这里插入图片描述
这里的A就是状态转移矩阵,C就是观测矩阵,在不同的文献中表达可能不同,核心思想是一致的。至于Kalman滤波器,因为给出证明的文献和材料太多了,主要分为三种:增益最优,贝叶斯滤波器和最大后验估计,像我比较熟悉的可能是第一种。 这里简单记录下最终的公式(还是一样的,不同的公式表达可能不一样,但是核心思想一样
在这里插入图片描述
在这里插入图片描述
然而线性系统终究只是理想情况,在实际问题中面对的问题大多数还是非线性的,这个时候就涉及到非线性系统的线性化,一般用到的矩阵就是一阶导数的雅可比矩阵J和二阶导的海塞矩阵H
在这里插入图片描述
当然很多问题其实线性化到一阶就够了。这种把非线性问题进行线性化的情况,再加入到Kalman滤波器中,就得到了扩展卡尔曼滤波器,即EKF,这个之前在autoware中的EKF模块里有简单记录过,其实和线性系统没什么大区别,无非就是把非线性系统线性化了。

当然除了滤波器,另一种手段就是批量最小二乘,我觉得其实也就是图优化了,这里我们把看问题的角度都换成了残差角度出发
在这里插入图片描述
所以最优估计也就可以看成是误差项的最小二乘问题了
在这里插入图片描述
这里涉及到的优化理论其实就是高斯牛顿,LM方法这些了,这里这些具体的就不再展开,关于L-M和GN之间,其实L-M算法可以看作高斯牛顿法的引申,看出高斯牛顿法是在x附近进行近似二阶泰勒展开来简化计算,所以这决定了∆x必须在x附近才有较高的置信度,L-M算法便是在此基础上产生,在增量方程中添加了一个动态拉格朗日乘子λ来改善高斯牛顿方法。这里简单记录下G-N方法的流程
在这里插入图片描述
这里的Hx=b形式在后边会被反复的用到,关于滤波和图优化二者之间的区别,简单记录
在这里插入图片描述

第三章 惯性导航与组合导航

IMU系统运动学

关于IMU的基础概念和运动学表示其实是任何一种形势下组合导航的基础,当然由于目的不同,可能有以严老师、牛老师为代表的传统积分方法以及以预积分为代表的简单积分方法两种角度,前一种方法精度更高,我本人也只是粗略了解,如果想深入学习要花的时间、精力成本完全不亚于学习SLAM,而第二种是在SLAM领域用的更多的一种,包括这本书里对IMU的处理也是从这种简单角度出发的。这里简单记录下本书中的IMU观测数据表示
在这里插入图片描述
当然上式这种表示是不考虑噪声的情况下的表示,IMU的噪声分为测量噪声和零偏,噪声其实往往影响没那么大,零偏对定位结果的影响其实是更大的,可以说零偏估计的结果也直接影响了最终的定位精度,在数学上,我们将它建模出来,认为零偏也是系统的状态量,而且随着时间发生随机的改变。但是,这只是一种数学建模,而非系统本质。那么考虑误差后,IMU的测量方程就可以得到更全面的表示了
在这里插入图片描述
这里我们认为零偏是一个维纳过程(Wiener process),或称布朗运动(Brownian motion)或随机游走(random walk)。它们都是常见的、经典的随机过程。 基于此对零偏进行建模
在这里插入图片描述
当然上述的IMU模型都是连续时间下的,在离散时间下IMU的模型表达可能会更加简单一些,这里需要注意的是加速度和陀螺仪噪声离散化时候和零偏里酸化时候的区别
在这里插入图片描述
在程序里,我们往往使用更为简单的表达方式
在这里插入图片描述

IMU航迹推算

航迹推算其实就是简单积分,当然积分有中值积分,欧拉积分,LK等等,这个可以根据具体情况和个人喜好来定,针对低精度的mems-IMU我认为是没什么区别的,在不考虑噪声的影响下,我们对观测值进行直接积分即可
在这里插入图片描述

卫星导航

事实上,高博的书中对GNSS只是做了简单的介绍,作为测绘专业的人,这些知识还是十分基础的。高博在这里,或者在整本书中用到的都是RTK,当然这里也给出了一个双天线方案,比起单天线,双天线其实就是可以根据天线之间的安装关系来确定车辆的一个绝对方向

在这里插入图片描述
当然这里还有另外一个概念,就是世界坐标系,其实比起来各种什么ECEF,WGS-84,ENU等等,这里就是一个最简单的UTM投影坐标系,也就是将地球视为一个椭球体,投影至横躺的圆柱体上,然后展开进行分区后得到的。在每个分区内,UTM 坐标以正东,正北的米制坐标来表达车辆位置。当然这里为了让x为正数,还加了个500000,然后坐标的定义的话就是比较常用的东北天定义了

这里还需要明确下书中关于RTK的外参,书中用到了安装偏角和安装偏移来描述,这种方法比较直观,有了外参矩阵,就可以得到车体B系到世界系W的转换了
在这里插入图片描述
在这里插入图片描述

基于ESKF的简单组合导航

书中的状态变量是18维的,也就是把重力向量g也加到了状态变量中,如果我们不在状态方程里写出重力变量,那么必须事先确定初始时刻的IMU 朝向R(0),才可以执行后续的计算。此时IMU 的姿态是相对于初始的水平面来描述的。而如果把重力写出来,就可以设IMU 的初始姿态为单位矩阵R = I,把重力方向作为IMU 当前姿态相比于水平面的一个度量。 至于状态变量的运动方程还是很好表示的
在这里插入图片描述
在流形意义下,EKF的更新量应是位于切空间中的矢量,中间的加法应为流形与切空间指数映射的广义加法,将更新量(或者称为误状态)视为滤波器的状态变量,来推导运动和观测模型。这就引出了误差状态卡尔曼滤波器,也就是ESKF,关于ESKF的优点总结如下
在这里插入图片描述
在这里插入图片描述
ESKF里,原来的状态变量被拆分成了两个部分:名义状态变量和误差状态变量,而他们的和就是真值,处理中认为名义状态变量是不含噪声的,这样就可以基于简单的运动学方程得到名义状态变量的方程,关于ESKF的推导,核心就是利用真值、名义状态变量和误差变量之间的关系,不停对相同的东西进行展开,首先我们考虑真值的
在这里插入图片描述
然后我们把名义状态变量和误差状态变量分离开
在这里插入图片描述

其中名义状态变量的方程和真值是相同的(因为都是不考虑噪声的情况下),这里位置、零偏以及g的的误差状态变量求导很简单,就是线性的关系,所以重点要掌握的是旋转和速度的,当然这里就是上面所提到的了,针对同一个等式不停展开以及替换
在这里插入图片描述
在这里插入图片描述
当然速度的误差项推导也差不多,不过这里要注意把旋转项的误差要记得带进去
在这里插入图片描述

最终可以得到误差变量的整体运动方程,当然实际上我们要用到的是离散时间情况下,总结如下
在这里插入图片描述
为了表达方便与统一,我们把误差变量的运动方程记为如下形式
在这里插入图片描述
然后就可以根据之前的式子得到线性化后的形式了
在这里插入图片描述
基于此,我们就可以进行EKF中的预测部分了,当然这里预测的其实是误差状态
至于更新的话,因为我们的预测是针对误差状态变量的,所以我们当然希望更新也是针对误差状态变量的了,所以要求的雅可比就变成观测矩阵对误差状态的雅可比了,至于这个雅可比的求导,要用到链式法则,其实只有旋转的部分需要单独处理下
在这里插入图片描述
这里的旋转又用一个右乘就好,也就是在这里插入图片描述
这样我们整个ESKF的更新就可以表示为
在这里插入图片描述
由于我们之前一直在处理的都是误差状态变量,所以这里还有个很重要的步骤就是对ESKF的后处理,其实就是把误差状态加到名义状态就好了。不过由于我们描述的协方差发生了变化,尤其对于旋转变量来说,其实切空间的零点发生了变化,所以这里还要单独处理下
在这里插入图片描述
其实看的就是误差状态重置后,发生了多少的改变

最后关于组合导航的实现,当然要考虑对RTK的处理了,这里是出于双天线,也就是有姿态观测值的情况下考虑,我们认为观测是对角度变化的直接观测,这样它的雅可比就是I了,后边使用就会很方便;当然位移因为是线性的,更是直接是I了,就更没什么好说的了

最后高博给出了一段ESKF和图优化之间的区别和相似之处,我觉得总结的还是蛮好的,这里记录下
在这里插入图片描述

速度观测量

因为IMU自己会飞,GNSS又经常不靠谱,所以这里引入了轮速计这种简单方便的传感器,当然这里的轮速计用的也是非常的简单,直接看作是载体坐标系下X方向的速度观测,这种约束我也用到过VIO里面,确实是有效的
在这里插入图片描述

第四章 预积分

预积分,作为传感器融合中不可绕开的一部分,高博这里带来了一种新的推导形式,当然高博在自己的知乎上也有分享过这种推导形式,具体链接在简明预积分推导,这里只做思路上的总结和流程上的梳理

什么是预积分

预积分,我个人感觉就可以简单理解为把数据积分起来当作新的处理对象,如前文中所提到的IMU具体的运动模型,虽然已经是不考虑地球自转的简化版本了,但依旧还是很复杂的一个形式,因此为了更一步简化的表达,当然也是因为通常IMU的观测频率太高了,比其他的传感器都要高,所以把i、j两个时刻内的IMU数据累积起来进行处理,我认为就是预积分的初衷。这个处理的手段就是尽可能把IMU的读书放在一侧,状态量放在另一侧,这样我们就得到了最基础的预积分形式
在这里插入图片描述

预积分的测量模型

预积分的一大处理基础就是先短暂地认为零偏是不变的,不然处理起来实在是太麻烦了。最后在当零偏估计发生改变时,用线性模型来修正预积分即可。这里首先就是要知道预积分的噪声有多大,还是从旋转开始推导,因为可以看到p和v其实里面是包含旋转的
在这里插入图片描述
我们这里引入预积分观测量,其实就是不考虑噪声和零偏变化情况下的观测值简单积分
在这里插入图片描述
然后就是不停对第一个式子展开,伴随转换
在这里插入图片描述
其实如果还对ESKF有印象的话可以发现,这里噪声的形式和ESKF里的也几乎一样了。至于速度部分也差不多,当然要记得把旋转的形式带进去
在这里插入图片描述
在这里插入图片描述
平移部分的操作也是类似的
在这里插入图片描述
然后我们就可以得到一个简单的预积分模型了
在这里插入图片描述

噪声是干什么的?噪声模型!

之前的推导知识单纯把旋转、速度和位移的噪声量从整体方程中分离了出来,进一步地我们应该分析这个噪声具体多大,以及噪声是怎么传递的,还是从旋转噪声开始看,用上面得到的表达方式,两边进行Log计算,这里要注意,因为高博对噪声的定义里面是加了符号的,所以前面自然而然就有负号了
在这里插入图片描述
然后因为噪声其实是小量,所以这里的BCH直接近似为I,就得到了一个简单形式
在这里插入图片描述
之后就可以根据这个公式来得到噪声的递推公式了,其实本质上就是把上一时刻的提取出来
在这里插入图片描述
那么误差的递推就可以表示为
在这里插入图片描述
同理,速度和位移的误差模型也是这样一点点推导出来的,不过形式上要比旋转的简单不少
在这里插入图片描述
在这里插入图片描述
把噪声项总结在一起,就得到整个系统的噪声递推关系了
在这里插入图片描述

零偏怎么更新

前文中提到了,我们是默认零偏先不变进行的整个预积分过程,但是零偏变了的话,必不可少要根据新的零偏进行一波更新了,这里有一个原则,就是假定预积分观测是随零偏线性变化的,这样我们就只是在原先的观测量上进行修正,注意,这里修正的是观测量
在这里插入图片描述
所以这个问题又变成求Jacobian的问题了,旋转这里还是不停地用伴随矩阵换,当然最后又用到了小量的BCH展开接近单位阵
在这里插入图片描述
然后我们也写成递推的形式
在这里插入图片描述
速度和位移也是同理
在这里插入图片描述
在这里插入图片描述
最后整体的递推形式是 (4.38)
在这里插入图片描述
因为我自己推过几遍了,所以这里主要是梳理流程,如果是第一次推的话,还是要耐心推完为好

图优化模型怎么建

这里其实主要就是残差怎么定义的一个问题,高博相当于是减去观测值看作残差这种做法
在这里插入图片描述
然后要考虑的就是残差对各个状态变量的求导了,这里其实比起之前的求导要简单不少(注:这里的旋转都是右扰动的
在这里插入图片描述
这里对零偏的求导则要复杂一些,因为本身带着零偏修正,所以这里的零偏就要再多加一项
在这里插入图片描述
也就是
在这里插入图片描述
速度的话则会简单一些
在这里插入图片描述
平移的话也差不多
在这里插入图片描述
至此,我们跟着高博的思路完成了一遍预积分的推导,当然预积分的推导还有像VINS那种一些其他的方法,其实区别的话更多还是一些细节以及符号表达上的区别,大体思路上是差不多的,我认为预积分更应该掌握这些每一步都是在干嘛的以及为什么要怎么干,后边具体实现的话,反而相对简单一些,用G2O的话就是把对应的顶点啊、边啊什么的构造好
在这里插入图片描述

总结

到这里其实是把这本书激光部分前的基础部分梳理了一遍,这部分的知识对多源融合部分十分重要,无论是激光,还是视觉,还是单纯的GINS,其实这里都涉及到了一些基础知识,因为要重点掌握才是

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL的引号、数据类型转换和数据类型

一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…

【springboot】中使用--WebMvcConfigurer

WebMvcConfigurer 一、页面跳转控制器step1:创建视图,resources/templates/index.htmlstep2:创建SpringMVC配置类step3:测试功能 二、数据格式化step1:创建 DeviceInfo 数据类step2:自定义 Formatterstep3: 登记自定义的 DeviceFormatterstep4: 新建 Con…

Linux epoll 机制——原理图解与源码实现分析

epoll概述 epoll是Linux内核为处理大批量文件描述符而作了改进的poll,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 epoll可以理解为event poll,它是一种事件驱动的I/O模型,可以用来替代传统的select和poll模型…

数据结构 - 栈(精简介绍)

文章目录 普通栈Stack用法Q 最长有效括号 单调栈Q 接雨水 普通栈 栈就是一个先进后出的结构 想象一个容器,往里面一层一层放东西,最早放进去的东西被压在下面(所以放元素也叫压栈),要拿到这个最低层的东西需要先把上面…

Puromycin(嘌呤霉素)— pac基因筛选抗生素

Puromycin是由Streptomyces alboniger(白黑链霉菌)产生的一种氨基糖苷类抗生素,可抑制原核细胞和真核细胞的肽基转移。Puromycin可抑制革兰氏阳性菌、多种动物细胞和昆虫细胞的生长,但是真菌和革兰氏阴性菌对Puromycin具有抗性&am…

CCF-Csp算法能力认证, 202312-2因子化简含解析

CCF-Csp算法能力认证, 202312-1仓库规划含解析 前言 推荐书目,在这里推荐那一本《算法笔记》(胡明),需要PDF的话,链接如下 「链接:https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?…

SCI一区级 | Matlab实现SSA-CNN-GRU-Multihead-Attention多变量时间序列预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现SSA-CNN-GRU-Multihead-Attention麻雀算法优化卷积门控循环单元融合多头注意力机制多变量时间序列预测,要求Matlab2023版以上; 2.输入多个特征,输出单个…

手机如何播放电脑的声音?

准备工具: 有线耳机,手机,电脑,远控软件 1.有线耳机插电脑上 2.电脑安装pc版远控软件,手机安装手机端控制版远控软件 3.手机控制电脑开启声音控制 用手机控制电脑后,打开声音控制,电脑播放视频…

Qt 使用Installer Framework制作安装包

Qt 使用Installer Framework制作安装包 引言一、下载安装 Qt Installer Framework二、简单使用2.1 创建目录结构 (文件夹结构)2.2 制作程序压缩包2.3 制作程序安装包 引言 Qt Installer Framework (安装程序框架)是一个强大的工具集,用于创建自定义的在线和离线安装…

JVM--HostSpot算法细节实现

1.根节点枚举 定义: 我们以可达性分析算法中从GC Roots 集合找引用链这个操作作为介绍虚拟机高效实现的第一个例 子。固定可作为GC Roots 的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如 栈帧中的本地变量表&a…

SVN与Git功能差异对比分析

最近在调研学习Git管理和分支模型相关内容,外延到了SVN和Git差异、工作原理等相关细节,学习整理如下。 SVN(Subversion)与 Git 的最大不同,主要包括以下几个方面: 交流探讨,加入群聊【Java学习…

Docker搭建本地私有仓库

目录 1.下载运行registry 镜像 2.添加私有镜像仓库地址 3.为镜像添加标签 4.上传到私有仓库 5.查看私有仓库的所有镜像 6.测试私有仓库下载 1.下载运行registry 镜像 docker pull registry docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restartal…

通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能

效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …

消费金融系统开发回忆录

架构设计图 整个支付链路上的功能 支付系统应该有&#xff1a;账户管理、渠道管理、支付管理、对账管理、清算管理、结算管理 一笔支付订单&#xff0c;在支付系统侧就是要记录清楚&#xff0c;谁发起的、对哪个商品进行支付、通过哪个渠道支付、支付时间、支付结果等…

Unity XR Interaction Toolkit(VR、AR交互工具包)记录安装到开发的流程,以及遇到的常见问题(一)!

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、XR Interaction Toolkit是什么&#xff1f;二、跨平台交互三、 AR 功能四、XR Interaction Toolkit的特点五、XR Interaction Toolkit 示例总结 前言 随着VR行业的发展&#…

huawei USG6001v1学习---防火墙相关知识(2)

目录 1.安全策略 2.防火墙的状态检测和会话表技术 3.FTP 4.用户认证 5.认证策略 1.安全策略 传统包过滤技术 --- 其本质就是ACL访问控制列表&#xff0c;根据数据包的特征进行过滤&#xff0c;对比规则&#xff0c; 执行对应的动作&#xff1b; 这里数据包的特征 --- …

【Linux】编辑器vscode与linux的联动

1.vscode简单学习 vscode是编辑器&#xff0c;可以写各种语言的程序 下载链接&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 来用一下vscode 我们保存了就能在我们的那个文件夹里面看到这个 这个就是编辑器&#xff0c;跟我们的文本文件好像差不多&#…

LLaMA 数据集

LLaMA的训练数据集来源多样&#xff0c;涵盖了多个不同的数据集和预处理步骤。以下是详细的描述&#xff1a; 公开数据来源和预处理 CommonCrawl [67%]&#xff1a; 使用CCNet管道&#xff08;Wenzek等人&#xff0c;2020年&#xff09;对2017年至2020年间的五个CommonCrawl转…

【大模型】FAISS向量数据库记录:从基础搭建到实战操作

文章目录 文章简介Embedding模型BGE-M3 模型亮点 FAISS是什么FAISS实战安装faiss加载Embedding模型创建FAISS数据库搜索FAISS数据删除FAISS数据保存、加载FAISS索引 总结 本人数据分析领域的从业者&#xff0c;拥有专业背景和能力&#xff0c;可以为您的数据采集、数据挖掘和数…

基于java的设计模式学习

PS &#xff1a;以作者的亲身来看&#xff0c;这东西对于初学者来说有用但不多&#xff0c;这些东西&#xff0c;更像一种经验的总结&#xff0c;在平时开发当中一般是用不到的&#xff0c;因此站在这个角度上用处不大。 1.工厂模式 1.1 简单工厂模式 我们把new 对象逻辑封装…