论文阅读《机器人状态估计中的李群》

目录

  • 摘要
  • 1 介绍
  • 2 微李理论
    • 2.1 李群
    • 2.2 group actions
    • 2.3 正切空间和李代数

摘要

李群是一个古老的数学抽象对象,可以追溯到19世纪,当时数学家 Sophus Lie奠定了连续变换群理论的基础。多年后,它的影响已经蔓延到科学和技术的各个领域。在机器人领域,我们最近正在经历一个重要的趋势,至少在估计领域,特别是在导航的运动估计方面。然而,对于绝大多数机器人专家来说,李群是高度抽象的结构,因此难以理解和使用。

在机器人估计技术中,通常不需要充分利用李群理论的能力,因此需要努力选择合适的阅读材料。在本文中,我们将通过李理论的最基本原理,目的是传达清晰和有用的想法,并留下一个重要的李理论语料库。即使有这样的缺陷,这里包含的材料已经被证明在机器人的现代估计算法中非常有用,特别是在SLAM,视觉里程计等领域。

除了这个微李理论之外,我们还提供了一个章节,其中包含一些应用示例,以及机器人中使用的主要李群的大量公式参考,包括大多数雅可比矩阵和容易操作它们的方法。我们还提供了一个新的C++模板库,实现了这里描述的所有功能。

1 介绍

在过去的几年里,机器人社区在正确地表述估计问题方面做出了显著的努力。这是由于对解决方案的精度、一致性和稳定性的要求越来越高。事实上,对状态和测量、与它们相关的函数及其不确定性进行适当的建模,对于实现这些目标至关重要。这导致了涉及所谓的“流形”的设计,在这种情况下,流形不亚于李群的光滑拓扑表面,状态表示在这里演变。依托李理论,我们能够构建一个严格的微积分语料库,以精确和轻松地处理不确定性、导数和积分。通常,这些工作集中在众所周知的旋转 S O ( 3 ) SO(3) SO(3)和刚性运动 S E ( 3 ) SE(3) SE(3)流形上。

当你第一次听说李群时,试着从不同的角度来看待它们是很重要的。拓扑学的观点,见图1,涉及流形的形状,并传达了它与切空间和指数映射关系的强大直觉。代数观点涉及群运算及其具体实现,允许利用代数性质来开发封闭形式的公式或简化它们。几何观点在机器人技术中特别有用,它将群元素与物体或参考系的位置、速度、方向和/或其他修改联系起来。原点坐标系可以用群的同一性来标识,流形上的任何其他点都代表某个“局部”坐标系。通过采用这些类比,李群的许多数学抽象可以更接近于向量空间、几何、运动学和其他更经典领域中的直观概念。

在这里插入图片描述
图1 李群与李代数关系的表示。李代数 T ε M T_{\varepsilon}\mathcal{M} TεM(红色平面)是李群流形 M \mathcal{M} M(这里用蓝色球体表示)在值 ε \varepsilon ε处的切空间。通过指数映射,经过李代数原点的直线 v t vt vt,变为沿着流型自测地线的路径 e x p ( v t ) exp(vt) exp(vt)。相反的,李群中的每一个元素在李代数中都能找到一个等价。这种关系是如此深刻,以至于(几乎)群中的所有运算,它是弯曲的和非线性的,在李代数中有一个完全等价的,李代数是一个线性向量空间。虽然 R 3 \mathbb{R}^3 R3中的球不是李群(我们只是把它作为一种可以在纸上画出来的表示),但 R 4 \mathbb{R}^4 R4中的球是李群,并描述了单位四元数群——见图4和例5。

