视觉SLAM十四讲ch4笔记——李群与李代数

news/2024/5/20 4:35:42/文章来源:https://blog.csdn.net/weixin_43662553/article/details/128161000

文章目录

视觉SLAM十四讲ch4——李群与李代数

4.1 李群李代数基础

什么是群?

  • (Group)是一种集合加上一种运算的代数结构
  • 记集合为AAA, 运算为⋅\cdot,那么运算满足以下性质时,称(A,⋅)(A, \cdot)(A,)成群。
  • 封结幺逆的运算 (凤姐咬你)

在这里插入图片描述

举例:

AAA为整数时,运算为+++A,⋅A, \cdotA,成群

  • 可以验证:

    • 旋转矩阵集合和矩阵乘法 构成群
    • 同样变换矩阵和矩阵乘法也构成群
    • 因此,称它们为旋转矩阵群 和 变换矩阵群
  • 其他常见群

    • 一般线性群GL(n)GL(n)GL(n):指n×nn \times nn×n的可逆矩阵,它们对矩阵乘法成群
    • 特殊正交群SO(n)SO(n)SO(n):也就是所谓的旋转矩阵群,其中SO(2)SO(2)SO(2)SO(3)SO(3)SO(3)最为常见
    • 特殊欧式群SE(n)SE(n)SE(n):也就是前面提到的nnn维欧式变换,如SE(2)SE(2)SE(2)SE(3)SE(3)SE(3)
  • 群结构保证了在群上的运算具有良好的性质。

  • 群论是研究群的各种结构和性质的理论,具体见各种抽象代数或近世代数教材

  • 李群(Lie Group)

    • 具有连续(光滑)性质的群
    • 既是群,也是流形。
    • 直观上看,一个刚体能够连续地在空间中运动,故SO(3)SO(3)SO(3)SE(3)SE(3)SE(3)都是李群
    • 但是,SO(3)SO(3)SO(3)SE(3)SE(3)SE(3)只有定义良好的乘法,没有加法,所以难以进行取极限、求导等操作。但是在位姿估计领域需要对其求导取极限,以寻找最优解,因此这也就是位姿估计的主要研究难点之一。
  • 李代数:与李群对应的一种结构,位于向量空间

    • 通常记作小写的so(3)so(3)so(3)se(3)se(3)se(3)
    • 事实上是李群单位元处的正切空间。
  • 李代数的引出:

    • 任意旋转矩阵R\boldsymbol{R}R,满足
      RRT=I\boldsymbol{RR}^{\text{T}} = \boldsymbol{I} RRT=I

    • 考虑R\boldsymbol{R}R 随时间的变化,有:

    R(t)R(t)T=I(1)\boldsymbol{R}(t)\boldsymbol{R}(t)^{\text{T}} = \boldsymbol{I} \tag{1} R(t)R(t)T=I(1)

    • 两侧对时间求导:

    R(t)˙R(t)T+R(t)R(t)T˙=0(2)\dot{\boldsymbol{R}(t)}\boldsymbol{R}(t)^{\text{T}} + \boldsymbol{R}(t)\dot{\boldsymbol{R}(t)^{\text{T}}} = 0 \tag{2} R(t)˙R(t)T+R(t)R(t)T˙=0(2)

    • 整理得:

    R(t)˙R(t)T=−(R(t)˙R(t)T)T(3)\dot{\boldsymbol{R}(t)}\boldsymbol{R}(t)^{\text{T}} = -\left ( \dot{\boldsymbol{R}(t)}\boldsymbol{R}(t)^{\text{T}}\right)^{\text{T}} \tag{3} R(t)˙R(t)T=(R(t)˙R(t)T)T(3)

    • 可以看出来,上式为一个反对称矩阵,注意ϕ(t)\phi(t)ϕ(t)为一个向量,记:

    R(t)˙R(t)T=ϕ(t)∧(4)\dot{\boldsymbol{R}(t)}\boldsymbol{R}(t)^{\text{T}} = \phi(t)^{\wedge} \tag{4} R(t)˙R(t)T=ϕ(t)(4)

    • 这里需要注意 反对称符号的引入:即一个向量aaa的上尖为一个反对称矩阵AAA, 反对称矩阵AAA的下尖为向量aaa

    a∧=A=[0−a3a2a30−a1−a2a10],A∨=aa^{\wedge}=\boldsymbol{A}=\begin{bmatrix} 0 & -a_3 & a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{bmatrix}, \space \space \boldsymbol{A}^{\vee } = a a=A=0a3a2a30a1a2a10,  A=a

    • 两侧同时右乘R(t)\boldsymbol{R}(t)R(t),得
      R(t)˙=ϕ∧R(t)(5)\dot{\boldsymbol{R}(t)} = \phi^{\wedge} \boldsymbol{R}(t) \tag{5} R(t)˙=ϕR(t)(5)

    • 可以看到,对R\boldsymbol{R}R 求导后,左侧多出一个ϕ(t)∧\phi(t)^{\wedge}ϕ(t)

    • 考虑简单的情况:t0=0,R(0)=It_0 = 0, \boldsymbol{R}(0) = \boldsymbol{I}t0=0,R(0)=I,即上式微分方程从000时刻开始,对t0t_0t0开始,进行一阶泰勒展开,得到:
      R(t)≈R(t0)+R(t0)˙(t−t0)=I+ϕ(t0)∧(t)(6)\begin{aligned} \boldsymbol{R}(t) &\approx \boldsymbol{R}(t_0) + \dot{\boldsymbol{R}(t_0)}(t-t_0) \\ &= \boldsymbol{I} + \phi(t_0)^{\wedge}(t) \end{aligned} \tag{6} R(t)R(t0)+R(t0)˙(tt0)=I+ϕ(t0)(t)(6)

    • 可见ϕ\phiϕ 反映了一阶导数性质,它位于单位圆附近的正切空间(tangent space)上。

      • t0t_0t0附近,假设ϕ\phiϕ 不变,则根据公式(5),有微分方程:
        R(t)˙=ϕ(t0)∧R(t)=ϕ0∧R(t)(7)\dot{\boldsymbol{R}(t)} = \phi(t_0)^{\wedge}\boldsymbol{R}(t)=\phi_0^{\wedge} \boldsymbol{R}(t) \tag{7} R(t)˙=ϕ(t0)R(t)=ϕ0R(t)(7)

      • 已知初始情况:R(0)=I\boldsymbol{R}(0) = \boldsymbol{I}R(0)=I,解之,得:
        R(t)=exp⁡(ϕ0∧t)(8)\boldsymbol{R}(t) = \exp(\phi_0^{\wedge}t) \tag{8} R(t)=exp(ϕ0t)(8)

      • 公式(8)说明,对任意ttt,都可以找到一个R\boldsymbol{R}R和一个ϕ\phiϕ的对应关系:

        • 该关系为指数映射(Exponential Map)
        • 这里的ϕ\phiϕ称为SO(3)SO(3)SO(3) 对应的李代数: so(3)so(3)so(3)
    • 问题:

      • so(3)so(3)so(3) 的定义和性质?
      • 指数映射如何求?
  • 李代数(Lie Algebra)

    • 每个李群都有与之对应的李代数。

    • 李代数描述了李群单位源数的正切空间性质

    • 李代数需要满足的性质:封自双雅(疯子爽鸭)

