视觉SLAM十四讲ch4笔记——李群与李代数
文章目录
- 视觉SLAM十四讲ch4——李群与李代数
- 4.1 李群李代数基础
- 4.2 指数映射和对数映射
- 4.3 李代数求导与扰动模型
- 4.3.1 引入李代数的原因
- 4.3.2 李代数求导方法
- 4.3.3 小结
- 4.4 演示:SOPHUS库
视觉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=⎣⎡0a3−a2−a30a1a2−a10⎦⎤, 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)˙(t−t0)=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)=ϕ0∧R(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(ϕ0∧t)(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)-
每个李群都有与之对应的李代数。
-
李代数描述了李群单位源数的正切空间性质
-
李代数需要满足的性质:
封自双雅(疯子爽鸭)
-
-
其中二元运算[,][,][,]被称为李括号(Lie Bracket)
- 直观上说,李括号表达了两个元素的差异
-
例子:三维空间向量 + 叉积运算 构成 李代数
-
李代数so(3)so(3)so(3):
so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}(9)so(3) = \left \{ \phi \in \mathbb{R}^3, \Phi=\phi^{\wedge}\in \mathbb{R}^{3 \times 3} \right \} \tag{9} so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}(9)-
其中:
Φ=ϕ∧=[0−ϕ3ϕ2ϕ30−ϕ1−ϕ2ϕ10]∈R3×3\Phi = \phi ^{\wedge } = \begin{bmatrix} 0 & -\phi_3 & \phi_2 \\ \phi_3 & 0 & -\phi_1\\ -\phi_2 & \phi_1 & 0 \end{bmatrix} \in \mathbb{R}^{3 \times 3} Φ=ϕ∧=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤∈R3×3 -
李括号:
[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨[\phi_1, \phi_2] = (\Phi_1 \Phi_2 - \Phi_2\Phi_1)^{\vee} [ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨
-
-
同理,对于李代数se(3)se(3)se(3):
se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧ρ0T0]}(10)se(3) = \left \{ \xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix} \in \mathbb{R}^6, \rho \in \mathbb{R}^3, \phi \in so(3), \xi^{\wedge} = \begin{bmatrix} \phi^{\wedge} & \rho \\ \boldsymbol{0}^{\text{T} } & 0 \end{bmatrix} \right\} \tag{10} se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧0Tρ0]}(10)- se(3)se(3)se(3) 由三个平移分量 和 三个旋转分量 组成
- 旋转和so(3)so(3)so(3) 相同
- 平移是普通的向量——注意,不是SE(3)SE(3)SE(3)上的平移分量!!
- 上尖尖∧^{\wedge}∧ 不再是反对称矩阵,但仍保留记法:
ξ∧=[ϕ∧ρ0T0]∈4×4\xi^{\wedge} =\begin{bmatrix} \phi^{\wedge} & \rho \\ \boldsymbol{0}^{\text{T} } & 0 \end{bmatrix} \in \mathbb{4 \times 4} ξ∧=[ϕ∧0Tρ0]∈4×4
- 李括号
[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨[\xi_1, \xi_2] = (\xi_1^{\wedge}\xi_2^{\wedge}- \xi_2^{\wedge}\xi_1^{\wedge})^{\vee} [ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨
- 这里需要注意的是:
- 不同书籍对se(3)se(3)se(3) 的平移/旋转分量的先后顺序定义不同。这里使用平移在前的方式,也有些地方是旋转在前。
- 把李代数理解成向量形式或者矩阵形式都可以的。向量形式更自然一些。
4.2 指数映射和对数映射
4.2.1 so(3)↔SO(3)so(3) \leftrightarrow SO(3)so(3)↔SO(3)
- se(3)se(3)se(3) 由三个平移分量 和 三个旋转分量 组成
-
指数映射
反映了李代数到李群的对应关系:
R=exp(ϕ∧)(11)\boldsymbol{R} = \exp(\phi^{\wedge}) \tag{11} R=exp(ϕ∧)(11)- 但是 ϕ∧\phi^{\wedge}ϕ∧ 是一个矩阵,对于矩阵,如何定义求指数运算呢?——Taylor展开
exp(ϕ∧)=∑n=0∞1n!(ϕ∧)n(12)\exp(\phi^{\wedge }) = \sum_{n=0}^{\infty}\frac{1}{n!}(\phi ^{\wedge})^n \tag{12} exp(ϕ∧)=n=0∑∞n!1(ϕ∧)n(12)
-
由于ϕ\phiϕ 是向量,定义其角度和模长:
- 角度乘单位向量: ϕ=θa\phi = \theta aϕ=θa
- 关于aaa,可以验证以下性质:
a∧a∧=aaT−I(13 a)a^{\wedge}a^{\wedge} = aa^{\text{T}}-\boldsymbol{I} \tag{13 a} a∧a∧=aaT−I(13 a)
a∧a∧a∧=−a∧(13 b)a^{\wedge}a^{\wedge}a^{\wedge} = -a^{\wedge} \tag{13 b} a∧a∧a∧=−a∧(13 b)
- 这为化解Taylor展开式中的高阶项提供了有效的方法
-
Taylor 展开:
- 最后得到一个似曾相识的结果:
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+(1−cosθ)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=0∑∞n+1(−1)n(R−I)n+1)∨(15)
-
但是实际应用当中,没必要这样求,在旋转向量小节中已经介绍过矩阵到向量的转换关系:
θ=arccos(tr(R)−12)(16 a)\theta = \arccos(\frac{\text{tr}(\boldsymbol{R}) - 1}{2}) \tag{16 a} θ=arccos(2tr(R)−1)(16 a)Rn=n(16 b)\boldsymbol{R}n = n \tag{16 b} Rn=n(16 b)
-
至此,说明了SO(3)SO(3)SO(3) 和 so(3)so(3)so(3) 的对应关系。
- so(3)→SO(3)so(3) \to SO(3)so(3)→SO(3) :指数运算,也就是罗德里格斯公式
- So(3)→sO(3)So(3) \to sO(3)So(3)→sO(3):对数运算
4.2.2 se(3)↔SE(3)se(3) \leftrightarrow SE(3)se(3)↔SE(3)
-
指数映射:
exp(ξ∧)=[∑n=0∞1n!(ϕ∧)n∑n=0∞1(n+1)!(ϕ∧)nρ0T1]≜[RJρoT1]=T(17)\begin{aligned} \exp (\xi ^{\wedge}) &= \begin{bmatrix} \sum_{n=0}^{\infty}\frac{1}{n!}(\phi^{\wedge})^n & \sum_{n=0}^{\infty}\frac{1}{(n + 1)!}(\phi^{\wedge})^n\rho \\ \boldsymbol{0}^\text{T} & 1 \end{bmatrix} \\ &\triangleq \begin{bmatrix} \boldsymbol{R} & \boldsymbol{J}_\rho \\ \boldsymbol{o}^\text{T} & 1 \end{bmatrix} \\ &= \boldsymbol{T} \end{aligned} \tag{17} exp(ξ∧)=[∑n=0∞n!1(ϕ∧)n0T∑n=0∞(n+1)!1(ϕ∧)nρ1]≜[RoTJρ1]=T(17)- 左上角表示李代数的平移部分到矩阵平移部分,相差一个线性变换(雅可比矩阵),由J\boldsymbol{J}J给出:
J=sinθθI+(1−sinθθ)aaT+1−cosθθa∧(18)\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 } \tag{18} J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧(18)
4.2.3 小总结:so(3)↔SO(3)so(3) \leftrightarrow SO(3)so(3)↔SO(3)、se(3)↔SE(3)se(3) \leftrightarrow SE(3)se(3)↔SE(3)的转换关系
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+θ1−cosθ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 } Jl−1=2θcot2θI+(1−2θcot2θ)aaT−2θ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((ϕ+Jl−1(ϕ)Δϕ)∧)(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((Jl−1Δξ+ξ)∧)(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((Jr−1Δξ+ξ)∧)(24 b)
-
-
-
通过
BCH
线性近似,可以定义李代数上的导数 -
考虑一个基本问题:旋转后的点ppp关于旋转的导数:
不严谨地记为: ∂Rp∂R\text{不严谨地记为: }\frac{\partial \boldsymbol{R}p}{\partial \boldsymbol{R}} 不严谨地记为: ∂R∂Rp -
由于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((ϕ+δϕ)∧)p−exp(ϕ∧)p=δϕ→0limδϕexp((Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p≈δϕ→0limδϕ(I+(Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)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(ϕ∧)p−exp(ϕ∧)p≈φ→0limφ(1+φ∧)exp(ϕ∧)p−exp(ϕ∧)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(ξ∧)p−exp(ξ∧)p≈δξ→0limδξ(I+δξ∧)exp(ξ∧)p−exp(ξ∧)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.exyb.cn/news/show-3830141.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!
java过滤器实现以及多个过滤器之间的执行顺序
1:使用注解方式 /*** 设置过滤范围* 多个过滤器之间,按照类名字母和数字来培训*/ WebFilter("/*") public class Filter01 implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.pr…...

阿里云发布企业云原生IT成本治理方案:五大能力加速企业 FinOps 进程
云原生技术与降本增效 2020 年,新冠疫情横扫全球,大量的企业停工、工厂停产、供应链中断,给全球的经济带来巨大的冲击。有 65%的企业开始考虑通过上云的方式提升企业 IT 信息化的能力来应对未来可能出现的其他系统性风险。而云原生技术作为时…...

Java 将PDF转为OFD
OFD格式一种国产文件格式,在一些对文档格式有着严格的企业中用得比较多。下面,通过Java程序展示如何将PDF文件转为OFD格式。 代码思路:加载PDF源文档,调用Spire.Pdf.jar提供的saveToFile(String filename, FileFormat)方法直接保存…...

随意描绘风格的界面工具Balsamiq Mockups
在网上找了好多个适合UI原型设计的工具,如Axure、GUIDesinger、UIDesigner....但使用了一会,总感觉不是很好用。后来,看到很多blog上面介绍Balsamiq Mockups这款产品,上其网站看了看,发现它的特点是: 操作简…...

oracle查询多张表交集,Oracle中对两个数据表交集的查询-专栏,ORACLE
oracle关系型管理系统是世界上流行的关系,它是一个极其强悍、灵活和复杂的系统,据说,在使用oracle时应有这样的观念,那就是在sql中近乎可以推动任何一种想法。下面向你们介绍使用sql查两个oracle数据表查询的同样数据的方式&#…...

java之pdf打印
前言 网上搜了一堆如何把打印的纸张横向,发现颇为花费时间,特再次记录一下 解决办法 Document pdfDoc new Document(PageSize.A4.rotate());说明:加上 rotate()函数即可 教程 知识点: 1、新建 完整pdf文档 依赖࿱…...

java缩小pdf,如何使用Java缩小PDF文档中的内容?
如何使用Java缩小PDF文档中的内容?注:iText开发环境设置,下载iText7 jar(社区版:http://github.com/itext/itext7/releases/tag/7.0.4 ) ,创建一个工程:java_itext,并将下载的itext7 jar包和slf…...

WPF 实现用户头像选择器
制作一个用户头像选择器仿 WeGame制作一个用户头像选择Canvas为父控件所实现,展示图片使用Image,Path当作上方的蒙版;Canvas:主要用途方便移动Image,设置ClipToBounds="True"裁剪为一个正方形200x200做为主要展示区域;Image:展示需要裁剪的图片;Path:Combined…...

STM32之周期中断设计
详细代码如下: my_pit.c #include "my_pit.h"//------------------------------------------------------------------------------------------------------------------- // brief 定时器周期中断 // param timern 定时器通道 // p…...

java毕业设计毕业生就业去向登记管理系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计毕业生就业去向登记管理系统mybatis源码调试部署系统数据库lw java毕业设计毕业生就业去向登记管理系统mybatis源码调试部署系统数据库lw本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse…...

Can理论
第一章 CAN总线基础 1.1 CAN总线简介 1.1.1 Name:控制器局域网络(Controller Area Network, CAN)1.1.2 发展历史,优缺点,使用场景省略,需要了解去网上查找即可。 1.2 CAN总线基本工作原理 原理:CAN协议规范中关于层…...

java打开pdf文件,如何从Java打开pdf文件?
I want to open a PDF file from a jsp. The jsp and the PDF are in the same directory.I am using the following piece of code:if (Desktop.isSupported()) {try {File myFile new File(".pdf");Desktop.getDesktop().open(myFile);} catch (IOException ex)...

权限设计=功能权限+数据权限
很多企业管理的中使用的软件,基本上都离不开“权限管理”。有的朋友对权限管理理解的很透彻,有些朋友对一些概念模糊不清。这里总结了一些常见的误区,可供大家参考。 1. “普通用户有删除功能吗” 权限实际上是功能权限和数据权限的组合&…...

用Java实现一个视频聊天软件
文章目录网络的连接服务器连接部分客户端连接部分socket模块传输视频模块总结网络的连接 首先构建网络连接模块。 服务器连接部分 要实现两个人的视频通话,首先我们需要将两个台设备通过互联网连接起来,使他们之间可以通讯。 一台电脑要作为服务器端…...

mongodb不等于某个值_mongodb条件查询不等于
$ne不等于1、查询x 的值不等于3 的数据db.things.find( { x : { $ne : 3 } } );举例如下:C1 表的数据如下:> db.c1.find(){ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }{ "_id" : Obje…...

plt.plot绘图
由于改变图片大小,导致相应修改刻度尺、线段等信息。 plt.rcParams[xtick.direction] in plt.rcParams[ytick.direction] in plt.plot(x,y,colorred,linewidth0.5,linestyle-,marker.,markeredgecolorred,markersize2) plt.axhline(0,colork,linewidth0.4,linest…...

Promql基础语法2
数据样本直方图类型delta函数运算操作数学运算node_disk_info / 100当瞬时向量与标量之间进行数学运算时,数学运算符会依次作用域瞬时向量中的每一个样本值,从而得到一组新的时间序列瞬时向量与瞬时向量之间进行数学运算依次找到与左边向量元素匹配(标签完全一致)的右边向量…...

Java运用基础知识点(一)
第一章 Java开发环境 1.Java文件的扩展名结尾是.java 如何让win10系统显示文件时显示后缀扩展名? 打开此电脑,点击菜单栏里的查看,在文件扩展名前面打上勾。 2.一个基本常识: 如果软件是32位的,会自动安装到C:\Progra…...

java流 视频_java如何对视频文件处理?包括拉流推流视频截取等?
推流过程首先为了将来可以扩展多种协议(TRSP、RTMP)的视频推流功能,我们创建BStreamer基类。/**1. 基础视频流*/public class BStreamer {private int width 640;private int height 480;private String url;public BStreamer(String url) {this.url url;}public…...

java生成pdf的流_Java 文件输出流.pdf
Java 文件输出流Java ⽂件输出流Java IO教程 - Java⽂件输出流创建输出流要写⼊⽂件,我们需要创建⼀个FileOutputStream类的对象,它将表⽰输出流。// Create a file output streamString destFile "test.txt";FileOutputStream fos new File…...

java前端开发_Java前端开发学习什么内容
Java是一门高级编程语言,现在java工程师需求很大,所以java的前景很好,有些朋友往java前端开发方向发展,那么,Java前端开发学习什么内容呢?动力节点java学院小编来告诉你。就目前市场行情来看,Java最流行的…...

Redis大白话(●三●)
目录 🧡Redis实现消息队列 lpush&rpop / rpush&lpop pub&sub(发布订阅) stream 🧡Kafka实现消息队列 💟这里是CS大白话专场,让枯燥的学习变得有趣! 💟没有对象不要…...

HashMap基本介绍
目录 Map-HashMap: hashMap概述: Map几个主要实现类对比: 什么是哈希冲突 当我们new HashMap()时HashMap数组的长度就被创建了吗? HashMap什么时候数组长度才被创建? HashMap的put执行过…...

文本编辑器的实现课程c语言,c语言课程设计C语言文本编辑器
文本编辑器文本编辑器是最常用的文档创建和编辑工具。随着计算机科学与技术的发展,用来处理文本的编辑器随处可见,并且形式多样。比如,Windows下的记事本,写字板,EditPlus,UltraEdit等都是十分优秀的文本编辑器和处理工…...

java pdf 目录吗_Java 使用iText读取PDF文档目录列表实例教程
import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import com.lowagie.text.pdf.PdfReader;import com.lowagie.text.pdf.SimpleBookmark;public class HelloWorldBookmarks {public static void main ( String [] args ) t...

Java Web开发流程
要创建 Web 应用程序,告诉大家需要以下Java开发工具: IDE(Eclipse或 Netbeans) 数据库(Oracle 或Mysql) 服务器(Tomcat) 在创建任何 Web 应用程序之前,请确保上述所有工具都已正确安装在您的系统上。 现在,按照以下步骤开发 …...

科学计数法详解
简介 科学记数法是以简洁的方式书写冗长数字的有用速记法。虽然科学记数法一开始可能看起来很陌生,但了解科学记数法将帮助您了解浮点数的工作原理。 科学计数法中的数字采用以下形式:有效数 x 10指数。 例如,在科学记数法1.2 x 10⁴中&…...

基于腾讯云的k8s部署应用实践(一步不漏图文详解)
00 前言说明 需要花费一点钱,整个测试过程应该花不了5元,我整个过程只花了3元左右,所以想尝试的朋友不必拘谨哦。跟着来应该没啥问题。 01 搭建标准集群 001 创建私有网络VPC 创建好之后 暂时不知道这个私网的网段设置的要求是什么&#x…...

Java后端实现视频分段渐进式播放
最近在做公司的视频业务,涉及到大的视频文件的上传和播放。针对大文件,无论是上传和下载都需要分片处理,不能像以前处理小图片一样直接将整个文件流上传到服务器,服务器也不能直接响应整个文件给客户端。 大文件的分片上传可以看…...

三分钟让你掌握数据结构——单链表
数据结构——单链表 🏖️专题:数据结构 🙈作者:暴躁小程序猿 ⛺简介:双非本科大二小菜鸟一枚,希望大佬们指点~ 文章目录数据结构——单链表前言一、链表是什么?二、单链表的功能实现1.头文件2.…...

电力英语与计算机考试准考证
2021年下半年河北华北电力大学全国计算机等级考试准考证打印时间 一、时间安排 1. 准考证打印时间:2021年9月20日9:00开始。 2. 考试时间:2021年9月25日至27日,具体考试时间以准考证为准。用环球网校 免费预约短信提醒,可及时获…...

重磅!涛思数据发布TDengine PI连接器
TDengine 提供的混合解决方案,可以让企业既能保留传统的 PI 系统,又能轻松获得现代云平台提供的所有好处。 涛思数据宣布发布 TDengine PI 连接器。 在很多制造业企业中,因为历史的原因,他们选择了用 PI System 来存储生产过程中…...

【牛客SQL必知必会 3天热身】01. 基本的检索、排序、过滤
https://www.nowcoder.com/exam/oj?page1&tabSQL%E7%AF%87&topicId298 💖牛客题目, SQL必知必会。不断熟悉,不断进步,加油!👍 💬 ⭐️ 题目比较基础就不解析了 # 60. 查询 cust_id …...

Java视频文件上传
最近在学习上传视频的时候发现阿里云有已经提供的一些接口,可以快速的帮助我们实现视频上传功能。但是文件上传的底层原理我们却不太清除,所以小编整理了一下通过分片上传、断点续传的方式实现上传视频的底层原理,帮助大家更好的理解上传视频…...

自己开发的java音乐视频网站
1.需求 开发基于B/S模式的web音乐网站,要包含音乐和mv。为用户提供一个友好的视频和音乐播放环境,包含了大量最新一代的视频和音乐,同时它还具有评论收藏功能,方便以后注册的用户观看后有更深入的体验,引起共鸣&#…...

Hadoop windows 环境配置
以下配置hadoop程序即可在windows环境的开发工具中运行 1. 下载对应版本的 hadoop-3.3.0-src.tar.gz 2. 解压到windows任意目录 例如:D:\hadoop\hadoop-3.3.0 3. windows配置hadoop的环境变量:系统变量 HADOOP_HOMED:\hadoop\hadoop-3.3.0 4…...

【Spring系列】Spring事务实现方式及其传播性
1、spring事务 指封装在数据库事务之上的一种事务处理机制。其管理方法有两种,分别是编程式事务以及声明式事务。一般我们使用Transactional进行声明式事务。 编程式事务 1、PlatformTransactionManager接口:spring的事务管理器,提供了常用…...

嵌入式开发常用方法
// 数字字符串转数字 float toNumber(char amount[]) {char i 0;char j 1;float res 0;float float_sector 0;char isFloat 0;while(amount[i] ! \0) {if(amount[i] .) {isFloat 1;i;break;}printf("%d\r\n", amount[i]-48);res amount[i]-48 10 * res;i;}w…...

android studio gradle:build model执行时间太久
每次新建android项目打开后都需要下载gradle 配置国内gradle仓库,在项目的build.gralde文件中添加/修改如下配置(下面配置加上了阿里云镜像仓库) allprojects {repositories {mavenLocal()maven { url https://maven.aliyun.com/nexus/content/groups/…...

linux发行版的ISO下载
linux发行版的ISO下载 (1) debain系列: Debian ISO映像文件: http://www.debian.org/distrib/ Ubuntu ISO映像文件: http://www.ubuntu.com/download (2) redhat系列: redhat企业级Linux试用版ISO映像文件:https://www.redhat.com/zh …...

Java生成PDF
“ 本文主要介绍Java生成PDF” 如题,在日常的项目开发中,我们会遇到需要通过Java代码生成pdf,本文主要介绍的是通过velocity模板生产pdf。 我们利用springboot可以快速开发项目,因为本文是采用的eclipse作为开发工具,…...

应广单片机的介绍
我们公司做为IC的供应商,同时我们也代理了多家IC品牌,今天我们先来讲讲应广单片机。 首先我们讲讲应广单片机的生产制造者,应广科技股份有限公司。应广科技股份有限公司成立于2005年,以微控制器为研究发展核心,从IP到…...

java 压缩pdf_Java 复制、压缩PDF文档
在日常办公中,掌握操作PDF文档的能力尤为重要。在前文中我使用Java程序来演示过如何合并和拆分PDF文档。本文将介绍如何复制和压缩文档。通常复制文档有两种形式,一种是跨文档复制,即将一个文档复制到另一个文档中;另一种则是在同…...

el-select下拉框懒加载以及搜索联合处理+搜索防抖处理
问题描述 现有一个页面,充斥着大量表单元素,首先要知道的是vue对于视图上的更新机制,在一个组件内若有元素发生变动,那么整个组件就会刷新渲染,所以将大量的表单元素放在一个组件内是会造成页面卡顿的现象。如果有下拉…...

用JAVA写一个视频播放器
前言 跳过废话,直接看正文 当年入坑java是因为它的跨平台优势。那时我认为,”编写一次,处处运行。”这听上去多么牛逼,应该是所有语言发展的终极之道,java势必会一统天下。 然而事实证明,那时的我还是太…...

oracle 找时间段交集,oracle 和java 中求交集的方法
and( (#{protocolStartTime} > t.protocol_start_time AND #{protocolStartTime} < t.protocol_end_time) OR(#{protocolStartTime} < t.protocol_start_time AND #{protocolEndTime} > t.protocol_end_time) OR(#{protocolEndTime} > t.protocol_start_time A...

Oracle 交集/并集/差集(intersect/union/minus)
intersect: 得到两个查询结果的交集,并且按照结果集的第一个列进行排序 union : 得到两个查询结果的并集,并且自动去掉重复行,不会排序。 union all: 得到两个查询结果的并集,不会去掉重复行,也不会排序 minus…...

【RRQMSocket.RPC】C# 基于TCP协议的RRQMRPC的高级使用设置
文章目录一、序言本节须知二、程序集源码、Demo下载2.1 源码位置2.2 Demo位置三、安装四、序列化选择4.1 RRQM支持的序列化4.2 使用预设序列化4.3 自定义序列化五、调用反馈类型5.1 类型说明5.2 使用六、调用超时设置6.1 计时器设置6.2 任务取消一、序言 本节须知 在学习本节…...

刚拿到esp32-cam想测试该怎么办?看这篇文章就可以了
无意间对esp32-cam感兴趣,就去某pdd买了一个模块玩玩。组装摄像头的时候不要硬插进去,有个活动卡槽可以扣开,如下图。 接下来去arduino官网或者中文社区下载:arduino官网:https://www.arduino.cc/en/software 选择你需…...

java ftl导出pdf_java根据模板导出PDF详细教程
原文:https://blog.csdn.net/pengyufight/article/details/75305128题记:由于业务的需要,需要根据模板定制pdf文档,经测试根据模板导出word成功了;但是导出pdf相对麻烦了一点。两天的研究测试java导出PDF,终…...

tensorRT8下载和解压安装 | 示例代码模块yolov3_onnx模型转换测试运行
tensorRT8下载和解压安装 | 示例代码模块yolov3_onnx模型转换测试运行 conda 独立环境 pip 库安装方式tensorrt-8 下载和解压安装方式示例代码运行之 yolov3_onnxyolov3 模型转 onnxyolov3 模型转 onnx,之后再转换为 tensorrt 模型致谢博文多有不足之处,还请大佬多多指教 安…...

PostgreSQL不等于判断
操作必须加上OR column is NULL where id1 and (name <> 123 or name is NULL)...

Qt学习 第14节:搜索窗口
FindDialog.pro ###################################################################### # Automatically generated by qmake (3.1) Wed Dec 22 19:24:23 2021 ######################################################################QT core gui QT widgets #...

应广单片机PMS152
今天我们来讲讲应广单片机PMS152。PMS152系列是一款IO类型,完全静态以OTP为程序基础的CMOS 8bit 微处理器。它运用RISC的架构并且所有的指令架构的执行周期都是一个指令周期,只有少部分指令需要两个指令周期。 PMS152内置1.25KW OTP程序存储器以及80字节…...

java pdf替换文字_java 查找替换pdf中的指定文本
本文介绍通过Java程序批量替换PDF中的指定文本内容。程序环境准备如下:程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具;另外JDK版本建议使用高版本更佳。jar文件导入后,可调用Spire.PDF提供的接口、方法…...

Oracle 交集、差集、并集
交集:Intersect select customer_id,key_,value_ from t_customer_contact_bak ccc intersect select customer_id,key_,value_ from t_customer_contact ccc差集:MINUS (SqlServer中使用except关键字) select customer_id,key_,value_ from t_cus…...

oracle 任意结果集交集,oracle两个结果集取交集 sql语句取交集
Oracle求两个结果集的交集?从表1a,表2B中选择a.id,a.name其中substr(a.name,1,1)b.value使用union all可以实现Oracle中union和union all之间的差异。如果需要整体显示两个select语句的结果,则需要使用关键…...

Django models 筛选不等于
Django models 筛选不等于 目前的查询 j Job.objects.filter(status”0“).all() 筛选不等于 0 并不能用如下写法 j Job.objects.filter(status ! ”0“).all() 正确写法√ j Job.objects.filter().exclude(status”0“).all()...

java根据文件路径下载文件,彻底帮你搞懂
第一章 成局在胸一一用工具对 SQL 整体优化 第二章 风驰电掣一一有效缩短SQL 优化过程 第三章规蹈矩一一如何读懂SQL 执行计划 第四章 运筹幢幢一一左右 SQL执行计划妙招 第五章感受体系结构让SQL飞 第六章 且慢,体验逻辑结构让SQL飞 第七章探寻表的设计让SQL飞 第…...

应广单片机(MCU单片机科普)
应广单片机(史上最强单片机科普) MCU是Microcontroller Unit 的简称,中文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚…...

requests使用案例 爬取信用中国
信用中国 获取某公司的所有信息 不过该网站容易被限制ip 而且服务器性能也不好 经常出现各种bug 新手要耐心尝试 信用中国网址: url “https://www.creditchina.gov.cn/api/credit_info_search?&templateId&pageSize10” 需要多层请求爬取 代码有点长 …...

ML拍照购物功能集成教程分享
应用场景 拍照购物服务主要应用于线上购物场景。例如,购物类App集成该服务可以提供图片搜索商品功能,用户拍摄商品图像时,可以利用该功能快速找到想要的商品。 一. 开启服务 在AppGallery Connect上的 我的项目 构建 机器学习…...
mybatis学习指南--xml文件方式篇
mybatis学习指南---xml文件篇 以下内容是由我总结mybatis官方文档和实践中的一些经验,总共分为四篇:xml文件配置篇,java方式配置篇,缓存篇,其他配置篇,第一次这样正式的写一篇文章,致敬我的学长…...
springboot与rabbitMQ实现延迟加载
参考: http://blog.csdn.net/u014308482/article/details/53036770 http://blog.csdn.net/i_vic/article/details/72742277 里面的例子参考自这两篇博客,记录下使用过程。 为什么要延迟加载: 制定一项任务,在某个时间之后去执…...
华为帐号服务学习笔记(四):Authorization Code模式服务端开发
笔者在《华为帐号服务学习笔记(二):OAuth2.0协议详解》中已经给大家介绍了Authorization Code模式是需要有后台服务器才能使用的,并且在《华为帐号服务学习笔记(三):10分钟完成Authorization Co…...

19-爬取信用中国(山西)-行政处罚-法人的详细信息-【解析网页函数,经典!】...
目的:爬取信用中国(山西)中行政处罚和法人的详细信息,包括:行政处罚决定书文号、案件名称、处罚类型、处罚事由、处罚依据、......、数据报送时间 结果呈现:采用MySQL存储数据 注:这个简单的例子…...

.NET 同步钉钉接口的排班,和审批,并用审批回改排班,上班还是休息,请假或加班上午下午
定义变量 string DingAppkey "dingdul5161354SDF5131";//钉钉 应用的唯一标识keystring DingAppsecret "zU6w54Wg21DieRC3SSDF15SDFDSF15SDF1DS415S4DF8A791SD4";//钉钉 应用的密钥public static string dingAccessToken ""; //钉钉接口调用…...

PBR 材质
用照片制作 PBR: Bounding Box Software - Materialize 教程: https://www.youtube.com/watch?vkWyeRJIhvmo...

PBR材质渲染测试
本文基于Godot3.1.1 效果图 要体现PBR的渲染效果,光的使用很重要,尤其是一定要加一个HDRI环境贴图,这样才能反馈更多的信息,以前做的效果很搓,90%责任在于不懂用光的套路。 在Godot的3D场景中摆放摄像机不能像Unity那…...
Unity URP管线的PBR材质及Tessallation Shader(Height Map高度贴图)
在使用URP管线的过程中发现默认的URP管线的shader是没有提供height map参数设置的,经过查找才知道URP管线中height map相关的功能需要自己写shader开启Tessallation(曲面细分)和Displacement(移位贴图)功能才能使用。 …...

SubstanceDesigner制作PBR材质制作并且同步到Unity小尝试
SubstanceDesigner制作PBR材质制作并且同步到Unity小尝试 1.下载安装SubstanceDesigner,网址:https://zixue.3d66.com/softhtml/downsoft_1242.html 2.unity中unity018及以上版本需要Appstore中下载安装插件:Substance in Unity 3. substanceDesigner操…...

(一)PBR材质理论
目录 PBR材质有两种体系 基本颜色(Albedo Base Color) 粗糙度(Roughness) 金属度(Metallic)...

PBR材质基础概念,限制及未来发展
最近几年图形学社区对PBR的关注非常高,也许是由于Disney以及一些游戏引擎大厂的助推,也许是因为它可以被轻松集成进实时渲染的游戏引擎当中,也许是因为许多人发现现在只需要调几个参数就能实现具有非常精细细节的表面着色了。反正现在网络上随…...

unity build-in管线中的PBR材质Shader分析研究
PBR分析前言我理解的PBRPBR组成部分直接光漫反射直接光镜面反射(高光)间接光漫反射间接光镜面反射最终加和结果前言 近来,用到了几次Surface Shader,对于其封装好的PBR计算部分,如果不是复杂的效果其实是挺方便实用的…...

Unity Custom PBR材质
自定义 PBR(MetallicBased) 材质 说明: 带有法线贴图,带有metallic based PBR map。基于物理渲染,可完善的使用mixedlighting。 包含三张贴图 Albedo: RGBA Materialmap: R预留GroughnessB预留…...

UE4 PBR材质使用记录
参考文章:https://www.bilibili.com/video/BV1Dv411w7x6 参考文章:https://www.bilibili.com/video/BV1TQ4y167sG 引擎:4.26 初试两种纹理混合 纹理来源于【初学者内容包】 首先,新建一个材质文件。 然后将纹理拖入材质中。 …...

我的Substance Designer 学习笔记02-PBR材质学习理解
首先定义PBR:Physics-based rendering,基于物理的渲染。 由来。2012年迪士尼公司在技术论坛发布的文章,讲述自己作品的制作流程。 2014年被某大佬提出简化版本的制作流程。优化后只用5中材质通道。 BSDF:双向散射率分布函数(Blender) BRDF:双向反射率分布函数&a…...

源码分析学习记录(9)——PBR材质
2021SCSDUSC Dust3D中的材质采用PBR模型。PBR就是Physically-Based Rendering的缩写,意为基于物理的渲染。它提供了一种光照和渲染方法,能够更精确的描绘光和表面之间的作用。由于PBR基于物理的渲染旨在以物理上合理的方式模拟光,因此与我们…...

tomcat 配置别名alias
server.xml --> 节点内部配置:...

linux的alias命令
alias是别名命令,比如我们有一个服务器,经常上线看服务器的一个日志,查看日志命令大概是: tail -f xxx/aaa/vvv/xxx/aaa.log 这段输入起来实在是麻烦,这时候我们就可以使用别名 alias命令来简化它。 可以输入&#…...

Nginx.conf配置文件中alias与root的区别
他们都可以用来指定请求资源的路径 root: location /wap/ {root /wap_web/static; }假设访问的是http://localhost:8080/wap/test.html 那它实际访问的资源路径是:wap_web/static/wap/test.html alias: location /wap/ {alias /wap_web/st…...

alias命令详解
alias命令 定义或显示别名。 概要 alias [-p] [name[value] ...]主要用途 简化较长的命令。定义一个或多个别名。修改一个或多个已定义别名的值。显示一个或多个已定义别名。显示全部已定义的别名。 选项 -p:显示全部已定义的别名。 name(可选&…...

JavaWeb开发中alias拦截器的使用方法
在SSH项目中,有时需要由一个Action跳转到另一个Action。有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是在服务器上跳转,可以实现不同Action之间的数据共享&am…...

linux命令系列 alias,Linux命令整合之alias
描述设置命令别名。作用:1、通过给危险命令加一些保护参数,防止人为误操作,例如系统默认别名配置(rm、mv、cp)。2、把很多复杂的字符串或命令变成一个简单的字符串或命令。实例分析1.设置 "rm" 别名[rootoldboy data]# alias | gre…...

Nginx 配置中nginx和alias的区别分析
root和alias都可以定义在location模块中,都是用来指定请求资源的真实路径,比如: location /i/ { root /data/w3; } 请求 http://foofish.net/i/top.gif 这个地址时,那么在服务器里面对应的真正的资源 是 /data/w3/i/top.gif文件…...

MySQL 表别名(Alias)
SQL 表别名 在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持。通过关键字 AS 来指定。 表别名语法: ?1SELECT column …...

.bashrc在哪里,alias妙用
找到这个$HOME/.bashrc $HOME的意思是你的home目录,一般是/home/xxx/,xxx是你的登陆用户名 .bashrc 是个隐藏文件,可以在家目录下面用ls -a看到 ~/.bash_profile 是交互式、login 方式进入 bash 运行的 ~/.bashrc 是交互式 non-login 方式进入…...

nginx的location、root、alias指令用法和区别
亲测可用,若有疑问请私信 nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域: [root] 语法:root path 默认值:root html 配置段:http、server、location、if [alias] 语法:alias…...

桑拿lt是什么意思_lt是什么意思
lt的中文释义为 书信电报;数据处理,音标为[ɪt]。例句:Some other tools in LT XML include A.LTXML中的一些其他工具包括A。lt [ɪt]abbr. 书信电报(letter message);数据处理(Language Translation)例句:1.He was re…...

linux命令系列 alias,alias命令
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号 ‘ ‘ 将原来的命令引起来,防止特殊字符导致错误。alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名&#…...

别名机制alias详解——一个让你少敲键盘的偷懒方式
别名机制alias——让你少敲键盘的偷懒方式 目录别名机制alias——让你少敲键盘的偷懒方式样例环境1.从一个例子开始:2.别名机制alias:2.1 什么是alias:2.2 alias怎么用:2.3 alias的注意事项:参考文献:样例环…...

Kali Linux基础操作学习篇——alias命令
课前声明: 1、本分享仅做学习交流,请自觉遵守法律法规! 2、搜索:Kali 与编程,学习更多网络攻防干货! 3、Kali 与编程每天准时更新,敬请学习和关注! 正文部分 课前声明: 1…...

Android查看、修改KeyAlias
查看别名 cmd进入xxx.jks所在目录,输入命令 keytool -list -v -keystore xxx.jks -storepass 对应的密码 即可查看别名 修改别名 keytool -changealias -keystore xxx.jks -alias 当前别名 -destalias 修改后的别名 按提示输入xxx.jks密码后修改成功。...

关于mybatis注解之@alias别名用法
Springboot 整合mybatis的时候,关于别名的用法 此处列举比较常见的两种用法 1.配置文件定义别名 如图所示:映射所需实体的类名 2.实体类注解别名 如图所示:实体类直接加注解 这样Mapper.xml中的返回值就直接可以用你自己定义的别名了。 个…...

Nginx里的root/index/alias/proxy_pass的意思
1.【alias】 别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【alias】配置的路径。如:(注意alias配置最后一定要有/,而root可以没有) location /test/ { alias /home/sft…...
activity-alias详解及应用
activity-alias标签元素 众所周知,AndroidManifest是一个xml文件,它包含很多标签元素,如application、activity、receiver等,其中有一个叫做activity-alias,因为该标签平时很少用到,可能大家对这个标签还不…...

android aliasactivity作用,android activity-alias 的作用
activity-alias是android里为了重复使用Activity而设计的。当在Activity的onCreate()方法里,执行getIntent().getComponent().getClassName();得到的可能不是这个Activity的名字,有可能是别名的名字,例如:在AndroidMenifest.xml有…...

alias 的使用
alias 的使用 课程来自 https://www.jspang.com alias,以为别名,实际上就是给一个路由加上另一个url,当你使用这个url时,依然可以跳转到同一个组件。 我们来看这样的一个例子: 在路由配置文件 router.js 中&#x…...
Linux alias 的用法
Linux alias 的用法 作者: Sway 1. 啥是alias alias的英文意思是别名. 通俗来说 alias 的概念是让方便你写一段非常非常小的小程序 如 : sway:~$ alias alias lsls --colorauto这里的意思是当你输入 ls 的时候就等同输入 ls --colorauto 但是当我们切换用户的时候 alias …...

极光推送的别名alias和标签tag分别是什么意思
m http://docs.jpush.cn/pages/viewpage.action?pageId557241#...

Shell中alias介绍
Shell alias:给命令创建别名 alisa 用来给命令创建一个别名。若直接输入该命令且不带任何参数,则列出当前 Shell 进程中使用了哪些别名。现在你应该能理解类似ll这样的命令为什么与ls -l的效果是一样的吧 下面让我们来看一下有哪些命令被默认创建了别名…...

Linux alias命令简介
目录 显示当前系统别名列表:命令alias 或alias -p 创建别名 删除别名 修改别名的配置文件 Linux中alias是一种别称,我们可以为命令、脚本等设置一个别名,方便每次使用,相当于windows下创建一个快捷方式。alias 别名的最主要…...

Mac 下关于“_tkinter.TclError: couldn‘t open “.\B.gif“: no such file or directory”问题
这个问题主要是文件没有找到,可以尝试用完整的路径 imgs PhotoImage(file/Users/apple/Desktop/单机版五子棋/B.gif)...

tkinter打包为exe后找不到图片 tkinter_TclError:couldn‘t open “a.png“ no such file or directory
tkinter打包为exe后找不到图片 解决方法之一 将想要的图片放到exe同级的目录下,即dist文件夹中,在代码中的相对路径是相对于exe所在的文件夹...

“nacos is starting with standalone“ 此时不应有 \nacos-server-1.4.1\nacos“\logs\java_heapdump.hprof -XX:-U
问题产生环境 windows10 下启动nacos 时产生 问题描述 "nacos is starting with standalone" 此时不应有 \nacos-server-1.4.1\nacos"\logs\java_heapdump.hprof -XX:-UseLargePages"。产生原因 我的nacos目录有数字,所以无法启动 解决办法…...

nacos单机无法启动问题解决
问题一、双击startup.cmd闪现 1.描述 在下载完nacos压缩包解压后,双击bin目录下的startup.cmd文件时,闪现了一下就消失了 于是我用cmd打开这个文件,得到问题描述 2.解决 如上图所示,是java的环境变量问题,配好就解…...

div+css示例一(布局)
http://chaoji-liangbin.blog.163.com/blog/static/25239212201061191943391/ <% page language"java" pageEncoding"UTF-8"%><%page import"java.io.File"%><%!File[] configfiles;%><!DOCTYPE HTML PUBLIC "-//W3C...

【POJ No. 3468】 简单的整数问题 A Simple Problem with Integers
【POJ No. 3468】 简单的整数问题 A Simple Problem with Integers 北大OJ 题目地址 其实这道题之前也已经 做过了 https://blog.csdn.net/weixin_44226181/article/details/128112081 上次就 直接用的区间更新 和区间查询。这次 我们使用 分块方法实现一次。 【题意】 有N…...

打开vmware系统文件出现:“Invalid configuration file. ”的解决办法
打开vmware系统文件出现:“Invalid configuration file. ”的解决办法 打开虚拟机时报Invalid configuration file,这个错误 打开vmx文件,修改将里面的配置项,因为我用的是vmware 7 所以就把这个改成: virtualHW…...

用寄存器HAL库完成LED流水灯程序
重庆交通大学信息科学与工程学院 《嵌入式系统开发》课程 作业报告(第4周) 班 级: 通信工程2001 姓名-学号 : 阎桂董-632007030622 实验项目名称: 作业题目 实验项目性质: 设计性 实验所属课程…...

IPv6地址及其报文----1
IPv6 IPv6地址表示 IPv4地址表示: 二进制:10101100 00010000 00000001 00000001 十进制:172.16.1.1 IPv6地址表示: 使用:16进制表示,每16位为一段:共八段 每一段地址前面的0可以省略;若…...

百面机器学习 之 优化算法+标准化+正则化+损失函数
先来聊聊损失函数,然后是优化算法,接着额是正则化和标准化 1. 背景 优化算法做的事就是在 模型表征空间中找到模型评估指标最好的模型。这里就引出了什么是模型的表征空间,以及什么是评估指标了。只有正确地应用表征空间以及评估指标&#x…...

李宏毅机器学习笔记—第二节—When gradient is small
1.局部最小值和鞍点(Local Minimum And Saddle Point) 这一小节的部分属于Optimization,因此只讨论对于gradient descent的情况。 我们在Optimization的时候,总会发现一个问题,就是说随着你的数据的updata࿰…...

2021-07 李宏毅机器学习打卡Task03:误差来源、梯度下降
Task03 误差来源、梯度下降 学习地址 李宏毅机器学习B站视频地址李宏毅机器学习开源笔记地址论坛版块 误差error 误差来源 来源一:bias(一般见于underfitting) 在训练集上loss就很大 —> model bias来源二:variance(一般见于overfitting) 在训练…...

动手学习深度学习 04:多层感知机
文章目录01 多层感知机1、感知机总结2、多层感知机2.1、隐藏层2.1.1 线性模型可能会出错2.1.2 在网络中加入隐藏层2.1.3 从线性到非线性2.1.4 通用近似定理3、激活函数3.1、ReLU优缺点:3.2、sigmoid优缺点:3.3、tanh优缺点:总结02 多层感知机…...

Learn_PyTorch_3_深度学习基础
PyTorch入门总结31 激活函数1.1 Sigmoid函数1.2 tanh函数1.3 Relu(线性修正单元)1.4 Leaky_Relu1.5 ELU(指数线性单元)1.6 MAXOUT1.7 激活函数的选取2 梯度下降法2.1 批量梯度下降法(BGD)2.2 随机梯度下降法(SGD&#…...

误差、梯度下降、概率分类模型、logistic回归笔记
PS:学习内容来自李宏毅机器学习2019版 误差 误差的来源 平均误差(Average Error)会随着模型复杂增加呈指数上升趋势。更复杂的模型并不能给测试集带来更好的效果,而这些Error的主要来源是偏差(bias)和方差(variance)。 关于bias和variance,可以查看链接…...

10. Tips for Deep Learning(DL的技巧和优化方法)
Tips for Deep Learning 本文会顺带解决CNN部分的两个问题: 1、max pooling架构中用到的max无法微分,那在gradient descent的时候该如何处理? 2、L1 的Regression到底是什么东西 本文的主要思路:针对training set和testing set上的…...

3 0 XPlanner使用手册
一、 XPlanner简介 XPlanner 是一个基于Web的XP团队计划和跟踪工具。XP的开发概念如iteration、user stories等,XPlanner都提供了相对应的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。 XPlanner特点包括&#…...

阿里妈妈基于TensorFlow做了哪些深度优化?TensorFlowRS架构解析
一. 综述深度学习比传统的逻辑回归有着更强的模型刻画能力,同时也带来了计算力百倍提升的需求。相比图像、语音、视频等领域,搜索、广告、推荐等场景有着独特的场景特点: 样本规模和特征空间通常非常巨大,千亿样本、百亿特征并不罕…...

日本python程序员工资_年轻程序员赴日本工作有前途吗?
谢谢邀请!1、关于消费水平和工资水平。日本程序员从新卒到经验者,技术水平和经验、能力不同,工资每月20-70万不等。消费的话,自己做饭吃➕日常消费基本每个月5万完全够了。房租的话,地点不同价位不一样。但也都是可以承…...

在日本合法打工情况介绍
在日本学习,每年约有120天假期,加上约70个双休日,可以全天打工的时间约190天。170天上课,下午或晚上一般工作4小时,约工作680小时;190天假期,每天工作8小时,约工作1520小时。合计全年…...

聊聊我在日本的工作
转眼距离上一篇博客已经过去四年了 。这四年里我已经从一个职场菜鸟混成职场小油条。开个玩笑罢了。 来聊聊日本的职场吧,咱们聊也要有逻辑,分成 新入社员研修 ,主要的担当内容,职场同事关系,和工资福利介绍这几个大的…...

日本程序媛很吃香
最近认识了一个年过50的搞IT的日本女士。 她从20多岁开始从事服装设计,不是电脑上设计,完全左手尺子右手铅笔在纸上作画,一直到90年代,转行服装销售行业,到了40岁左右,因为老公是IT工程师,她也…...

日本年收56万IT工程师的1天
日本IT技术人员的年收大概在400万日元到1000万日元(人民币25万到60万)左右,年龄经验技术不同收入差异很大,今天要介绍的这位IT人学历3颗星,技术3颗星,经验5颗星,管理能力5颗星。 姓名:田中太郎(…...

闲扯淡 日本的工资
今天 老师晒了初进日本公司 的一个月的工资 哇塞 去各种税后 两万五千多 然后再有工资奖金 那一年得有多少钱啊 好好学日语吧 我们都是廉价劳动力啊 挣钱才是咱们的王道...

日本工资结构(转载--作者:郭昌华)
1 支給 基本给 调整给资格手当时间外手当 奖金(ボーナス) 奖金一般是工资的 2.5个月份的 也就是 基本给 x2.5的意思。手当 ( 补助) こちらも企業により項目のあるなしがありますが、 残業手当、役職手当、営業手当、資格手当、出張手当、住宅手当など 外…...

壮阳滋补吃海参
中医认为,海参味甘、微咸,性温,能补肾益精、养血润燥、补虚损、理腰脚,利大小便。据记载,海参具有健阳、滋阴、补血、调经、养胎、利产、促孕等效用,以之治肾虚阳痿、产后或病后体弱、肠燥便秘、糖尿病等&a…...

夏天这四件事会耗干你的阳气,尤其是第三件!
阴阳在人体是一个不可分割的整体,但各有侧重, 阴气主要反映物质的一面,表现人的精气神, 而阳气则突出反映能量,表现为各脏腑的功能状况。 阳气足,则脏腑功能好,阳气不足,脏腑功能就问…...

就且再幼稚一次
??1、也许??冗长而又闲散的等候,失往了工作的热忱,除却对小说和电影的兴致,总没有睡醒,总是不温不火的样子,从春天到秋天,好像我还在云荒大陆的历史里随着好汉彷徨,只是不知道那个世界什么时…...
用复数value一次给数据库插入多条记录
insert multi-records by sql,not UI,easy and multi-platform. 因为数据库表中一般都有与数据库实际语境无关的主键,并且设为自增,所以,我们插入值得时候一般不要人为地设置id的值,这就需要在表名后面加上要插入值的字段名。 用…...

java源文件中包含几个public_一个Java源文件中最多能有多少个public类。
主动扩散具有的特征是A.借助载体进行转运B.不消耗能量C.有饱和状态D.有结构和部位专属性E.由高浓质量控制是致力于满足()的一系列活动。A .业主要求B .施工方要C .管理要求D .质量要求在人防工程内禁止使用明火,不吸烟、少饮水,饮食的残余物、垃圾要集中…...

从一个骗子身上学到的
这篇文章是我在高铁上用手机打出来的,排版没那么好,见谅~ 在一个亲友群里看到有人在群里发了个婚礼邀请函链接,还以为家里谁又结婚了,好奇的就点进了进去。 通过标题和图片来成功博取了你的眼球点进去。点进去后是这样…...

152岁老人的壮阳术_28岁的老人如何每天赚50,000美元
152岁老人的壮阳术重点 (Top highlight)In 2013, Vietnamese game developer Dong Nguyen quietly released a mobile game called Flappy Bird.2013年,越南游戏开发商Dong Nguyen悄悄发布了一款名为Flappy Bird的手机游戏。 It was a simple but extremely addict…...

一个韭菜的自我修养!
韭菜,别名:丰本、草钟乳、起阳草、懒人菜、长生韭、壮阳草、扁菜等;属百合科多年生草本植物,具特殊强烈气味,根茎横卧,鳞茎狭圆锥形,簇生;鳞式外皮黄褐色,网状纤维质&…...

干货|一文搞定 uiautomator2 自动化测试工具使用
一、背景简介 Google 官方提供了一个 Android 自动化测试工具(Java 库),基于 Accessibility 服务,功能很强,可以对第三方 App 进行测试,获取屏幕上任意一个 App 的任意一个控件属性,并对其进行…...

ui和python怎么选择_uiautomator设备和选择器~Python详解
1、设备对象引入uiautomator,获取设备对象语法:from uiautomator import device as dd 即为设备对象1.1、获取设备信息语法:d.info返回值:{ udisplayRotation: 0,udisplaySizeDpY: 640,udisplaySizeDpX: 360,ucurrentPackageName:…...

uiautomator2使用api
uiautomator2使用api 原文地址:https://github.com/openatx/uiautomator2 1、 atx的将安装步骤:pip install --pre -U uiautomator2 # atx经常更新,所以用这个命令安装最新版手机接到电脑上之后,需要先运行一下命令 python -muiautomator2 in…...

python控制安卓_Python 简单的安卓操作
## 导入包from uiautomator importDevicefrom PIL importImageimportmathimportoperatorfrom functools importreduce## 比较图片defimage_compare(img1,img2):image1Image.open(img1)image2Image.open(img2)his1image1.histogram()his2image2.histogram()result math.sqrt(red…...

Unity Shader入门精要之Unity 提供的内置文件和变量
Unity系列文章目录 文章目录Unity系列文章目录前言5.3.1 内置的包含文件5.3.2 内置的变量二、Unity 提供的Cg/HLSL 语义5.5 程序员的烦恼:Debug5.6 小心:渲染平台的差异5.7 Shader 整洁之道参考前言 上一节讲述了如何在Unity 中编写一个基本的顶点/片元…...

【Python】【自动化测试】【uiautomator 2】 uiautomator2 的基础功能使用和封装(1)
系列文章目录 文章目录系列文章目录前言一、uiautomator2是什么?有什么作用?二、使用步骤1.引入库安装库:安装元素查看工具2.开始使用U2 python(1)连接设备(2)简单的封装总结前言 u2 现在googl…...

pythonandroid自动化测试仪器_安卓自动化测试,贺晓聪之uiautomator设备和选择器~Python详解...
1、设备对象引入uiautomator,获取设备对象语法:from uiautomator import device as dd 即为设备对象1.1、获取设备信息语法:d.info返回值:{ udisplayRotation: 0,udisplaySizeDpY: 640,udisplaySizeDpX: 360,ucurrentPackageName:…...

入门图形学:动态地形(二)
现在有时间把动态地形着色部分写了。 之前我们已经实现了网格控制部分,但是着色确实有问题的,如下: 一眼就看得出来,法向量是错的,因为我们构建平面网格的时候法向量全赋值: normals[index] …...

Unity局部高效实时阴影的思考和实现
无意间看到一篇文章,说是Unity5 demo中为了实现角色的良好阴影,单独给角色设计了一个角色阴影系统。而且使用的是比较老的技术,但效果很好。其实在很多时候,我们需要的并不是万能的阴影光照系统,而是局部能做到效果就行。 万能的好处在于任何情况都能看上去合理,但是相对…...

如何定价以吸引用户购买
如果把定价与用户买单联系在一起,这里面的学问则非常大。大家多少也都有类似的经历,比如说低价送,通过低价获取用户或市场;高价卖,找到愿意出高价的人;买一赠一、买二送一的捆绑式销售,这个在超…...

上海飞国内最远是哪里_上海至新疆的高铁新走法,比飞机便宜比卧铺干净舒适的聪明选择...
既然聊开了新疆的话题,很多朋友都在问我新疆的走法和很多细节上的问题,那么小编一鹿今天就和大家一起来说说去新疆的注意事项和要点,希望能帮助到那些即将去新疆旅游的朋友们。从哪里谈起呢?先说说去新疆的大交通吧。去新疆除了坐…...

巴菲特的炒股绝招
巴菲特的炒股绝招 不看股票看公司不看价格看价值安全第一,利润第二 posted on 2008-12-14 15:51 阿牛-专注金融行业开发 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/rockniu/archive/2008/12/14/1354764.html...

华罗庚 计算机,华罗庚有关计算机的故事
满意答案dlrxvz30302013.11.01采纳率:40% 等级:12已帮助:12205人华罗庚勤奋成才小时候,华罗庚家境贫寒,初中未毕业便辍学在家,辍学之后,他对数学产生了强烈的兴趣,而且也懂得用功…...
中泰资管天团丨如何用量化复制巴菲特?
中泰资管天团丨如何用量化复制巴菲特? 原创 2018-03-29 文/张学明 中泰证券资管 本文作者张学明,系中泰资管权益投资部研究员。本栏目主要谈投资逻辑、理念、策略、方法,不荐股。每周四更新 题目是微信小编加的,本文作者是个…...
巴菲特午餐取消,吃饭行情一地鸡毛
今天凌晨,距离约定巴菲特午餐的7月25日还有不到两天,各个微信群突然被“孙宇晨因病取消巴菲特午餐”的消息截图刷屏。 在这个微妙的时间,突然爆出这个消息,不免让人怀疑消息的真实性。核实微博信息才发现消息竟然是真的࿰…...

巴菲特炒股名言
巴菲特炒股名言(被两大实力机构强力推荐的3只超牛) [qq:1405355221] [代客理财赚钱三七分层] [今日推荐牛股(名单)QQ:1405355221] [跟着老股民做股票QQ:1405355221] 选好一只价值被低估的股票之后,一定要坚持自己的原则ÿ…...

“小马哥快充站”走进古都西安,德国马牌携手途虎揭秘轮胎黑科技
随着新能源汽车在中国市场的持续深耕,越来越多的车主开始尝试新能源出行,尽享电动化和智能化生活方式带来的便捷。近年来,在千年古城西安,车主们对新潮出行方式的接受程度明显提高。根据公开数据,2020年新能源乘用车销…...

轮胎品牌怎么选?轮胎规格怎么看……看完本篇你就了解了
轮胎是汽车关键的零件之一,决定着车辆的寿命和驾驶者的安全,在轮胎选购上也是有一定的技巧的。比如轮胎品牌怎么选、轮胎规格怎么看、轮胎花纹怎么看、轮胎的材质等等,都是我们选购时重点关注的问题。 轮胎品牌怎么选 小编建议,…...

网购轮胎需要注意什么?韩泰hankook轮胎教你专业辨别真假轮胎
电商平台的兴起,让购物变得更加快捷,只要你能想到的几乎都能通过网购获得。很多轮胎企业借助电商平台的优势,开始发展线上销售渠道,提高营销能力。但部分车主反馈,网购轮胎总会出现各种质量问题。如何识别真假轮胎&…...

轮胎十大排名品牌韩泰轮胎为你揭秘:车辆高速行驶时发飘是怎么回事?
很多车主在高速上开车时,都遇到过这样的状况:车速加快时,车子直行不稳定,方向很难控制,出现发飘的现象,让人很没有安全感。为什么汽车一跑高速就发飘?轮胎十大排名品牌之一韩泰轮胎来给大家分析…...

全球十大轮胎排名一览,快来pick你的心选
对于汽车来说,轮胎的重要性不言而喻。随着汽车行业的发展,轮胎品牌越来越多,各品牌轮胎,性能各异,品质不一。盘点全球轮胎十大排名,给大家介绍一下全球十大轮胎品牌有哪些,为大家在今后挑选轮胎…...

十大轮胎排名韩泰提醒你:温度骤降,轮胎也要正确过冬!
2020年即将过去,很多地区也迎来了第一场降雪。随着温度骤降,我们在添衣保暖的同时,也别忘了保护自己的轮胎哦,正确的方式才能让轮胎更好地“过冬”!作为十大轮胎排名的韩泰轮胎也为大家带来了一些冬季胎保养指南&#…...

360和周鸿祎放弃的增资哪吒汽车,5月销量已超小鹏零跑蔚来
出品 | 何玺 排版 | 叶媛 近日,老牌互联网安全企业360放弃增资,以“0元”价格转让哪吒汽车3.532%的股权一事备受业界关注。 360为何放弃增资?这事对哪吒汽车又会带来怎样的影响?我们一起来看看。 01 360放弃增资,哪…...

黑猫股份:借力轮胎转移,跻身炭黑全球八强
2007-9-14 14:55:00 代码:002068 作者:陈玉辉 来源: 东方证券 出处: 顶点财经加入收藏复制链接给好友跳到低部黑猫股份炭黑产能已经达到26万吨,在全球炭黑行业中的排名上升到第八位左右,国内市场占有率超过10%。随着全球轮胎产能继续向国内转移&#x…...

全球与中国汽车竞赛轮胎市场运营战略规划与投资可行性分析报告2022-2028年版
全球与中国汽车竞赛轮胎市场运营战略规划与投资可行性分析报告2022-2028年版 mmmmmmmmmmmmmmmmmmmmmmmmm 【 2021年,全球汽车竞赛轮胎市场规模达到了 亿元,预计2028年将达到 亿元,年复合增长率(CAGR)为 %。 本报告研究全球与中国市场汽车竞赛…...

(已解决)RedisTemplate写入数据 \xAC\xED\x00\x05t\x00 序列化问题
先看现象: Spring使用RedisTemplate进行数据缓存的时候,发现缓存的数据有序列化问题 话不多说,上图 不仅仅是key出现这种序列化问题,而且value也会出现这种情况 先把解决方案放着,要不有的人嫌事多 Configuration p…...

RedisTemplate操作redis时,key值出现\xac\xed\x00\x05t\x00等前缀
RedisTemplate操作redis时,key值出现\xac\xed\x00\x05t\x00等前缀 其实这个不影响key的读取和删除,但是不太美观。主要原因是因为RedisTemplate默认序列化方式用的是JdkSerializationRedisSerializer,我们把默认的序列化方式改成Jackson2Json…...

C/C++ BeaEngine 反汇编引擎
反汇编引擎有很多,这个引擎没有Dll,是纯静态链接库,适合r3-r0环境,你可以将其编译为DLL文件,驱动强制注入到游戏进程中,让其快速反汇编,读取出反汇编代码并保存为txt文本,本地分析。…...

关于 wkhtmltopdf:html 转 pdf 的命令行工具
一、什么是 wkhtmltopdf? wkhtmltopdf 是一个开源的,使用Qt WebKit 渲染引擎,把 html 转换为 pdf 文件的命令行工具。wkhtmltopdf 还有一个双胞胎兄弟 wkhtmltoimage,顾名思义,它可以把 html 转换为 image 图片。 简…...
财务报表开发实例分析:几个通用维度介绍与关键点
财务报表分析 财务分析是以会计核算和报表资料及其他相关资料为依据,采用一系列专门的分析技术和方法,对企业等经济组织过去和现在有关筹资活动、投资活动、经营活动、分配活动的盈利能力、营运能力、偿债能力和增长能力状况等进行分析与评价的经济管理活…...

人脸识别系统设计实践:代码生成训练PNET的图片数据
上一节我们了解了PNET的基本原理,本节看看如何生成PNET需要的训练数据。总体而言我们需要产生两部分数据,一部分图片里面包含人脸,另一部分不包含人脸。这里的“包含”或“不包含”并不是指图片中完全没有人脸,而是图片中人脸占据…...

Imageloader8-压缩图片
通过采样率压缩图片的步骤: 将BitmapFactory.Options的inJustDecodeBounds参数设置为true并加载图片从BitmapFactory.Options中取出图片的原始宽和高 ,分别对应outWidth和outHeight根据采样率的就着并结合目标View的所需大小计算出采样率inSampleSize将…...

设置matlab画出的figure图像导出图片的大小
最近用 matlab画图,需要导出图片,但是发现经过拉伸或者改变了标注的位置以避免挡住图形之后,无法确保导出的每一张图片具有相同的大小。就算可以手动调整图片大小,由于白色背景,也无法确保图片并列起来之后在论文或者需…...

golang 百万分比率计算代码示例
package mainimport "fmt"func main() {fmt.Println("Hello, 世界")var val uint64 730var ratio uint64 50000res : val * ratio/1e6fmt.Println("res:", res)var val2 float64 730var ratio2 float64 50000res2 : val2 * ( ratio2/1000000…...

博鳌亚洲论坛AI“常驻嘉宾”小i机器人袁辉,今年连续应邀出席四届
3月26日至29日,博鳌亚洲论坛2019年年会将在海南省博鳌镇举办。本届博鳌亚洲论坛以“共同命运、共同行动、共同发展”为主题,拟设开放型世界经济;多边主义、区域合作、全球治理;创新驱动;高质量发展;热点前沿…...

“AI+”时代来了吗?小i机器人袁辉博鳌亚洲论坛揭秘
3月26日至29日,博鳌亚洲论坛2019年年会将在海南省博鳌镇举办。本届博鳌亚洲论坛以“共同命运、共同行动、共同发展”为主题,拟设开放型世界经济;多边主义、区域合作、全球治理;创新驱动;高质量发展;热点前沿…...

香港TVB专访袁辉:科技需要商业回报,但变现不易
在今年1月14-15日由香港特别行政区政府及香港贸易发展局主办的第十二届亚洲金融论坛上,小i机器人创始人、董事长袁辉接受了香港TVB《科创导航》栏目的专访。袁辉分享的关于人工智能技术的发展趋势以及未来如何实现科技转化成商业回报等观点,得到了嘉宾和…...

Android筑基——ContentProvider 的跨进程启动过程和数据操作方法调用过程(基于api21)
目录1.前言2.正文2.1 小例子2.2 代码分析2.2.1 ContextWrapper.getContentResolver() 方法2.2.2 ContextImpl.getContentResolver() 方法2.2.3 ContentResolver.query() 方法2.2.4 ContentResolver.acquireUnstableProvider() 方法2.2.5 ApplicationContentResolver.acquireUns…...

开始篇
早年读大学的时候拜读过俞甲子老师的大作《程序员的自我修养》一书,但是当时由于没有实际的工作经验,不能明白这些看似理论的,空洞的知识有什么用,所以只是泛泛地看了一下,并没有实际的思考。如今一晃眼已经工作两年多…...

Flutter Engage China 开发者常见问题解答 | 下篇
再次感谢大家对 Flutter Engage China 活动[1] 的关注和积极参与!我们在活动前后收到了很多来自开发者的反馈和问题,Flutter 团队和演讲嘉宾在直播 Q&A 环节中也针对部分问题在第一时间给出回复。现在我们将一些开发者关心的问题和回复整理出来分享给…...

Android系统架构开篇(深度好文,值得收藏,kotlin线程安全
二、Android架构 Google提供的5层架构图很经典,但为了更进一步透视Android系统架构,本文更多的是以进程的视角,以分层的架构来诠释Android系统的全貌,阐述Android内部的环环相扣的内在联系。 系统启动架构图 图解: A…...

Android系统架构开篇(深度好文,值得收藏,2019-2021历年阿里Android面试真题
System Server进程,是由Zygote进程fork而来,System Server是Zygote孵化的第一个进程,System Server负责启动和管理整个Java framework,包含ActivityManager,WindowManager,PackageManager,Power…...

Android系统架构开篇
一、引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈&…...

一线大厂BAT资深移动开发者倾情打造,教你从0构建App
跨平台开发一直是一个非常热门的话题,与此相关的各种框架也不断涌现,然而相关的大部分解决方案需要在性能、开发效率和跨端一致性上方面做出取舍。Flutter 的出现打破了这一僵局,其自带的 Skia 引擎具有优异的渲染能力和精简的渲染管线&#…...
Binder从入门到放弃(细节篇)
前言 Binder从入门到放弃包括了上下篇,上篇是框架部分,下篇通过几个典型的binder通信过程来呈现其实现细节,即本文。 一、启动service manager 流程 Service manager进程和binder驱动的交互如下: 在安卓系统启动过程中,…...