李理论绝不简单。为了对李理论可能是什么有一个最起码的概念,我们可以考虑以下三个参考文献。第一篇,Abbaspour的《基本李理论》,它有400多页。第二篇,Howe的《非常基本的李理论》,共24页(密集),有时被认为是必读的介绍。第三篇,更现代、更著名的Stillwell的《朴素李理论》有200多页。有了这些被标记为“基本”、“非常基本”和“朴素”的先例,这篇只有17页的论文的目的是进一步简化李理论(因此我们在标题中使用了形容词“微”)。我们有两种方法。首先,我们从LT中选择一小部分材料。这个子集是如此之小,以至于它仅仅是在探索LT的潜力。然而,它对于我们在机器人技术中处理的估计问题中的不确定性管理(例如惯性预积分,里程计和SLAM,视觉伺服等)似乎非常有用,从而实现最优优化器的优雅和严格设计。其次,我们以教学的方式进行解释,并带有大量冗余,以进一步缩小LT的理解差距,我们认为这仍然是必要的。也就是说,我们坚持朝着这个方向努力,命名一个典型的标题,Stillwell的,并提供一个更简化的版本。本文主体是通用的,尽管我们试图将抽象级别保持在最低限度。当应用于已知的群(旋转和运动矩阵、四元数等)时,插入的例子可以作为一般概念的基础。此外,大量带有冗长标题的图表再次解释了相同的概念。我们特别关注雅可比矩阵的计算(这个主题在中没有讨论),这对于大多数最优估计是必不可少的,也是设计新算法时的许多麻烦的来源。在这一章中,我们给出了机器人定位和建图的一些应用实例,实现了EKF和基于LT的非线性优化算法。最后,几个附录包含了机器人中最常用群的相关细节的大量参考:单位复数,四元数,2D和3D旋转矩阵,2D和3D刚性运动矩阵,以及平凡的平移群。

然而,我们对李理论最重要的简化是在范围方面。以下来自Howe的段落可以帮助我们说明我们留下的内容:“李理论的本质现象是,人们可以以一种自然的方式将李群 G \mathcal{G} G与它的李代数 g \mathcal{g} g联系起来。李代数 g \mathcal{g} g首先是一个向量空间,其次被赋予一个称为李括号的双线性非结合积[…]。令人惊奇的是,李群 G \mathcal{G} G几乎完全由李代数 g \mathcal{g} g和它的李括号决定。因此,在许多情况下,我们可以用李代数 g \mathcal{g} g来代替李群 G \mathcal{G} G。因为李群 G \mathcal{G} G是一个复杂的非线性对象,而李代数 g \mathcal{g} g只是一个向量空间,所以用李代数 g \mathcal{g} g来处理通常要简单得多。这是李理论力量的来源之一。”在[3]中,Stillwell甚至谈到了“李理论的奇迹”。在这项工作中,我们有效地将李代数降至第二平面,以支持其等效向量空间 R n \mathbb{R}^n Rn,并且根本不引入李括号。因此,李群和它的李代数之间的联系将不会在这里做得像它应该做的那样深刻。我们的立场是,考虑到我们预见的目标应用领域,这种阅读材料通常是不必要的。此外,如果包括在内,那么我们将无法实现清晰和有用的目标。由于它们的抽象或微妙,读者将不得不进入数学概念,这是不必要的复杂。

我们的努力与最近其他关于该主题的工作一致,这些工作也确定了使LT更接近机器人专家的需求。我们的方法旨在使本文的目标受众熟悉:精通状态估计(卡尔曼滤波,基于图的优化等)的受众,但还不熟悉李理论。为此,我们在符号上做了一些改进,特别是在导数的定义上,使它接近向量的对应项,从而使链式法则清晰可见。如前所述,我们的选择实际上避免了李代数的材料,而更喜欢在它的同构切向量空间 R n \mathbb{R}^n Rn上工作,这是我们最终表示不确定性或(小)状态增量的地方。所有这些步骤在精度和准确性上都绝对不会有任何损失,我们相信它们使得对LT的理解和其工具的操作变得更容易。

在这里插入图片描述
图2 流形 M \mathcal{M} M和向量空间 T X M \mathcal{T}_{\mathcal{X}}\mathcal{M} TXM(在这种情况下 ≅ R 2 \cong \mathbb{R}^2 R2)相切于点 X \mathcal{X} X。同时,也展示了侧切图。速度元素 X ˙ = ∂ X / ∂ t \dot{\mathcal{X}}=\partial{X}/\partial{t} X˙=X/t不属于流形 M \mathcal{M} M,但属于正切空间 T X M \mathcal{T}_{\mathcal{X}}\mathcal{M} TXM