在这里插入图片描述

在这里插入图片描述

  • 最后得到一个似曾相识的结果:

exp⁡(θa∧)=cos⁡θI+(1−cos⁡θ)aaT+sin⁡θa∧(14)\exp(\theta a^{\wedge}) = \cos \theta \boldsymbol{I} + (1-\cos\theta)aa^{\text{T}} + \sin \theta a^{\wedge} \tag{14} exp(θa)=cosθI+(1cosθ)aaT+sinθa(14)

  • 公式(14)即为:罗德里格斯公式,罗德里格斯公式能够将旋转向量转换为旋转矩阵,这说明李代数到李群的转化为罗德里格斯公式
  • 这说明so(3)so(3)so(3) 的物理意义就是旋转向量
  • 反之,给定旋转矩阵时,亦能求李代数(对数运算):

ϕ=ln⁡(R)∨=(∑n=0∞(−1)nn+1(R−I)n+1)∨(15)\phi = \ln (\boldsymbol{R})^{\vee}=\left ( \sum_{n=0}^{\infty } \frac{(-1)^n}{n+1}(\boldsymbol{R} - \boldsymbol{I})^{n + 1} \right)^{\vee} \tag{15} ϕ=ln(R)=(n=0n+1(1)n(RI)n+1)(15)

在这里插入图片描述

