01Frenet与Cardesian坐标系(基础知识)

1 简介

Frenet坐标系是一种在几何学和物理学中常用的坐标系,特别是在轨迹规划和机器人控制中。它由法国数学家Jean Frenet于1847年为了解决在求解某些几何问题时遇到的环形坐标系的问题而提出的。它依据曲线的切线和法线来定义坐标轴,主要用于局部地描述曲线或曲面的几何特性。在自动驾驶技术领域,这种坐标系统提供了一种相对于传统的Cardesian坐标系统更为直观的方式来表示车辆在道路上的位置。

1.1 概念介绍和理解

如图1所示,它采用道路中心线作为基准线,并基于该基准线的切线向量 τ ⃗ \vec{\tau} τ 与法线向量 n ⃗ \vec{n} n 构建坐标框架,坐标轴互相垂直,分别定义为 s s s 方向(沿基准线方向,也称为纵向)和 l l l 方向(当前基准线的法向,也称为横向)。其中, s s s 值表示车辆沿道路的行进距离,即纵向位置,而 l l l 值则表示车辆在道路上的水平位置,即横向位置。

Tips:光看定义没什么感觉。我们来理解一下从Cardesian转到Frenet到底做了一件什么事情。

其实,只做了一件事——把Cardesian空间中的曲线“拉直”。首先,我们要理解Cardesian中为什么会有曲线:如图所示,曲线上的点的位姿 ( x , y , θ ) (x, y, \theta) (x,y,θ)都是相对于 ( x 轴 , O 原点 , y 轴 ) (x_轴,O_{原点},y_轴) (xO原点y)来进行讨论的,当坐标轴不变,位姿变化时,就形成了一条曲线。如果我们深入理解了"运动是相对的"和“参考系”的概念,那自然可以想到沿着我们曲线切线和法线方向建立参考系,不就可以“化曲为直”了。代价是,我们的参考系一直在变(好比是坐标轴在沿着曲线滑动),用代码实现时需要耗费一些计算量。

如果大家了解过电机的定子和转子就更容易理解Cardesian和Frenet的关系了——Cardesian就好比是内转子电机;Frenet就好比是外转子电机。

在这里插入图片描述

1.2 符号表示

Cardesian坐标系表示为: [ r ⃗ , v ⃗ , a ⃗ , θ , κ ] [ \vec{r}, \vec{v}, \vec{a}, \theta, \kappa ] [r ,v ,a ,θ,κ]。其中,各个变量的含义如下:

  • r ⃗ \vec{r} r :在笛卡尔坐标系统中的位置向量(位失);

  • v ⃗ \vec{v} v :在笛卡尔坐标系统中的线速度向量,可以分解为 v x , v y v_x,v_y vx,vy两个标量(大家可以理解一下什么是标量——标量就是在单个坐标轴方向上投影后的那个系数;有人可能有疑问,那向量的模也是标量呢?这可以理解为投影到实数轴上的系数);模为 v v v,方向为切线方向 τ \tau τ;

  • w ⃗ \vec{w} w :在笛卡尔坐标系中的角速度向量,模为 w w w,方向为法线方向或者负法线方向,取决于圆心与切点连线向量与切线方向叉乘的结果:结果为正则为法线方向,为负则为法线负方向(可以用右手法则,圆心在切点左侧为正,右侧为负)。

  • a ⃗ \vec{a} a :在笛卡尔坐标系中的加速度向量,可以被分解为切线方向的加速度 a τ ⃗ \vec{a_{\tau}} aτ 和法线方向的加速度 a n ⃗ \vec{a_n} an

  • θ \theta θ:在笛卡尔坐标系统中,切线与X轴正方向之间的夹角,一般用来表示汽车的朝向角heading;

  • κ = d θ d s \kappa = \frac{d\theta}{ds} κ=dsdθ:道路的曲率,注意需要和角速度($w=\frac{d\theta}{dt} )进行区分,前者与时间无关是一个静态量,后者是一个动态量(规控中引入 )进行区分,前者与时间无关是一个静态量,后者是一个动态量(规控中引入 )进行区分,前者与时间无关是一个静态量,后者是一个动态量(规控中引入\kappa 主要是用来对 主要是用来对 主要是用来对w$进行约束,不至于翻车,约束的关系参见车辆运动学和动力学分析)。