本文附带了一个新的开源C++头文件库,称为manif,可以在https://github.com/artivis/manif上找到。manif实现了广泛使用的群 S O ( 2 ) SO(2) SO(2) S O ( 3 ) SO(3) SO(3) S E ( 2 ) SE(2) SE(2) S E ( 3 ) SE(3) SE(3),并支持创建解析雅可比矩阵。该库的设计是为了易用性、灵活性和性能。

2 微李理论

2.1 李群

李群既包含了群的概念也包含了光滑流形的概念:李群 G \mathcal{G} G是一个光滑流形,它的元素满足群公理。在将这两个概念结合在一起之前,我们将简要介绍它们。

一方面,可微流形或光滑流形是局部类似于线性空间的拓扑空间。读者应该能够想象出流形的概念(图2):它就像一个弯曲的、光滑的(超)表面,没有边缘或尖峰,嵌入在更高维度的空间中。在机器人技术中,我们说我们的状态向量在这个表面上演化,也就是说,流形描述或由施加在状态上的约束来定义。例如,具有单位范数约束的向量定义半径为1的球流形。流形的光滑性意味着在每一个点上存在唯一的切空间。这个空间是一个线性或向量空间,在这个空间上我们可以做微积分。

另一方面,群 ( G , ∘ ) (\mathcal{G},\circ) (G,)是带有操作 ∘ \circ 的集合 G \mathcal{G} G。对于 X , Y , Z ∈ G \mathcal{X,Y,Z}\in \mathcal{G} X,Y,ZG,它满足如下定理,
c l o s u r e u n d e r ∘ : X ∘ Y ∈ G (1) closure\ under\ \circ : \ \mathcal{X} \circ \mathcal{Y} \in \mathcal{G} \tag{1} closure under : XYG(1)
i d e n t i t y ε : ε ∘ X = X ∘ ε = X (2) identity\ \varepsilon : \ \varepsilon \circ \mathcal{X} = \mathcal{X} \circ \varepsilon = \mathcal{X} \tag{2} identity ε: εX=Xε=X(2)

i n v e r s e X − 1 : X − 1 ∘ X = X ∘ X − 1 = ε (3) inverse \ \mathcal{X}^{-1}: \ \mathcal{X}^{-1} \circ \mathcal{X}= \mathcal{X} \circ \mathcal{X}^{-1} = \varepsilon \tag{3} inverse X1: X1X=XX1=ε(3)

结合性 : ( X ∘ Y ) ∘ Z = X ∘ ( Y ∘ Z ) (4) 结合性: (\mathcal{X} \circ \mathcal{Y}) \circ \mathcal{Z} = \mathcal{X} \circ (\mathcal{Y} \circ \mathcal{Z}) \tag{4} 结合性:(XY)Z=X(YZ)(4)

在李群中,流形在每个点上看起来都是一样的(例如在球面上,参见例1和例2),因此任何点上的所有切空间都是相似的。群结构规定流形元素的组合仍然在流形上,即公式(1);并且每个元素在流形中也有一个逆,公式(3)。这些元素中的一个特殊元素是单位元,即公式(2),因此切空间中的一个特殊元素是单位元处的切,我们称之为李群的李代数。李群结合了光滑流形的局部性质,使我们能够进行微积分,同时结合了群的全局性质,使我们能够对远处的物体进行非线性组合。

在这里插入图片描述
图3 S 1 S^1 S1流形是平面 C \mathbb{C} C中的单位圆(蓝色),其中单位复数存在 z ∗ z = 1 z*z=1 zz=1。李代数 s 1 = T ε S 1 \mathcal{s}^1=T_{\varepsilon}S^{1} s1=TεS1是虚数 i R i\mathbb{R} iR的线(红色),任何切空间 T S 1 TS^1 TS1都同构于直线 R \mathbb{R} R(红色)。切向量(红色段)包裹流形,形成圆弧(蓝色弧)。映射 e x p exp exp l o g log log(箭头)将 i R i\mathbb{R} iR的元素映射(包裹和展开)到 S 1 S^1 S1的元素(蓝色弧)。单位复数之间的增量通过复合和指数映射在切空间中表示(针对这个,我们将定义特殊算子 ⊕ \oplus ⊖ \ominus )。见正文解释,图4为类似的群。