4.3 李代数求导与扰动模型

4.3.1 引入李代数的原因

  • 在实际应用当中,我们经常需要对位姿进行估计
  • 李群元素只有乘法,没有加法,无从定义导数

R1+R2∉SO(3)\boldsymbol{R}_1 + \boldsymbol{R}_2 \notin SO(3) R1+R2/SO(3)

4.3.2 李代数求导方法

  • 那么如何对李群进行求导呢?

  • 直观的想法:

    • 能否利用李代数上的加法,定义李群元素的导数?
    • 能否使用指数映射和对数映射完成变换关系
  • 基本问题:当在李代数中做加法时,是否等价于在李群上做乘法?
    exp⁡(ϕ1∧)exp⁡(ϕ2∧)?=exp⁡((ϕ1+ϕ2)∧)(19)\exp(\phi_1^{\wedge}) \exp(\phi_2^{\wedge}) ?= \exp((\phi_1 + \phi_2)^{\wedge}) \tag{19} exp(ϕ1)exp(ϕ2)?=exp((ϕ1+ϕ2))(19)

    • 在使用标量的情况下,显然,公式(19)是成立的

    • 但这里的ϕ∧\phi^{\wedge}ϕ矩阵!显然公式(19)不成立的

    • 完整形式的BCH(Backer-Campbell-Hausdorff)公式给出:

      • 完整形式非常复杂,需要自行百度

      • 部分展开式:(方括号为李括号)
        ln⁡(exp⁡(A)exp⁡(B))=A+B+12[A,B]+112[A,[A,B]]−112[B,[A,B]]+⋯(20)\ln(\exp(\boldsymbol{A}) \exp(\boldsymbol{B})) =\boldsymbol{A} + \boldsymbol{B} + \frac{1}{2}[\boldsymbol{A}, \boldsymbol{B}] + \frac{1}{12}[\boldsymbol{A}, [\boldsymbol{A}, \boldsymbol{B}]] - \frac{1}{12}[\boldsymbol{B}, [\boldsymbol{A}, \boldsymbol{B}]] + \cdots \tag{20} ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+(20)

      • 特别的是,当A\boldsymbol{A}A或者B\boldsymbol{B}B特别小时,可以只保留一阶项

      • 即:当A\boldsymbol{A}A或者B\boldsymbol{B}B 其中一个量为小量时,忽略其高阶项,BCH具有线性近似形式:
        ln⁡(exp⁡(ϕ1∧)exp⁡(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2if ϕ1is small,Jr(ϕ1)−1ϕ2+ϕ1if ϕ2is small.(21)\ln(\exp(\phi_1^{\wedge }) \exp(\phi_2^{\wedge}))^{\vee} \approx \begin{cases} \boldsymbol{J}_l(\phi_2)^{-1}\phi_1 + \phi_2 & \text{ if } \phi_1 \text{ is small,} \\ \boldsymbol{J}_r(\phi_1)^{-1}\phi_2 + \phi_1 & \text{ if } \phi_2 \text{ is small.} \end{cases} \tag{21} ln(exp(ϕ1)exp(ϕ2)){Jl(ϕ2)1ϕ1+ϕ2Jr(ϕ1)1ϕ2+ϕ1 if ϕ1 is small, if ϕ2 is small.(21)

      • 其中:

        • 左乘雅可比矩阵:

        Jl=J=sin⁡θθI+(1−sin⁡θθ)aaT+1−cos⁡θθa∧\boldsymbol{J}_l = \boldsymbol{J} = \frac{\sin \theta}{\theta }\boldsymbol{I} + \left ( 1 - \frac{\sin \theta }{\theta } \right ) aa^{\text{T}} + \frac{1 - \cos \theta}{\theta}a^{\wedge } Jl=J=θsinθI+(1θsinθ)aaT+θ1cosθa

        Jl−1=θ2cot⁡θ2I+(1−θ2cot⁡θ2)aaT−θ2a∧\boldsymbol{J}_l^{-1} = \frac{\theta }{2}\cot \frac{\theta }{2}\boldsymbol{I} + \left (1 - \frac{\theta }{2} \cot\frac{\theta }{2} \right )aa^{\text{T}} - \frac{\theta}{2}a^{\wedge } Jl1=2θcot2θI+(12θcot2θ)aaT2θa

        • 右乘雅可比矩阵:

        Jr(ϕ)=Jl(−ϕ)\boldsymbol{J}_r(\phi ) =\boldsymbol{J}_l(-\phi ) Jr(ϕ)=Jl(ϕ)

      • 后续以左乘为例展开

      • 以左乘为例,直观的写法:

        • 在李群行左乘小量时,李代数上的加法相差左雅克比矩阵的逆
          exp⁡(Δϕ∧)exp⁡(ϕ∧)=exp⁡((ϕ+Jl−1(ϕ)Δϕ)∧)(22)\exp(\Delta \phi^{\wedge }) \exp (\phi ^{\wedge }) = \exp\left ( ( \phi + \boldsymbol{J}_l^{-1}(\phi) \Delta\phi )^{\wedge } \right ) \tag{22} exp(Δϕ)exp(ϕ)=exp((ϕ+Jl1(ϕ)Δϕ))(22)

        • 反之:
          exp⁡((ϕ+Δϕ∧)∧)=exp⁡((JlΔϕ)∧)exp⁡(ϕ∧)=exp⁡(ϕ∧)exp⁡((JrΔϕ)∧)(23)\exp\left ( (\phi + \Delta \phi^{\wedge })^{\wedge } \right ) = \exp \left ((\boldsymbol{J}_l \Delta \phi)^{\wedge } \right ) \exp (\phi ^{\wedge }) = \exp (\phi ^{\wedge }) \exp\left ( ( \boldsymbol{J}_r\Delta\phi )^{\wedge } \right ) \tag{23} exp((ϕ+Δϕ))=exp((JlΔϕ))exp(ϕ)=exp(ϕ)exp((JrΔϕ))(23)

          • 李代数上进行小量加法时,相当于李群上左(右)乘一个带左(右)雅可比的量
        • se(3)se(3)se(3) 上形式更复杂:
          exp⁡(Δξ∧)exp⁡(ξ∧)≈exp⁡((Jl−1Δξ+ξ)∧)(24 a)\exp (\Delta \xi ^{\wedge }) \exp (\xi ^{\wedge }) \approx \exp \left((\mathcal{J}_l^{-1} \Delta\xi + \xi)^{\wedge} \right ) \tag{24 a} exp(Δξ)exp(ξ)exp((Jl1Δξ+ξ))(24 a)

          exp⁡(ξ∧)exp⁡(Δξ∧)≈exp⁡((Jr−1Δξ+ξ)∧)(24 b)\exp (\xi ^{\wedge }) \exp (\Delta \xi ^{\wedge }) \approx \exp \left((\mathcal{J}_r^{-1} \Delta\xi + \xi)^{\wedge} \right ) \tag{24 b} exp(ξ)exp(Δξ)exp((Jr1Δξ+ξ))(24 b)

    • 通过BCH线性近似,可以定义李代数上的导数

    • 考虑一个基本问题:旋转后的点ppp关于旋转的导数:
      不严谨地记为: ∂Rp∂R\text{不严谨地记为: }\frac{\partial \boldsymbol{R}p}{\partial \boldsymbol{R}} 不严谨地记为: RRp

    • 由于R\boldsymbol{R}R 没有加法,导数无从定义

    • 存在两种解决方法:

      • R\boldsymbol{R}R 对应的李代数加上小量,求相对于小量的变化率(导数模型
      • R\boldsymbol{R}R 左乘或者右乘一个小量,求相对于小量的李代数的变化率(扰动模型
    • 导数模型

      • 按照定义可以推出:

      ∂(exp⁡(ϕ∧)p)∂ϕ=lim⁡δϕ→0exp⁡((ϕ+δϕ)∧)p−exp⁡(ϕ∧)pδϕ=lim⁡δϕ→0exp⁡((Jlδϕ)∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pδϕ≈lim⁡δϕ→0(I+(Jlδϕ)∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pδϕ=lim⁡δϕ→0(Jlδϕ)∧exp⁡(ϕ∧)pδϕ=lim⁡δϕ→0−(exp⁡(ϕ∧)p)∧Jlδϕδϕ=−(Rp)∧Jl(25)\begin{aligned} \frac{\partial (\exp (\phi^\wedge) p)}{\partial \phi} &= \lim_{\delta \phi \to 0} \frac{\exp \left ((\phi + \delta \phi )^\wedge \right )p - \exp(\phi ^\wedge )p}{\delta \phi } \\ &= \lim_{\delta \phi \to 0} \frac{\exp \left ((\boldsymbol{J}_l \delta \phi )^\wedge \right) \exp (\phi ^\wedge )p - \exp(\phi ^\wedge )p}{\delta \phi }\\ &\approx \lim_{\delta \phi \to 0} \frac{\left ( \boldsymbol{I} + (\boldsymbol{J}_l \delta \phi )^\wedge \right ) \exp (\phi ^\wedge )p - \exp(\phi ^\wedge )p}{\delta \phi } \\ &= \lim_{\delta \phi \to 0} \frac{(\boldsymbol{J}_l \delta \phi )^\wedge \exp(\phi ^\wedge )p}{\delta \phi } \\ &= \lim_{\delta \phi \to 0} \frac{- (\exp(\phi ^\wedge )p)^\wedge \boldsymbol{J}_l \delta \phi }{\delta \phi } \\ &= -(\boldsymbol{R}p)^\wedge \boldsymbol{J}_l \end{aligned} \tag{25} ϕ(exp(ϕ)p)=δϕ0limδϕexp((ϕ+δϕ))pexp(ϕ)p=δϕ0limδϕexp((Jlδϕ))exp(ϕ)pexp(ϕ)pδϕ0limδϕ(I+(Jlδϕ))exp(ϕ)pexp(ϕ)p=δϕ0limδϕ(Jlδϕ)exp(ϕ)p=δϕ0limδϕ(exp(ϕ)p)Jlδϕ=(Rp)Jl(25)

      • 结果中含有左乘雅可比矩阵,比较复杂,因此可以尝试消除
    • 扰动模型

      • 左乘小量,令其李代数为零:(SO(3)SO(3)SO(3) 上的扰动模型)

      ∂(Rp)∂φ=lim⁡φ→0exp⁡(φ∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pφ≈lim⁡φ→0(1+φ∧)exp⁡(ϕ∧)p−exp⁡(ϕ∧)pφ=lim⁡φ→0φ∧Rpφ=lim⁡φ→0−(Rp)∧φφ=−(Rp)∧(26)\begin{aligned} \frac{\partial(\boldsymbol{R}p)}{\partial \varphi} &= \lim_{\varphi \to 0} \frac{\exp(\varphi^\wedge) \exp (\phi ^\wedge)p - \exp (\phi ^\wedge)p}{\varphi} \\ &\approx \lim_{\varphi \to 0} \frac{(1 + \varphi^\wedge) \exp (\phi ^\wedge )p - \exp (\phi ^\wedge )p}{\varphi } \\ &= \lim_{\varphi \to 0} \frac{\varphi^\wedge \boldsymbol{R}p}{ \varphi} \\ &= \lim_{\varphi \to 0} \frac{-(\boldsymbol{R}p) ^\wedge \varphi}{ \varphi} \\ &= -(\boldsymbol{R}p) ^\wedge \end{aligned} \tag{26} φ(Rp)=φ0limφexp(φ)exp(ϕ)pexp(ϕ)pφ0limφ(1+φ)exp(ϕ)pexp(ϕ)p=φ0limφφRp=φ0limφ(Rp)φ=(Rp)(26)

      • 可以看出,相对于导数模型,扰动模型的最终结果更简洁,也更为实用
    • SE(3)SE(3)SE(3) 上的扰动模型:
      ∂Tp∂δξ=lim⁡δξ→0exp⁡(δξ∧)exp⁡(ξ∧)p−exp⁡(ξ∧)pδξ≈lim⁡δξ→0(I+δξ∧)exp⁡(ξ∧)p−exp⁡(ξ∧)pδξ=lim⁡δξ→0δξ∧exp⁡(ξ∧)pδξ=lim⁡δξ→0[δϕ∧δρ0T0][Rp+t1]δξ=lim⁡δξ→0[δϕ∧(Rp+t)+δρ0]δξ=[I−(Rp+t)∧0T0T]≜(Tp)⊙(27)\begin{aligned} \frac{\partial \boldsymbol{T}p}{\partial \delta \boldsymbol{\xi}} &= \lim_{\delta \boldsymbol{\xi} \to 0} \frac{\exp (\delta \boldsymbol{\xi}^\wedge )\exp (\boldsymbol{\xi}^\wedge )p - \exp (\boldsymbol{\xi }^\wedge )p}{\delta \boldsymbol{\xi }} \\ &\approx \lim_{\delta \boldsymbol{\xi} \to 0} \frac{(\boldsymbol{I} + \delta \boldsymbol{\xi}^\wedge) \exp (\boldsymbol{\xi}^\wedge )p - \exp (\boldsymbol{\xi }^\wedge )p}{\delta \boldsymbol{\xi }} \\ &= \lim_{\delta \boldsymbol{\xi} \to 0} \frac{\delta \boldsymbol{\xi}^\wedge \exp (\boldsymbol{\xi}^\wedge )p}{\delta \boldsymbol{\xi }} \\ &= \lim_{\delta \boldsymbol{\xi} \to 0} \frac{\begin{bmatrix} \delta \phi ^\wedge & \delta \rho \\ 0^\text{T} & 0 \end{bmatrix} \begin{bmatrix} \boldsymbol{R}p+t \\ 1 \end{bmatrix}}{\delta \boldsymbol{\xi }} \\ &= \lim_{\delta \boldsymbol{\xi} \to 0} \frac{\begin{bmatrix} \delta \phi ^\wedge(\boldsymbol{R}p+t) + \delta \rho \\ 0 \end{bmatrix}}{\delta \boldsymbol{\xi }} \\ &= \begin{bmatrix} \boldsymbol{I} & -(\boldsymbol{R}p+t)^\wedge \\ \boldsymbol{0}^\text{T} & \boldsymbol{0}^\text{T} \end{bmatrix} \\ &\triangleq (\boldsymbol{T}p)^{\odot } \end{aligned} \tag{27} δξTp=δξ0limδξexp(δξ)exp(ξ)pexp(ξ)pδξ0limδξ(I+δξ)exp(ξ)pexp(ξ)p=δξ0limδξδξexp(ξ)p=δξ0limδξ[δϕ0Tδρ0][Rp+t1]=δξ0limδξ[δϕ(Rp+t)+δρ0]=[I0T(Rp+t)0T](Tp)(27)

4.3.3 小结

  • 利用BCH线性近似,可以推导so(3)so(3)so(3)se(3)se(3)se(3) 上的导数模型和扰动模型
  • 通常情况下,扰动模型形式更为简单,所以更常用一些

4.4 演示:SOPHUS库

GitHub链接:https://github.com/gaoxiang12/slambook

本节对应的是 ch4

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

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

相关文章

slam学习 - 基本VO代码学习

本打算学习 orb -slam3 源码,但还是先把《slam 14》上的代码看完再说,至少把整个流程走一遍。 相关参考 https://blog.csdn.net/weixin_44684139/article/details/105305564 https://blog.csdn.net/qq_35590091/article/details/97111744 代码需求分析…

耗时大半个月收整全套「Java架构进阶pdf」

花了我大半个月时间收整了全套的「Java架构进阶pdf」,这一波下来,刷完你就会知道,真真香啊,我的心血果然,没白费! 请注意:关于全套的「Java架构进阶pdf」,我会从面试-筑基-框架-分布…

npm vue 路由之一级路由(npm默认已经集成了vue)

npm vue 路由之一级路由&#xff08;npm默认已经集成了vue&#xff09; 文档https://v3.router.vuejs.org/zh/installation.html npm install vue-router3.5.2 --save 1.在App.vue上面添加 <router-view></router-view>2.在main.js上面添加 import VueRouter fro…

Lattice库联合ModelSim仿真FIFO

Lattice联合ModelSim仿真FIFO前言一、添加IP二、库文件添加&#xff08;一&#xff09;方式一&#xff1a;添加器件库到ModelSim&#xff08;二&#xff09;方法二&#xff1a;直接添加器件库到Libray,和tb.v在同一个目录下仿真三、仿真&#xff08;一&#xff09;仿真文件&…

[附源码]Python计算机毕业设计Django基于java的社区管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

计网个人作业03

R14. True or false? a a. Suppose Host A is sending a large file to Host B over a TCP connection. If the sequence number for a segment of this connection is m, then the sequence number for the subsequent segment will necessarily be m 1. 假设主机A通过一…

世界连续动作预测模型-方向模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 <

[附源码]JAVA毕业设计家庭理财管理系统(系统+LW)

[附源码]JAVA毕业设计家庭理财管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

[附源码]计算机毕业设计医院挂号住院管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计学生在线考试系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计医疗器械公司公告管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]JAVA毕业设计健身房管理系统(系统+LW)

[附源码]JAVA毕业设计健身房管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

python使用opencv画圣诞树和画小星星函数

画星星函数&#xff1a; #img 图片 #x y 坐标 #size 大小 def darw_star(img,x,y,color,size40):poly_linenp.array([[x, y-size], [xint(size/4), y-int(size/4)], [xsize, y-int(size/4)],[xint(0.375*size),yint(size/4)],[xsize,ysize],\[x,yint(0.625*size)],[x-size,ysi…

uni-app入门:自定义tabbar

本文介绍如何使用vant Weapp定义自定义tabbar.按照自定义图标的方式进行添加: 自定义tabbar微信官方链接: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 1.导入vant weapp并构建npm 项目根目录右键选择外部终端窗口中打开 …

VS系列多通道无线采发仪

VS101/104/208/416/432 是以振弦、温度传感信号为主的多通道无线采发仪&#xff0c;并可扩展其它模拟&#xff08;电流、 电压、电阻&#xff09;信号和数字信号&#xff08;RS485、RS232&#xff09;传感器通道&#xff0c;内置电池&#xff0c;可外接太阳能电池板。最多可实…

【学习记录】Dynaslam源代码魔改-替换MaskRCNN为YoloV5

这两天接了个小任务&#xff0c;需求是替换Dynaslam里面的动态物体识别模块&#xff0c;将MaskRCNN换为YoloV5&#xff0c;这里记录一下过程中遇见的问题。 一、运行Dynaslam Dynaslam本身是一个基于ORBSLAM2的视觉SLAM框架&#xff0c;论文并没有仔细看过&#xff0c;简单来…

期末测试——H5方式练习题

期末考试——H5完成方式——练习题 前言 本练习训练了孩子们的栅格化布局&#xff0c;H5标签&#xff0c;CSS样式&#xff0c;并对列表与菜单进行了强化训练。使孩子们更好的掌握H5布局&#xff0c;为后面的框架教学打好基础。 素材下载地址&#xff1a; 链接&#xff1a;htt…

UltraISO 制作U盘启动盘

1、 从Ubuntu官网http://cn.ubuntu.com/download/下载系统的iso文件 用来制作的U盘需要是FAT32格式的&#xff0c;可以通过格式化U盘更改&#xff08;注意&#xff0c;如果U盘已经写入过隐藏分区了&#xff0c;需要在磁盘管理里面删除相关隐藏分区然后合并为一个大分区后…

open label file.(This can be normal only if you use MScoco)

E:\yolov4-rubish\darknet\our_data\ImagesAug 把标签的txt文件和Jpg文件放在同一个文件夹

12月2日:thinkphp中数据库完结

数据库的查询 聚合查询 聚合查询的几种方法其中将count作为重点来说&#xff0c;由图所示&#xff0c;即为使用count()方法中需要注意的点 count(*)的使用count()中字段名为具体值的使用方法时间查询 官方文档中列举的是使用wheretime()进行查询的方法&#xff0c;但是在日常的…