Frenet坐标系表示为: [ s , s ˙ , s ¨ , l , l ˙ , l ¨ , l ′ , l ′ ′ ] [s, \dot{s}, \ddot{s}, l, \dot{l}, \ddot{l}, l', l'' ] [s,s˙,s¨,l,l˙,l¨,l,l′′]。其中,各个变量的含义如下(注意s和l都是标量):

  • s s s:Frenet坐标系中的纵向坐标;
  • s ˙ = d s d t \dot{s} = \frac{ds}{dt} s˙=dtds:纵向坐标随时间变化的速率,即纵向速度;
  • s ¨ = d s ˙ d t \ddot{s} = \frac{d\dot{s}}{dt} s¨=dtds˙:纵向速度的变化率,即纵向加速度;
  • l l l:Frenet坐标系中的横向坐标,大小为横向偏离中心线的距离,方向为法线方向或负法线方向,取决于Frenet的原点到切点连线向量与切线向量的叉乘结果,结果为正则为法线方向,为负则为负法线方向(由于法线方向定义为切线方向逆时针旋转90度,因此有“左正右负”的口诀);
  • l ˙ = d l d t \dot{l} = \frac{dl}{dt} l˙=dtdl:横向坐标随时间变化的速率,即横向速度;
  • l ¨ = d l ˙ d t \ddot{l} = \frac{d\dot{l}}{dt} l¨=dtdl˙:横向速度的变化率,即横向加速度;
  • l ′ = d l d s l' = \frac{dl}{ds} l=dsdl:横向坐标相对于纵向坐标的变化率;
  • l ′ ′ = d l ′ d s l'' = \frac{dl'}{ds} l′′=dsdl:横向坐标相对于纵向坐标的二阶变化率。

两者的区别如下:

  • Cardesian中基向量对t不变化( d i d t = 0 \frac{di}{dt}=0 dtdi=0),对x也不变化( d i d x = 0 \frac{di}{dx}=0 dxdi=0);但是Frenet会变化( d τ d t ≠ 0 \frac{d\tau}{dt} \neq 0 dtdτ=0, d τ d s ≠ 0 \frac{d\tau}{ds}\neq 0 dsdτ=0);
  • Cardesian中 d x dx dx能够描述车辆沿x轴方向实际行进的距离;但是在Frenet中, d s ds ds不能描述车辆实际行进的路程,实际行进的路程只能在Cardesian中计算,表示为 d s r ds_r dsr(h为vehicle的缩写), d s ≠ d s h ds \neq ds_h ds=dsh

1.3 优缺点和适用范围

1.3.1 优点

使用Frenet有以下几个优势:

  • 化曲为直;
  • 实现了横纵向解耦。

上述优势带来的好处是将非线性规划问题转换为线性规划问题,不论是施加约束还是随机采样,都变得十分方便。

1.3.2 缺点和注意事项

存在的缺点是:

  • 使用的是质点模型,忽视了车辆形变;对于大型车辆使用的时要十分小心,需要评估形变并添加额外约束。
  • 非常依赖参考线的质量,参考线必须处处可导,否则不能保证轨迹连续;参考线的拼接处一定要做好。
  • Cartesian与Frenet坐标系在 l l l 大小接近 1 κ r \frac{1}{\kappa_r} κr1时转换变得不稳定(后面会详细说明);大曲率的车道不要使用Frenet。
  • 不能描述车辆运动学特性;涉及车辆运动学时不要使用Frenet。
  • 多车协同规划支持不太好;多车协同规划不要用Frenet。

2 Frenet基础公式推导

2.1 问题定义

Tips:有一个重要的点想明白,才能跳出单纯推导公式的怪圈。

这个重要的点就是——坐标变换这件事到底涉及了几方?答案是三方(和毕业签三方似的~),而不是两方。

有人可能会有疑问,明明是两方,怎么会是三方?

我们拿《车体坐标系和全局坐标系转换》举例,涉及到传感器的全局坐标、车辆的全局坐标和传感器相对于车辆的车体坐标——这三者(毕业生是传感器,学校是车辆,社会雇佣单位是大地;毕业生从学校中出来到社会中去,从学生身份转变为员工的身份,就好比是相对于学校的局部坐标转相对于社会的全局坐标,桥梁是学校,因为学校有它自身相对于社会的地位)。

理解这一点很重要。推公式推不明白,符号混用往往都是因为没有很清楚的阐明或者理解这一点。Cardesian和Frenet之间的坐标变换同样需要“签三方”,少一个都不行。所以,我们要先明确这三方都是谁,不然就会出现“哭了半天不知道谁死了”的尴尬。从大范围到小范围分析,其中一方是大地,第二方是车道中心线(参考线),第三方是车辆。

从Cardesian坐标转Frenet坐标是在做一件什么事情呢?就是已知车辆相对于大地的全局Cardesian坐标;也已知车道中心线(严格来说是车辆在参考线上的投影)相对于大地的全局Cardesian坐标;求车辆相对于车道中心线(严格来讲纵向是参考中心线的某个固定起点,横向是参考车辆当前时刻在车道中心线上的投影点)的Frenet坐标。

如果是求相对于参考线(严格来讲是参考线的某个固定起点)的Cardesian,那这个问题就退变成了《全局坐标系和局部坐标系的转换》,使用向量的旋转和平移就可以完成。

当就目前的目标来看,需要借助曲线坐标系,即Frenet坐标系相关的知识来完成。

2.2 基础公式

我们最终的目的是完成Cartesian和Frenet之间的转换:已知车辆后轴中心点在Cardesian下的状态 [ r h ⃗ , v h ⃗ , a h ⃗ , θ h , κ h ] [ \vec{r_h}, \vec{v_h}, \vec{a_h}, \theta_h, \kappa_h ] [rh ,vh ,ah ,θh,κh],求解车辆相对于车道中心线(参考线)的Frenet下的状态 [ s , s ˙ , s ¨ , l , l ˙ , l ¨ , l ′ , l ′ ′ ] [s, \dot{s}, \ddot{s}, l, \dot{l}, \ddot{l}, l', l'' ] [s,s˙,s¨,l,l˙,l¨,l,l′′]

如下图2表示,下标带h(vehicle的缩写)的为车辆状态(vehicle state),下标带r(reference的缩写)的为车辆在参考线上的匹配点的状态。
在这里插入图片描述

2.2.1 核心关系

车辆后轴中心在Cardesian下的状态和匹配点(车辆后轴中心在参考线上的投影点)在Cardesian下的状态之间的关系可以用如图中的向量三角形表示,具体关系如下:
r h ⃗ = r r ⃗ + l n r ⃗ (1) \vec{r_h} = \vec{r_r} + l\vec{n_r}\tag1 rh =rr +lnr (1)
后续所有的转换公式都是以此为桥梁建立的,称之为核心公式一点都不为过。

2.2.2 Frenet最小状态集

Frenet的最小状态集可以为 [ s , s ˙ , s ¨ , l , l ˙ , l ¨ ] [s, \dot{s}, \ddot{s}, l, \dot{l}, \ddot{l} ] [s,s˙,s¨,l,l˙,l¨],因为:
l ′ = d l d s = d l d t d s d t = l ˙ s ˙ (2) l' = \frac{dl}{ds} = \frac{\frac{dl}{dt}}{\frac{ds}{dt}} = \frac{\dot{l}}{\dot{s}}\tag2 l=dsdl=dtdsdtdl=s˙l˙(2)

l ′ ′ = d l ′ d s = d ( l ˙ / s ˙ ) d t s ˙ = l ¨ s ˙ 2 − l ˙ s ¨ s ˙ 3 = l ¨ − l ′ s ¨ s ˙ 2 (3) l'' = \frac{dl'}{ds} = \frac{\frac{d(\dot{l}/\dot{s})}{dt}}{\dot{s}}=\frac{\ddot{l}}{\dot{s}^2} - \frac{\dot{l}\ddot{s}}{\dot{s}^3} = \frac{\ddot{l} - l'\ddot{s}}{\dot{s}^2}\tag3 l′′=dsdl=s˙dtd(l˙/s˙)=s˙2l¨s˙3l˙s¨=s˙2l¨ls¨(3)
也可以为 [ s , s ˙ , s ¨ , l , l ′ , l ′ ′ ] [s, \dot{s}, \ddot{s}, l, l', l'' ] [s,s˙,s¨,l,l,l′′],因为:
l ˙ = d l d t = d l d s d s d t = l ′ s ˙ (2) \dot{l} = \frac{dl}{dt}=\frac{dl}{ds}\frac{ds}{dt}= l'\dot{s}\tag2 l˙=dtdl=dsdldtds=ls˙(2)

l ¨ = d l ˙ d t = d ( l ′ s ˙ ) d t = d l ′ d t s ˙ + l ′ s ¨ = d l ′ d s d s d t s ˙ + l ′ s ¨ = l ′ ′ s ˙ 2 + l ′ s ¨ (3) \ddot{l} = \frac{d\dot{l}}{dt} = \frac{d(l'\dot{s})}{dt}=\frac{dl'}{dt}\dot{s}+l'\ddot{s}=\frac{dl'}{ds}\frac{ds}{dt}\dot{s}+l'\ddot{s}=l''\dot{s}^2+l'\ddot{s}\tag3 l¨=dtdl˙=dtd(ls˙)=dtdls˙+ls¨=dsdldtdss˙+ls¨=l′′s˙2+ls¨(3)

Tips:公式标号一致,代表两个公式等价。第一种推导比第二种复杂一些,因为乘法的求导链式法则比除法形式上稍简单一些。大家使用时也尽量使用乘法的链式法则。

2.2.3 车辆在Cardesian下的向量导数
  1. 求位矢对时间的导数 v h ⃗ \vec{v_h} vh

r h ⃗ ˙ = v h ⃗ = ∣ v h ⃗ ∣ τ h ⃗ = v h τ h ⃗ (4) \dot{\vec{r_h}} = \vec{v_h}= |\vec{v_h}|\vec{\tau_h}=v_h\vec{\tau_h}\tag4 rh ˙=vh =vh τh =vhτh (4)

其中, v h v_h vh为标量,可以从轮速计算获得。

  1. 求切线向量对时间的导数

如图3(注意图中没有加下标h,因为这个图同样适用于2.2.4)所示:
在这里插入图片描述

设时间 d t dt dt内,车辆行驶了 d s h ds_h dsh的距离,向量 τ h ⃗ \vec{\tau_h} τh 改变了 d τ h ⃗ \vec{d\tau_h} dτh ,旋转的角度为 d θ h d\theta_h dθh ∣ d τ h ⃗ ∣ = 2 s i n ( d θ h / 2 ) |\vec{d\tau_h}| = 2sin(d\theta_h/2) dτh =2sin(dθh/2)

则当 d t → 0 , d s h → 0 dt \to 0, ds_h \to 0 dt0,dsh0时, d τ h d\tau_h dτh的方向趋于 n h ⃗ \vec{n_h} nh ,大小趋于 d θ h d\theta_h dθh,有
τ h ⃗ ˙ = lim ⁡ △ t → 0 ( τ h + △ τ h ) − τ h ⃗ ⃗ △ t = d θ h n h ⃗ d t = d θ h n h ⃗ d s h d s h d t = κ h v h n h ⃗ (5) \dot{\vec{\tau_h}} = \lim\limits_{\triangle t \to 0} \frac{\vec{(\tau_h+\triangle\tau_h)-\vec{\tau_h}}}{\triangle t} = \frac{d\theta_h \vec{n_h}}{dt} = \frac{d\theta_h \vec{n_h}}{ds_h} \frac{ds_h}{dt}=\kappa_hv_h\vec{n_h}\tag5 τh ˙=t0limt(τh+τh)τh =dtdθhnh =dshdθhnh dtdsh=κhvhnh (5)

  1. 求法线向量对时间的导数

如图4所示:

在这里插入图片描述

设时间 d t dt dt内,车辆行驶了 d s h ds_h dsh的距离,向量 n h ⃗ \vec{n_h} nh 改变了 d n h ⃗ \vec{dn_h} dnh ,旋转的角度为 d θ h d\theta_h dθh ∣ d n h ⃗ ∣ = 2 s i n ( d θ h / 2 ) |\vec{dn_h}| = 2sin(d\theta_h/2) dnh =2sin(dθh/2)

则当 d t → 0 , d s h → 0 dt \to 0, ds_h \to 0 dt0,dsh0时, d n h dn_h dnh的方向趋于 − τ h ⃗ -\vec{\tau_h} τh ,大小趋于 d θ h d\theta_h dθh,有
n h ⃗ ˙ = lim ⁡ △ t → 0 ( n h + △ n h ) − n h ⃗ ⃗ △ t = − d θ h τ h ⃗ d t = − d θ h τ h ⃗ d s h d s h d t = − κ h v h τ h ⃗ (6) \dot{\vec{n_h}} = \lim\limits_{\triangle t \to 0} \frac{\vec{(n_h+\triangle n_h)-\vec{n_h}}}{\triangle t} = \frac{-d\theta_h \vec{\tau_h}}{dt} = \frac{-d\theta_h \vec{\tau_h}}{ds_h} \frac{ds_h}{dt}=-\kappa_hv_h\vec{\tau_h}\tag6 nh ˙=t0limt(nh+nh)nh =dtdθhτh =dshdθhτh dtdsh=κhvhτh (6)

  1. 求速度矢量对时间的导数 a ⃗ \vec{a} a

v h ⃗ ˙ = a h ⃗ = ( ∣ v h ⃗ ∣ τ h ⃗ ) ˙ = v h ˙ τ h ⃗ + v h τ h ⃗ ˙ = a τ τ h ⃗ + κ h v h 2 n h ⃗ (7) \dot{\vec{v_h}} = \vec{a_h} = \dot{(|\vec{v_h}|\vec{\tau_h})}=\dot{v_h}\vec{\tau_h}+v_h\dot{\vec{\tau_h}}=a_{\tau}\vec{\tau_h} +\kappa_h v_h^2 \vec{n_h}\tag7 vh ˙=ah =(vh τh )˙=vh˙τh +vhτh ˙=aττh +κhvh2nh (7)

其中, a τ = v h ˙ a_{\tau}=\dot{v_h} aτ=vh˙ 为线加速度,可以由纵向加速度计得到,也可以由线速度 v h v_h vh对时间求导得到。

从式(7)中我们还能得到
a n = κ h v h 2 (8) a_n = \kappa_h v_h^2\tag8 an=κhvh2(8)
其中, a n a_n an为向心加速度,这个值我们从角加速度计也可以得到,从而可以估计车辆行驶轨迹的曲率 κ h \kappa_h κh

2.2.4 匹配点在Cardesian下的向量导数
  1. 求位矢对时间的导数 v r ⃗ \vec{v_r} vr

r r ⃗ ˙ = v r ⃗ = ∣ v r ⃗ ∣ τ r ⃗ = v r τ r ⃗ (9) \dot{\vec{r_r}} = \vec{v_r}= |\vec{v_r}|\vec{\tau_r}=v_r\vec{\tau_r}\tag9 rr ˙=vr =vr τr =vrτr (9)

其中, v r v_r vr为标量,可以从轮速计算获得。

  1. 求切线向量对时间的导数

如图3所示:
在这里插入图片描述

设时间 d t dt dt内,车辆行驶了 d s r ds_r dsr的距离,向量 τ r ⃗ \vec{\tau_r} τr 改变了 d τ r ⃗ \vec{d\tau_r} dτr ,旋转的角度为 d θ r d\theta_r dθr ∣ d τ r ⃗ ∣ = 2 s i n ( d θ r / 2 ) |\vec{d\tau_r}| = 2sin(d\theta_r/2) dτr =2sin(dθr/2)

则当 d t → 0 , d s r → 0 dt \to 0, ds_r \to 0 dt0,dsr0时, d τ r d\tau_r dτr的方向趋于 n r ⃗ \vec{n_r} nr ,大小趋于 d θ r d\theta_r dθr,有
τ r ⃗ ˙ = lim ⁡ △ t → 0 ( τ r + △ τ r ) − τ r ⃗ ⃗ △ t = d θ r n r ⃗ d t = d θ r n r ⃗ d s r d s r d t = κ r v r n r ⃗ (10) \dot{\vec{\tau_r}} = \lim\limits_{\triangle t \to 0} \frac{\vec{(\tau_r+\triangle\tau_r)-\vec{\tau_r}}}{\triangle t} = \frac{d\theta_r \vec{n_r}}{dt} = \frac{d\theta_r \vec{n_r}}{ds_r} \frac{ds_r}{dt}=\kappa_rv_r\vec{n_r}\tag{10} τr ˙=t0limt(τr+τr)τr =dtdθrnr =dsrdθrnr dtdsr=κrvrnr (10)

  1. 求法线向量对时间的导数

如图4所示:

在这里插入图片描述
设时间 d t dt dt内,车辆行驶了 d s r ds_r dsr的距离,向量 n r ⃗ \vec{n_r} nr 改变了 d n r ⃗ \vec{dn_r} dnr ,旋转的角度为 d θ r d\theta_r dθr ∣ d n r ⃗ ∣ = 2 s i n ( d θ r / 2 ) |\vec{dn_r}| = 2sin(d\theta_r/2) dnr =2sin(dθr/2)

则当 d t → 0 , d s r → 0 dt \to 0, ds_r \to 0 dt0,dsr0时, d n r dn_r dnr的方向趋于 − τ r ⃗ -\vec{\tau_r} τr ,大小趋于 d θ r d\theta_r dθr,有
n r ⃗ ˙ = lim ⁡ △ t → 0 ( n r + △ n r ) − n r ⃗ ⃗ △ t = − d θ r τ r ⃗ d t = − d θ r τ r ⃗ d s r d s r d t = − κ r v r τ r ⃗ (11) \dot{\vec{n_r}} = \lim\limits_{\triangle t \to 0} \frac{\vec{(n_r+\triangle n_r)-\vec{n_r}}}{\triangle t} = \frac{-d\theta_r \vec{\tau_r}}{dt} = \frac{-d\theta_r \vec{\tau_r}}{ds_r} \frac{ds_r}{dt}=-\kappa_rv_r\vec{\tau_r}\tag{11} nr ˙=t0limt(nr+nr)nr =dtdθrτr =dsrdθrτr dtdsr=κrvrτr (11)


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

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

相关文章

104.WEB渗透测试-信息收集-FOFA语法(4)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:103.WEB渗透测试-信息收集-FOFA语法(3) 打开fofa搜索引擎 搜索输…

YOLOv9改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

一、本文介绍 本文记录的是利用GnConv优化YOLOv9的目标检测方法研究。YOLOv9在进行目标检测时,需要对不同层次的特征进行融合。GnConv可以考虑更高阶的空间交互,能够更好地捕捉特征之间的复杂关系,从而增强特征融合的效果,提高模…

2024/9/17 pytorch-卷积神经网络

一、torch.nn pytorch有很多接口,其中的torch.nn可以让我们方便的调用以便生成神经网络各层 1.torch.nn.Module 是一个构成神经网络层的一个基本类别,一般生成一个类别来继承nn.module torch.tensor(a)将a初始化为一个tensor类型数据 一般这种已经固…

09_Python流程控制_分支

流程控制 流程控制是管理程序执行顺序的重要组成部分。分支(也称为条件语句)是流程控制的一种形式,它允许程序根据某些条件的真假来选择执行不同的代码路径。 顺序结构:按部就班执行选择结构:根据条件不同执行循环结…

【图像匹配】基于‌墨西哥帽小波(Marr小波)算法的图像匹配,matlab实现

博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于‌墨西哥帽小波(Marr小波)算法的图像匹配,用…

代码随想录训练营 Day62打卡 图论part11 Floyd 算法 A * 算法

代码随想录训练营 Day62打卡 图论part11 Floyd 算法 例题:卡码97. 小明逛公园 题目描述 小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力,走最短…

MOE论文汇总2

TASK-CUSTOMIZED MASKED AUTOENCODER VIA MIXTURE OF CLUSTER-CONDITIONAL Experts 这篇论文提出了一种新颖的自监督学习方法,名为“Mixture of Cluster-conditional Experts (MoCE)”,旨在解决传统Masked Autoencoder (MAE)在不同下游任务中可能遇到的负…

Linux基础3-基础工具4(git,冯诺依曼计算机体系结构)

上篇文章:Linux基础3-基础工具3(make,makefile,gdb详解)-CSDN博客 本章重点: 1. git简易使用 2. 冯诺依曼计算机体系结构介绍 一. git使用 1.1 什么是git? git是用于管理代码版本的一种工具,我们在如GitHub&#xf…

并发带来的对象一致性问题

多线程操作带来数据不一致情况分析,简单demo。 public class Object_IS {private Student_Object so new Student_Object("张三", 123);public static void main(String[] args) throws InterruptedException {Object_IS os new Object_IS();os.test1(…

利用语义搜索和混合查询策略提升RAG系统的准确性

人工智能咨询培训老师叶梓 转载标明出处 在构建基于大模型(LLM)的生成式问答系统(Generative Q&A)时,检索增强生成(Retrieval-Augmented Generation, RAG)方法被广泛采用。RAG通过结合检索…

Leetcode—删除有序数组的重复项

题目描述 思路 思路:定义两个指针/变量,dst指向第一个位置,scr指向下一个位置,判断scr和dst位置的数据。 case1:相等,scr; case2: 不相等,dst,nums[dst]nums[scr],scr; 画图解释 定义两个指针…

基于SpringBoot+Vue+MySQL的社区医院管理系统

系统展示 系统背景 在当前医疗体系日益完善的背景下,社区医院作为基层医疗服务的重要一环,其管理效率和服务质量直接关系到居民的健康福祉。为了提升社区医院的管理水平,优化患者就医体验,我们设计了一套基于SpringBoot、Vue.js与…

09年408考研真题解析-计算机网络

[题34]在无噪声情况下,若某通信链路的带宽为3kHz,采用4个相位,每个相位具有4种振幅的QAM调制技术,则该通信链路的最大数据传输速率是(B) A.12 kbps B.24 kbps C.48 kbps D.96 kbps 解析&#xff…

主流的Java的webapi接口模板特点分析

Java 作为一种广泛应用于企业级开发的编程语言,其在 Web API 开发中具有重要的地位。随着 Java 生态系统的不断发展,市面上涌现了多种不同的 Web API 框架和设计模式。不同的 Web API 模板在设计上各有特点,适合不同类型的开发需求。本文将详…

从0-1 用AI做一个赚钱的小红书账号(不是广告不是广告)

大家好,我是胡广!是不是被标题吸引过来的呢?是不是觉得自己天赋异禀,肯定是那万中无一的赚钱天才。哈哈哈,我告诉你,你我皆是牛马,不要老想着突然就成功了,一夜暴富了,瞬…

【Java 优选算法】双指针(下)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 有效三角形的个数 题目链接 解法 解法1:暴力枚举--->O(n^3) 解法2:利用单调性,使用双指针来解决---->O(n^2) 优化:对整个数组进行排序先固定最大数在最大数的左…

微服务_入门1

文章目录 一、 认识微服务二、 微服务演变2.1、 单体架构2.2、 分布式架构2.3、 微服务2.4、 微服务方案对比 三、 注册中心3.1、 Eureka3.2、 Nacos3.2.1、服务分级存储模型3.2.2、权重配置3.2.3、环境隔离 一、 认识微服务 二、 微服务演变 随着互联网行业的发展,…

Spark Streaming基础概论

1. 简介 1.1 什么是 Spark Streaming? Spark Streaming 是 Apache Spark 的一个扩展模块,专门用于处理实时数据流。它通过将数据流切分为一系列小批次(微批次)进行处理,使得开发者能够使用与批处理相同的 API 来处理…

【MRI基础】混叠伪影

基本概念 混叠(aliasing),也称为环绕伪影(wrap around artifacts),是一种常见的伪影,当视场 (FOV) 小于实际成像物体时,可能会在磁共振成像 (MRI) 中出现。空间定位由选定组织样本内的自旋频率决定。选定视…

正点原子阿尔法ARM开发板-IMX6ULL(六)——通过官方SDK完成实验

文章目录 一、引言1.1 cc.h1.2 main.c1.2 fsl_common.h、MCIMX6Y2.h、fsl_iomuxc.h1.3 对于宏定义能多个参数 其他 一、引言 在开发过程中,如果一个人来写寄存器、汇编等东西,会变得特别繁琐,好在官方NXP官方给出了SDK包, 1.1 c…