示例1:单位复数群 S 1 S^1 S1 李群的第一个例子是复数乘法下的单位复数群,这是最容易想象的(图3)。单位复数的形式是 z = c o s θ + i s i n θ z=cos\theta+isin\theta z=cosθ+isinθ

action:向量 x = x + i y \mathbf{x}=x+iy x=x+iy在平面上旋转一个角度 θ \theta θ,通过复数乘法, x ′ = z x \mathbf{x}'=\mathbf{z}\mathbf{x} x=zx

group facts:单位复数的乘积是一个单位复数,identity是1,其逆是共轭 z ∗ \mathbf{z}^{*} z

manifold facts:单位范数约束定义了复平面上的单位圆(可以看作是1球,因此称为 S 1 S^1 S1)。这是二维空间中的一自由度曲线。单位复数在这个圆上随时间变化。群(圆)局部类似于线性空间(切线),但不是全局的。

2.2 group actions

重要的是,李群具有变换其他集合元素的能力,例如产生旋转、平移、缩放和它们的组合。它们被广泛应用于机器人技术中,无论是2D还是3D。

给定李群 M \mathcal{M} M和集合 V \mathcal{V} V,我们注意到 X ⋅ v \mathcal{X}\cdot v Xv X ∈ M \mathcal{X} \in \mathcal{M} XM v ∈ V v\in \mathcal{V} vV的影响:

⋅ : M × V → V ; ( X , v ) ↦ X ⋅ v (5) \cdot : \mathcal{M} \times \mathcal{V} \rightarrow \mathcal{V}; \ (\mathcal{X},v) \mapsto \mathcal{X} \cdot v \tag{5} :M×VV; (X,v)Xv(5)

对于群运算 ⋅ \cdot ,它必须满足以下公理:
i d e n t i t y : E ⋅ v = v (6) identity : \ \mathcal{E} \cdot v=v \tag{6} identity: Ev=v(6)
兼容性 : ( X ∘ Y ) ⋅ v = X ⋅ ( Y ⋅ v ) (7) 兼容性: \ (\mathcal{X} \circ \mathcal{Y}) \cdot v=\mathcal{X} \cdot (\mathcal{Y}\cdot v) \tag{7} 兼容性: (XY)v=X(Yv)(7)

常见的例子有旋转矩阵组 S O ( n ) SO(n) SO(n)、单位四元数组和刚体运动组 S E ( n ) SE(n) SE(n)。它们各自对向量的作用满足:
S O ( n ) : r o t a t i o n m a t r i x R ⋅ x ≜ R x SO(n) : \ rotation\ matrix \ \ \ \ \ \ \ \mathbf{R} \cdot \mathbf{x} \triangleq \mathbf{Rx} SO(n): rotation matrix       RxRx
S E ( n ) : E u c l i d e a n m a t r i x H ⋅ x ≜ R x + t SE(n): \ Euclidean \ matrix \ \ \ \ \mathbf{H}\cdot \mathbf{x} \triangleq \mathbf{Rx+t} SE(n): Euclidean matrix    HxRx+t
S 1 : 单位复数      z ⋅ x ≜ z x S^1: \ 单位复数 \ \ \ \ \ \mathbf{z\cdot x} \triangleq \mathbf{zx} S1: 单位复数     zxzx
S 3 : 单位四元数       q ⋅ x ≜ q x q ∗ S^3: \ 单位四元数\ \ \ \ \ \ \mathbf{q\cdot x} \triangleq \mathbf{qxq^*} S3: 单位四元数      qxqxq

更详细的说明见表1和附录。

在这里插入图片描述
图4 在四元数空间 H \mathbb{H} H中,流形 S 3 S^3 S3是一个单位的三维球体(蓝色)。对于单位四元数,满足 q ∗ q = 1 \mathbf{q^*q}=1 qq=1。李代数是纯虚四元素空间 i x + j y + k z ∈ H p ix+jy+kz\in \mathbb{H}_p ix+jy+kzHp,它与超平面 R 3 \mathbb{R}^3 R3(红色网格)同构。任何其他正切空间 T S 3 TS^3 TS3也同样与 R 3 \mathbb{R}^3 R3同构。正切向量(红色段)将流形包裹在测地线(虚线)上。中间和右边的图形显示了通过测地线的侧切(注意它与图3中的 S 1 S^1 S1有多相似)。指数映射将 H p \mathbb{H}_p Hp中的元素映射到 S 3 S^3 S3中;对数映射则相反。四元数的增量通过运算符 ⊕ \oplus ⊖ \ominus 表示在正切空间中。

示例2:单位四元数群 S 3 S^3 S3 李群的第二个例子,也相对容易可视化,是四元数乘法下的单位四元数群(图4)。单位四元数用 q = c o s ( θ / 2 ) + u s i n ( θ / 2 ) \mathbf{q}=cos(\theta/2)+\mathbf{u}sin(\theta/2) q=cos(θ/2)+usin(θ/2)表示,其中 u = i u x + j u y + k u z \mathbf{u}=iu_x+ju_y+ku_z u=iux+juy+kuz为统一的轴, θ \theta θ为旋转角度。

Action:向量 x = i x + j y + k z \mathbf{x} = ix + jy + kz x=ix+jy+kz通过双四元数积 x ′ = q x q ∗ \mathbf{x}' = \mathbf{q x q^*} x=qxq在三维空间中绕单位轴 u \mathbf{u} u旋转一个角度 θ \theta θ

Group fact:单位四元数的乘积是单位四元数。identity是1。单位四元数的逆是它的共轭 q ∗ \mathbf{q^*} q

Manifold fact:单位范数约束定义了三维球面 S 3 S^3 S3,即四维空间中的球面三维曲面或流形。单位四元数在这个表面上随时间演化。群(球)局部类似于线性空间(切超平面 R 3 ⊂ R 4 \mathbb{R}^3 \subset \mathbb{R}^4 R3R4),但不是全局。群构成(1)可被视为群对自身的作用, ∘ : M × M → M \circ:\mathcal{M × M} \rightarrow \mathcal{M} :M×MM。另一个有趣的作用是伴随作用,我们将在第2.6节中看到。

2.3 正切空间和李代数

给定在李群流形 M \mathcal{M} M上运动的点 X ( t ) \mathcal{X}(t) X(t),其速度 X ˙ = ∂ X / ∂ t \dot{\mathcal{X}} = \partial{\mathcal{X}} / \partial{t} X˙=X/t属于在 X \mathcal{X} X点处与 M \mathcal{M} M相切的空间(图2),我们记为 T X M T_{\mathcal{X}}\mathcal{M} TXM。流形的平滑性,即没有边或尖峰,意味着在每个点上存在唯一的正切空间。这种切空间的结构在任何地方都是一样的。

表1 二维和三维运动中的典型李群,包括平凡的 R n \mathbb{R}^n Rn。参见附录以获得完整的参考资料。
在这里插入图片描述

在这里插入图片描述
图5 设点 z ∈ S 1 \mathbf{z}\in S^1 zS1以恒定的旋转速率 ω \omega ω移动, z ( t ) = c o s ω t + i s i n ω t \mathbf{z}(t) = cos\omega t + isin\omega t z(t)=cosωt+isinωt。它通过1和 z \mathbf{z} z时的速度分别在切空间 T 1 S 1 T_1S^1 T1S1 T z S 1 T_{\mathbf{z}}S^1 TzS1中。在 T z S 1 T_{\mathbf{z}}S^1 TzS1情况下,全局系下的速度表示为 z ˙ = z i ω = − ω s i n ω t + i ω c o s ω t \dot{\mathbf{z}}=\mathbf{z}i\omega=-\omega sin\omega t+i \omega cos\omega t z˙=z=ωsinωt+cosωt,局部系为 z v ∧ = i ω ^\mathbf{z}\mathbf{v}^\wedge=i\omega zv=。它们之间的联系为 z v ∧ = z − 1 z ˙ = z ∗ z ˙ ^\mathbf{z}\mathbf{v}^\wedge=\mathbf{z}^{-1}\dot{\mathbf{z}}=\mathbf{z}^*\dot{\mathbf{z}} zv=z1z˙=zz˙。在 T 1 S 1 T_1S^1 T1S1的情况下,它们之间的联系是 1 v ∧ = z ˙ = i ω ^1\mathbf{v}^\wedge=\dot{\mathbf{z}}=i\omega 1v=z˙=。显然,所有切空间的结构都是 i R i\mathbb{R} iR,也就是李代数。这也是 z ˙ \dot{\mathbf{z}} z˙在单位矩阵处的结构,这就是为什么李代数被定义为单位阵处的切空间。

李代数 m \mathfrak{m} m。单位矩阵的切空间, T ε M T_{\varepsilon}\mathcal{M} TεM,称为 M \mathcal{M} M的李代数,记为 m \mathfrak{m} m
李代数 : m ≜ T ε M (8) 李代数: \ \mathfrak{m} \triangleq T_{\varepsilon}\mathcal{M} \tag{8} 李代数: mTεM(8)
每个李群都有其对应的李代数。我们通过以下事实将李群与其李代数联系起来(见图1和图6):

(1)李代数 m \mathfrak{m} m是一个向量空间。

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

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

相关文章

智能零售柜商品识别

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

综合案例铁锅炖(CSS项目大杂烩)

小工具:snipaste 全世界最好用的截图工具来了 Snipaste是一个强大简单的截图工具,方便的点就在于可以把截图贴回屏幕上 常用快捷方式有这些: 1.F1截图,同时测量大小,设置箭头,文字书写 2.F3在桌面置顶显示…

稀疏视角CBCT重建的几何感知衰减学习|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 Geometry-Aware Attenuation Learning forSparse-View CBCT Reconstruction 稀疏视角CBCT重建的几何感知衰减学习 01 文献速递介绍 稀疏视角锥形束计算机断层扫描(CBCT)重建的几何感知学习方法 锥形束计算机断层扫描(CBCT&a…

河南省的一级科技查新机构有哪些?

科技查新,简称查新,是指权威机构对查新项目的新颖性作出文献评价的情报咨询服务。这一服务在科研立项、成果鉴定、项目申报等方面发挥着至关重要的作用。河南省作为中国的重要科技和教育基地,拥有多个一级科技查新机构,为本省及全…

https网站 请求http图片报错:net::ERR_SSL_PROTOCOL_ERROR

问题描述 场景: https网站,请求http图片资源报错:net::ERR_SSL_PROTOCOL_ERROR 原因: Chrome 81 中,对混合内容资源加载策略进行了改变,会自动升级到 https:// ,如果无法通过 https:// 加载&am…

【机器学习】机器学习中用到的高等数学知识-3.微积分 (Calculus)

3. 微积分 (Calculus) 导数和梯度:用于优化算法(如梯度下降)中计算损失函数的最小值。偏导数:在多变量函数中优化目标函数。链式法则:在反向传播算法中用于计算神经网络的梯度。 导数和梯度:用于优化算法…

华为大咖说 | 浅谈智能运维技术

本文分享自华为云社区:华为大咖说 | 浅谈智能运维技术-云社区-华为云 本文作者:李文轩 ( 华为智能运维专家 ) 全文约2695字,阅读约需8分钟 在大数据、人工智能等新兴技术的加持下,智能运维(AI…

WebStorm 如何调试 Vue 项目

前言 在日常开发和各种教程中,最常见的 debug 方式就是在代码中插入 console.log 语句,然后在 Chrome 控制台中查看日志。显而易见,插入console.log 的效率不高,那是否有更高效的 debug 方式呢?断点调试允许开发者在代…

【循环神经网络】

循环神经网络(Recurrent Neural Network, RNN)是一类用于处理序列数据的神经网络,擅长处理具有时间依赖或顺序结构的数据。RNN通过循环连接的结构,使得当前时刻的输出可以受之前时刻信息的影响,因此被广泛应用于自然语…

sqoop import将Oracle数据加载至hive,数据量变少,只能导入一个mapper的数据量

sqoop脚本如下: sqoop import -D mapred.job.queue.namehighway \ -D mapreduce.map.memory.mb4096 \ -D mapreduce.map.java.opts-Xmx3072m \ --connect "jdbc:oracle:thin://1.2.3.4.5:61521/LZY2" \ --username root \ --password 123456 \ --query &…

低功耗WTK6900P语音ic方案助力电子烟技术革新 打造个性化吸烟体验

在这个科技日新月异的时代,每一个细节的创新都是对传统的一次超越。今天,我们自豪地宣布一项革命性的融合——将先进的频谱技术与电子烟相结合,通过WTK6900P芯片的卓越性能,为您开启前所未有的个性化吸烟体验。这不仅是一次技术的…

《基于深度学习的车辆行驶三维环境双目感知方法研究》

复原论文思路: 《基于深度学习的车辆行驶三维环境双目感知方法研究》 1、双目测距的原理 按照上述公式算的话,求d的话,只和xl-xr有关系,这样一来,是不是只要两张图像上一个测试点的像素位置确定,对应的深…

Chromium 中sqlite数据库操作演示c++

本文主要演示sqlite数据库 增删改查创建数据库以及数据库表的基本操作,仅供学习参考。 一、sqlite数据库操作类封装: sql\database.h sql\database.cc // Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-sty…

Qt初识简单使用Qt

使用C代码实现hello world 之前介绍过用图形化界面的方式创建hello world&#xff0c;这里我们使用C代码的方式再来实现一次hello world。 如上&#xff0c;首先要先包含一个头文件。 在QT这里&#xff0c;每一个类都有一个对应的同名头文件。比如这里我就包含了 <QLabel&…

高效运维:构建全面监控与自动化管理体系

在当今数字化时代&#xff0c;企业IT系统的稳定运行直接关系到业务的连续性和竞争力。运维团队作为保障系统稳定运行的中坚力量&#xff0c;面临着前所未有的挑战。随着云计算、大数据、物联网等技术的快速发展&#xff0c;系统架构日益复杂&#xff0c;运维工作也从传统的被动…

Docker网络和overlay的基础讲解

本人发现了两篇写的不错的文章&#xff1a;Docker网络 - docker network详解-CSDN博客&#xff0c;Docker 容器跨主机通信 overlay_docker overlay 网络-CSDN博客 因为这两篇文章中含有大量的例子&#xff0c;新手看起来毫不费力。于是我偷了个小懒&#xff0c;在本篇文章中没有…

C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信

1. 前言 RabbitMQ是一个流行的开源消息队列系统&#xff0c;支持多种消息协议&#xff0c;广泛用于构建分布式系统和微服务架构。可以在不同应用程序之间实现异步消息传递。在本文中&#xff0c;我们将熟悉如何使用C与RabbitMQ进行消息通信。 2. 准备工作 在 Windows 平台上…

vue elementui el-dropdown-item设置@click无效的解决方案

如图&#xff0c;直接在el-dropdown-item上面设置click&#xff0c;相应的method并没有被触发&#xff0c;查找资料发现需要在它的上级 el-dropdown 处使用 command 方法触发。 【template】 <el-dropdown placement"bottom-end" command"handleCommand&quo…

使用docker-compose单点搭建社区版seafile+onlyoffice在线word编辑平台

文章目录 前言一、平台介绍1. seafile平台介绍2. onlyoffice平台介绍 二、版本信息三、基础信息准备1.docker配置文件2.准备目录 四、onlyoffice部署五、seafile平台部署1.准备seafile.yaml文件2.运行平台 六、双平台对接总结 前言 记录使用docker-compose单点搭建社区版seafi…

游戏引擎学习第七天

视频参考:https://www.bilibili.com/video/BV1QFmhYcE69 ERROR_DEVICE_NOT_CONNECTED 是一个错误代码&#xff0c;通常在调用 XInputGetState 或 XInputSetState 函数时返回&#xff0c;表示指定的设备未连接。通常会出现以下几种情况&#xff1a; 未连接控制器&#xff1a;如…