VINS预积分与误差模型

文章目录

    • IMU的测量值误差模型
    • IMU预积分真实模型
    • IMU预积分估计模型
    • 误差模型
      • 普通增量积分
      • 中值积分法
    • 参考文献

IMU的测量值误差模型

IMU的测量值误差模型:
a ^ t = a t + R w t g w + b a t + n a t ω ^ t = ω t + b ω t + n ω t \begin{array}{} {{{\hat a}_t} = {a_t} + R_w^t{g^w} + {b_{{a_t}}} + {n_{a_t}}}\\ {{{\hat \omega }_t} = {\omega _t} + {b_{{\omega _t}}} + {n_{\omega _t} }} \end{array} a^t=at+Rwtgw+bat+natω^t=ωt+bωt+nωt

其中, a ^ t , ω ^ t {\hat a}_t, {\hat \omega }_t a^t,ω^t分别表示加速度计计陀螺仪的测量值; b a t , b ω t b_{a_t}, b_{\omega_t} bat,bωt分别为加速度计,陀螺仪的零偏,该零偏是随机游走的,零偏的导数服从高斯分布,设为:

b ˙ a t = n b a 和 b ˙ ω t = n b ω {\dot{b}}_{a_t}=n_{b_a}和 {\dot{b}}_{\omega_t}=n_{b_\omega} b˙at=nbab˙ωt=nbω

b ^ a t , b ^ ω t {\hat{b}}_{a_t},{\hat{b}}_{\omega_t} b^at,b^ωt表示额定的零偏估计值。真实的零偏是包含了游走偏差的,而加速度计和陀螺仪需要体现实际的物理量,要去除噪声所带来的影响。
此外, n a t , n ω t n_{a_t}, n_{\omega _t} nat,nωt 分别为加速度计,陀螺仪的高斯噪声。 g w g^w gw为重力加速度在世界坐标系下的表示。下标 t t t表示t时刻。

据上述公式可知,IMU的测量误差主要由加速度计及陀螺仪的噪声及零偏的随机游走所构成。使用IMU的积分数据量来估计位姿,很难准确测量出随机偏差的真实值,从而影响IMU积分量。参考文献《Quaternion kinematics for the error-state Kalman filter》同样我们建立两套模型,一套真实模型(考虑随机噪声),一套为估计模型(未考虑噪声,表示实际积分情况,用 ⋅ ^ \widehat \cdot 表示)。

VINS预积分发生在两帧图像(关键)帧之间(如, [ k , k + 1 ] [k,k+1] [k,k+1]),即将两帧图像发布时间内,IMU的数据进行积分(将[k,k+1]时刻内的IMU数据进行积分,从而得到IMU两帧图像之间的位姿变化量)。
因此状态的传递,误差的传递均是指两个图像帧之间的IMU积分值的传递,以下的预积分均以 [ k , k + 1 ] [k,k+1] [k,k+1]为例。

IMU预积分真实模型

p b k + 1 w = p b k w + v b k w Δ t k + ∫ ⁣ ⁣ ⁣ ∫ t ∈ [ k , k + 1 ] [ R t w ( a ^ t − b a t − n a t ) − g w ] d t 2 v b k + 1 w = v b k w + ∫ t ∈ [ k , k + 1 ] [ R t w ( a ^ t − b a t − n a t ) − g w ] d t q b k + 1 w = q b k w ⊗ ∫ t ∈ [ k , k + 1 ] 1 2 Ω ( ω ^ t − b ω t − n ω t ) q t b k d t \begin{array}{} {p_{{b_{k + 1}}}^w = p_{{b_k}}^w + v_{{b_k}}^w{\rm{\Delta }}{t_k} +\int\!\!\!\int \nolimits_{t \in [k,k + 1]} [R_t^w({{\hat a}_t} - {b_{{a_t}}} - {n_{{a_t}}}) - {g^w}]d{t^2}}\\ {v_{{b_{k + 1}}}^w = v_{{b_k}}^w + \smallint \nolimits_{t \in [k,k + 1]} [R_t^w({{\hat a}_t} - {b_{{a_t}}} - {n_{{a_t}}}) - {g^w}]dt}\\ {q_{{b_{k + 1}}}^w = q_{{b_k}}^w \otimes \smallint \nolimits_{t \in [k,k + 1]} \frac{1}{2}{\rm{\Omega }}({{\hat \omega }_t} - {b_{{\omega _t}}} - {n_{{\omega _t}}})q_t^{{b_k}}dt} \end{array} pbk+1w=pbkw+vbkwΔtk+t[k,k+1][Rtw(a^tbatnat)gw]dt2vbk+1w=vbkw+t[k,k+1][Rtw(a^tbatnat)gw]dtqbk+1w=qbkwt[k,k+1]21Ω(ω^tbωtnωt)qtbkdt

转换到体坐标系下,其PVQ形式如下:
在这里插入图片描述
其中:
α b k + 1 b k = ∫ ⁣ ⁣ ⁣ ∫ t ∈ [ t k , t k + 1 ] R t b k ( a ^ t − b a t − n a t ) d t 2 β b k + 1 b k = ∫ t ∈ [ t k , t k + 1 ] R t b k ( a ^ t − b a t − n a t ) d t γ b k + 1 b k = ∫ t ∈ [ t k , t k + 1 ] 1 2 Ω ( ω ^ t − b ω t − n ω t ) γ t b k d t \begin{array}{} {\alpha _{{b_{k + 1}}}^{{b_k}} = \int\!\!\!\int \nolimits_{t \in [{t_k},{t_{k + 1}}]} R_t^{{b_k}}({{\hat a}_t} - {b_{{a_t}}} - {n_{{a_t}}})d{t^2}}\\ {\beta _{{b_{k + 1}}}^{{b_k}} = \smallint \nolimits_{t \in [{t_k},{t_{k + 1}}]} R_t^{{b_k}}({{\hat a}_t} - {b_{{a_t}}} - {n_{{a_t}}})dt}\\ {\gamma _{{b_{k + 1}}}^{{b_k}} = \smallint \nolimits_{t \in [{t_k},{t_{k + 1}}]} \frac{1}{2}{\rm{\Omega }}({{\hat \omega }_t} - {b_{{\omega _t}}} - {n_{{\omega _t}}})\gamma _t^{{b_k}}dt} \end{array} αbk+1bk=t[tk,tk+1]Rtbk(a^tbatnat)dt2βbk+1bk=t[tk,tk+1]Rtbk(a^tbatnat)dtγbk+1bk=t[tk,tk+1]21Ω(ω^tbωtnωt)γtbkdt

在VIO系统中,IMU的发布频率通常是高于图像的,VINS系统中,使用k来表示对应的图像帧时刻,通过积分两个图像帧之间的IMU数据,来与视觉估计的位姿进行对比,来得到更加精确的位姿。

在连续积分模型时,时间连续,用 t t t作为标识,而当使用实际离散积分形式时, i i i表示 k k k k + 1 k+1 k+1图像帧之间的IMU发布时间。 b k , b k + 1 b_k, b_{k+1} bk,bk+1 k , k + 1 k,k+1 k,k+1时刻对应的IMU坐标系。
α i + 1 b k = α i b k + β i b k δ t + 1 2 α ‾ i ′ δ t 2 β i + 1 b k = β i b k + α ‾ i ′ δ t γ i + 1 b k = γ i b k ⊗ γ i + 1 i = γ i b k ⊗ [ 1 1 2 ω ‾ i ′ δ t ] \begin{array}{c} & {\alpha_{i + 1}^{b_{k}} = \alpha_{i}^{b_{k}} + \beta_{i}^{b_{k}}\delta t + \frac{1}{2}{\overline{\alpha}}_{i}^{'}\delta t^{2}} \\ & {\beta_{i + 1}^{b_{k}} = \beta_{i}^{b_{k}} + {\overline{\alpha}}_{i}^{'}\delta t} \\ & {\gamma_{i + 1}^{b_{k}} = \gamma_{i}^{b_{k}} \otimes \gamma_{i + 1}^{i} = \gamma_{i}^{b_{k}} \otimes \left\lbrack \begin{array}{r} 1 \\ {\frac{1}{2}{\overline{\omega}}_{i}^{'}\delta t} \end{array} \right\rbrack} \end{array} αi+1bk=αibk+βibkδt+21αiδt2βi+1bk=βibk+αiδtγi+1bk=γibkγi+1i=γibk[121ωiδt]

当使用普通离散增量形式时:
a ˉ i ′ = a ^ i − b a i − n a i , ω ˉ i ′ = ω ^ i − b ω i − n ω i {\bar a_i}^\prime = {\hat a_i} - {b_{{a_i}}} - {n_{{a_i}}},{\bar \omega _i}^\prime = {\hat \omega _i} - {b_{{\omega _i}}} - {n_{{\omega _i}}} aˉi=a^ibainai,ωˉi=ω^ibωinωi
利用中值积分时,
a ˉ i ′ = 1 2 [ q i ( a ^ i − b a i − n a i ) + q i + 1 ( a ^ i + 1 − b a i − n a i ) ] {\bar a_i}^\prime = \frac{1}{2}[{q_i}({\hat a_i} - {b_{{a_i}}} - {n_{{a_i}}}) + {q_{i + 1}}({\hat a_{i + 1}} - {b_{{a_i}}} - {n_{{a_i}}})] aˉi=21[qi(a^ibainai)+qi+1(a^i+1bainai)] ω ˉ i ′ = 1 2 ( ω ^ i + ω ^ i + 1 ) − b ^ ω {\bar \omega _i}^\prime = \frac{1}{2}({\hat \omega _i} + {\hat \omega _{i + 1}}) - {\hat b_\omega } ωˉi=21(ω^i+ω^i+1)b^ω

IMU预积分估计模型

首先,不考虑高斯噪声,世界坐标系下的PVQ积分形式如下:
p ^ b k + 1 w = p ^ b k w + v b k w Δ t k + ∫ ⁣ ⁣ ⁣ ∫ t ∈ [ k , k + 1 ] [ R t w ( a ^ t − b ^ a t ) − g w ] d t 2 v ^ b k + 1 w = v ^ b k w + ∫ t ∈ [ k , k + 1 ] [ R t w ( a ^ t − b ^ a t ) − g w ] d t q ^ b k + 1 w = q ^ b k w ⊗ ∫ t ∈ [ k , k + 1 ] 1 2 Ω ( ω ^ t − b ^ ω t ) q ^ t b k d t \begin{array}{} {\hat p_{{b_{k + 1}}}^w = \hat p_{{b_k}}^w + v_{{b_k}}^w{\rm{\Delta }}{t_k} + \int\!\!\!\int \nolimits_{t \in [k,k + 1]} [R_t^w({{\hat a}_t} - {{\hat b}_{{a_t}}}) - {g^w}]d{t^2}}\\ {\hat v_{{b_{k + 1}}}^w = \hat v_{{b_k}}^w + \smallint \nolimits_{t \in [k,k + 1]} [R_t^w({{\hat a}_t} - {{\hat b}_{{a_t}}}) - {g^w}]dt}\\ {\hat q_{{b_{k + 1}}}^w = \hat q_{{b_k}}^w \otimes \smallint \nolimits_{t \in [k,k + 1]} \frac{1}{2}{\rm{\Omega }}({{\hat \omega }_t} - {{\hat b}_{{\omega _t}}})\hat q_t^{{b_k}}dt} \end{array} p^bk+1w=p^bkw+vbkwΔtk+t[k,k+1][Rtw(a^tb^at)gw]dt2v^bk+1w=v^bkw+t[k,k+1][Rtw(a^tb^at)gw]dtq^bk+1w=q^bkwt[k,k+1]21Ω(ω^tb^ωt)q^tbkdt

转换到体坐标系下,其PVQ形式如下:
R ^ w b k p ^ b k + 1 w = R ^ w b k ( p ^ b k w + v ^ b k w Δ t k − 1 2 g w Δ t k 2 ) + α ^ b k + 1 b k R ^ w b k v ^ b k + 1 w = R ^ w b k ( v ^ b k w − g w Δ t k ) + β ^ b k + 1 b k q ^ w b k ⊗ q ^ b k + 1 w = γ ^ b k + 1 b k \begin{array}{} {\hat R_w^{{b_k}}\hat p_{{b_{k + 1}}}^w = \hat R_w^{{b_k}}\left( {\hat p_{{b_k}}^w + \hat v_{{b_k}}^w{\rm{\Delta }}{t_k} - \frac{1}{2}{g^w}{\rm{\Delta }}t_k^2} \right) + \hat \alpha _{{b_{k + 1}}}^{{b_k}}}\\ {\hat R_w^{{b_k}}\hat v_{{b_{k + 1}}}^w = \hat R_w^{{b_k}}(\hat v_{{b_k}}^w - {g^w}{\rm{\Delta }}{t_k}) + \hat \beta _{{b_{k + 1}}}^{{b_k}}}\\ {\hat q_w^{{b_k}} \otimes \hat q_{{b_{k + 1}}}^w = \hat \gamma _{{b_{k + 1}}}^{{b_k}}} \end{array} R^wbkp^bk+1w=R^wbk(p^bkw+v^bkwΔtk21gwΔtk2)+α^bk+1bkR^wbkv^bk+1w=R^wbk(v^bkwgwΔtk)+β^bk+1bkq^wbkq^bk+1w=γ^bk+1bk

其中:
α ^ b k + 1 b k = ∫ ⁣ ⁣ ⁣ ∫ t ∈ [ t k , t k + 1 ] R ^ t b k ( a ^ t − b ^ a t ) d t 2 β ^ b k + 1 b k = ∫ t ∈ [ t k , t k + 1 ] R ^ t b k ( a ^ t − b ^ a t ) d t γ ^ b k + 1 b k = ∫ t ∈ [ t k , t k + 1 ] 1 2 Ω ( ω ^ t − b ^ ω t ) γ t b k d t \begin{array}{} {\hat \alpha _{{b_{k + 1}}}^{{b_k}} = \int\!\!\!\int \nolimits_{t \in [{t_k},{t_{k + 1}}]} \hat R_t^{{b_k}}({{\hat a}_t} - {{\hat b}_{{a_t}}})d{t^2}}\\ {\hat \beta _{{b_{k + 1}}}^{{b_k}} = \smallint \nolimits_{t \in [{t_k},{t_{k + 1}}]} \hat R_t^{{b_k}}({{\hat a}_t} - {{\hat b}_{{a_t}}})dt}\\ {\hat \gamma _{{b_{k + 1}}}^{{b_k}} = \smallint \nolimits_{t \in [{t_k},{t_{k + 1}}]} \frac{1}{2}{\rm{\Omega }}({{\hat \omega }_t} - {{\hat b}_{{\omega _t}}})\gamma _t^{{b_k}}dt} \end{array} α^bk+1bk=t[tk,tk+1]R^tbk(a^tb^at)dt2β^bk+1bk=t[tk,tk+1]R^tbk(a^tb^at)dtγ^bk+1bk=t[tk,tk+1]21Ω(ω^tb^ωt)γtbkdt

其对应的实际离散积分形式:
在这里插入图片描述

当使用普通离散增量形式时:
a ^ ˉ i ′ = a ^ i − b ^ a i , ω ^ ˉ i ′ = ω ^ i − b ^ ω i {{\bar {\hat a}}_i}^\prime = {\hat a_i} - {\hat b_{a_i}},{{\bar {\hat \omega}_i}^\prime = {\hat \omega _i} - {\hat b_{\omega _i}}} a^ˉi=a^ib^ai,ω^ˉi=ω^ib^ωi

利用中值积分时,
a ^ ˉ i ′ = 1 2 [ q ^ i ( a ^ i − b ^ a i ) + q ^ i + 1 ( a ^ i + 1 − b ^ a i ) ] {{\bar {\hat a}}_i}^\prime = \frac{1}{2}[{\hat q_i}({\hat a_i} - {\hat b_{{a_i}}}) + {\hat q_{i + 1}}({\hat a_{i + 1}} - {\hat b_{{a_i}}})] a^ˉi=21[q^i(a^ib^ai)+q^i+1(a^i+1b^ai)] ω ^ ˉ i ′ = 1 2 ( ω ^ i + ω ^ i + 1 ) − b ^ ω i {\bar {\hat \omega} _i}^\prime = \frac{1}{2}({\hat \omega _i} + {\hat \omega _{i + 1}}) - {\hat b_{\omega _i}} ω^ˉi=21(ω^i+ω^i+1)b^ωi

误差模型

在使用马氏距离构成最小二乘问题时,我们需要知道估计量随着时间的推移,其误差的一个变化情况,因而需要对误差模型进行评估,进而对其各变量的协方差进行评估。VINS用于构造滑窗约束方程。
设估计为 z ^ \hat{z} z^,真值为 z z z,则其误差定义为:
δ z = z − z ^ \delta z=z-\hat{z} δz=zz^

当选用 z t b k = [ α t b k , β t b k , γ t b k , b a t , b ω t ] T z_t^{{b_k}} = {[\alpha _t^{{b_k}},\beta _t^{{b_k}},\gamma _t^{{b_k}},{b_{{a_t}}},{b_{{\omega _t}}}]^T} ztbk=[αtbk,βtbk,γtbk,bat,bωt]T作为预积分参数,

普通增量积分

  1. 其对应的普通增量积分的误差状态方程如下:
    δ z ˙ t b k = ∂ δ z t b k ∂ δ t = J t \delta \dot z_t^{{b_k}} = \frac{{\partial \delta z_t^{{b_k}}}}{{\partial \delta t}} = {J_t} δz˙tbk=δtδztbk=Jt
    通过计算,可得 J t = {J_t}= Jt=
    在这里插入图片描述
    从而得,当 δ t \delta t δt足够小时,
    在这里插入图片描述
    在这里插入图片描述
    在积分初始状态,设 J 0 = I , P 0 = 0 J_0=I, P_0 = 0 J0=I,P0=0,可以计算出雅可比矩阵 J t + δ t {J_{t+\delta t}} Jt+δt及协方差矩阵 P t + δ t {P_{t+\delta t}} Pt+δt随时间推移的传递方程。
    雅可比矩阵 J t + δ t {J_{t+\delta t}} Jt+δt的传递方程
    J t + δ t = ∂ δ z t + δ t b k ∂ δ t = δ z ˙ t + δ t b k = ∂ δ z t + δ t b k ∂ δ z t b k ∂ δ z t b k ∂ δ t = F J t = ( I + F t δ t ) J t {J_{t + \delta t}} = \frac{{\partial \delta z_{t + \delta t}^{{b_k}}}}{{\partial \delta t}} = \delta \dot z_{t + \delta t}^{{b_k}} = \frac{{\partial \delta z_{t + \delta t}^{{b_k}}}}{{\partial \delta z_t^{{b_k}}}}\frac{{\partial \delta z_t^{{b_k}}}}{{\partial \delta t}} = F{J_t} = (I + {F_t}\delta t){J_t} Jt+δt=δtδzt+δtbk=δz˙t+δtbk=δztbkδzt+δtbkδtδztbk=FJt=(I+Ftδt)Jt
    其中:
    ∂ δ z t + δ t b k ∂ δ z t b k = F = ( I + F t δ t ) \frac{{\partial \delta z_{t + \delta t}^{{b_k}}}}{{\partial \delta z_t^{{b_k}}}} = F = (I + {F_t}\delta t) δztbkδzt+δtbk=F=(I+Ftδt)
    设:变量 a ∼ N ( μ a , Λ a ) , b ∼ N ( μ b , Λ b ) a\sim\mathcal{N}\left(\mu_a,\Lambda_a\right),b\sim\mathcal{N}\left(\mu_b,\Lambda_b\right) aN(μa,Λa),bN(μb,Λb)
    则可知: F a ∼ N ( F μ a , F Λ a F T ) , G b ∼ N ( G μ b , G Λ b G T ) Fa\sim\mathcal{N}\left(F\mu_a,F\Lambda_aF^T\right),Gb\sim\mathcal{N}\left(G\mu_b,G\Lambda_bG^T\right) FaN(Fμa,FΛaFT),GbN(Gμb,GΛbGT)
    从而得到协方差矩阵的传递公式
    设误差量 δ z b t b k ∼ N ( 0 , P t b k ) \delta z_{b_t}^{b_k}\sim\mathcal{N}(0,P_t^{b_k}) δzbtbkN(0,Ptbk),
    δ z b t + δ t b k ∼ N ( 0 , P t + δ t b k ) \delta z_{b_{t+\delta t}}^{b_k}\sim\mathcal{N}\left(0,P_{t+\delta t}^{b_k}\right) δzbt+δtbkN(0,Pt+δtbk) P t + δ t b k = ( I + F t δ t ) P t b k ( I + F t δ t ) T + ( G t δ t ) Q ( G t δ t ) T P_{t+\delta t}^{b_k}=\left(\mathrm{I}+F_t\delta t\right)P_t^{b_k}\left(\mathrm{I}+F_t\delta t\right)^T+\left(G_t\delta t\right)Q\left(G_t\delta t\right)^T Pt+δtbk=(I+Ftδt)Ptbk(I+Ftδt)T+(Gtδt)Q(Gtδt)T
    当我们使用迭代法估计零偏时,零偏值会在每次迭代时,进行更新,从而我们的IMU积分量则需要根据新的零偏进行重新的计算,比较耗时,因而,VINS作者提出,通过更新IMU积分量对零偏误差的雅可比矩阵,来迭代零偏更新量到IMU的积分值,从而简化计算步骤。
    在这里插入图片描述
    δ z = z − z ^ \delta z=z-\hat{z} δz=zz^得:
    ∂ z ∂ b = ∂ δ z ∂ b \frac{\partial z}{\partial b}=\frac{\partial\delta z}{\partial b} bz=bδz
    从而可以从 ∂ δ z t + δ t b k ∂ δ z t b k \frac{{\partial \delta z_{t + \delta t}^{{b_k}}}}{{\partial \delta z_t^{{b_k}}}} δztbkδzt+δtbk对应的雅可比矩阵中拿出关于零偏的雅可比矩阵。
    注意: δ z ˙ t + δ t b k \delta \dot z_{t + \delta t}^{{b_k}} δz˙t+δtbk指的是对时间间隔 δ t \delta t δt的导数,而不是对 δ z ˙ t b k \delta \dot z_{t}^{{b_k}} δz˙tbk的导数,这里与VINS代码有所不同(代码中使用的 J t J_t Jt矩阵取的对零偏的雅可比矩阵)

中值积分法

  1. 使用中值积分法时,得到的状态方程传递方程如下:
    在这里插入图片描述
    在这里插入图片描述
    以上图片来自《VINS 论文推导及代码解析 崔华坤》

参考文献

《VINS 论文推导及代码解析 崔华坤》
《VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator》
《Quaternion kinematics for the error-state Kalman filter》

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

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

相关文章

10页面结构分析

我们打开一个网页&#xff0c;都会有一个清晰的结构和布局上图中的标签就是用来划分各个部分区域用的。其中比较常用重要的是header、footer和nav&#xff0c;需要重点掌握。 下面是部分代码及效果演示 <header> <h2>网页头部</h2> </header><sec…

C++实现二叉搜索树(模型)

目录 1.二叉搜索树的概念 2.二叉搜索树的实现 2.1总体代码预览 2.2各个函数实现原理 链表结构体 二叉搜索树的成员变量 二叉搜索树的插入 二叉搜索树的查找 二叉搜索树的遍历 二叉搜索树的删除 1.二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#…

AI去衣技术在动画制作中的应用

随着科技的发展&#xff0c;人工智能&#xff08;AI&#xff09;已经在各个领域中发挥了重要作用&#xff0c;其中包括动画制作。在动画制作中&#xff0c;AI去衣技术是一个重要的工具&#xff0c;它可以帮助动画师们更加高效地完成工作。 AI去衣技术是一种基于人工智能的图像…

jenkins目录下的vue3项目——pnpm install后运行报错——奇葩问题解决

昨天到今天&#xff0c;同事那边遇到一个问题&#xff0c;就是关于vue3vite的项目&#xff0c;在执行了自动打包后&#xff0c;运行代码会提示报错的问题。 报错信息如下&#xff1a; 具体错误信息如下&#xff1a; ERROR 11:28:14 [vite] Pre-transform error: Cannot find …

C语言实战项目---通讯录

项目要实现的内容&#xff1a;能够存放100个人的通讯录程序&#xff0c;能够实现联系人数据的存储&#xff0c;删除&#xff0c;修改&#xff0c;查找&#xff0c;展示联系人的信息。 所需知识&#xff1a;结构体&#xff0c;指针&#xff0c;函数................. 废话不多…

AI绘画成果展(第一期)

免费获取更多原图&#xff0c;备注“AI绘画”&#xff0c;可在文章末尾点击名片进qun获取。 免费获取更多原图&#xff0c;备注“AI绘画”&#xff0c;可在文章末尾点击名片进qun获取。

pandas索引

pandas索引 一、索引1.1 建立索引1.2 重置索引1.3 索引类型1.4 索引的属性1.5 索引的操作 一、索引 1.1 建立索引 建立索引可以在数据读取加载中指定索引&#xff1a; import pandas as pd df pd.read_excel(team.xlsx, index_colname) # 将name列设置为索引 df.head()效…

Hadoop3:HDFS的架构组成

一、官方文档 我这里学习的是Hadoop3.1.3版本&#xff0c;所以&#xff0c;查看的也是3.1.3版本的文档 Architecture模块最下面 二、HDFS架构介绍 HDFS架构的主要组成部分&#xff0c;是一下四个部分 1、NameNode(NN) 就是Master节点&#xff0c;它是集群管理者。 1、管…

解决 SyntaxError: Unexpected token ‘.‘ 报错问题

这个报错一般是编译问题&#xff0c;浏览器的版本过低没通过代码 解决办法&#xff1a; 在package.json文件中加上这个 "browserslist": ["> 1%","last 2 versions","not dead","not ie < 6","Android > 4&…

Web 3.0时代:软文发稿对企业品牌的影响

Web 3.0的到来&#xff0c;标志着我们已经进入了一个全新的互联网时代。在这个新时代中&#xff0c;信息的生成和传播有了更多的可能性和更广的空间。作为企业品牌宣传的重要手段之一的软文发稿&#xff0c;在Web 3.0时代将会面临什么样的挑战和机遇&#xff1f; 首先&#xf…

人脸美型SDK解决方案,适用于各类应用场景

视频内容已经成为企业宣传、产品展示、互动直播等多个领域的核心载体。而在这些场景中&#xff0c;高质量的人脸美型效果不仅能够提升用户体验&#xff0c;更能为品牌加分。美摄科技凭借深厚的技术积累和行业洞察&#xff0c;推出了全新的人脸美型SDK解决方案&#xff0c;为企业…

Fizzler库+C#:从微博抓取热点的最简单方法

概述 在这篇技术文章中&#xff0c;我们将深入研究如何利用Fizzler库结合C#语言&#xff0c;以实现从微博平台抓取热点信息的功能。微博作为中国乃至全球范围内具有重要影响力的社交媒体平台之一&#xff0c;在互联网信息传播中扮演着举足轻重的角色。通过Fizzler这一强大的.N…

Sarcasm detection论文解析 |CAT-BiGRU

论文地址 论文地址&#xff1a;CAT-BiGRU: Convolution and Attention with Bi-Directional Gated Recurrent Unit for Self-Deprecating Sarcasm Detection | Cognitive Computation github:Ashraf-Kamal/Self-Deprecating-Sarcasm-Detection (github.com) 论文首页 笔记框架 …

什么软件能在桌面提醒我 电脑桌面提醒软件

在这个信息爆炸的时代&#xff0c;我们每个人每天都需要处理海量的信息和任务。有时候&#xff0c;即便是再细心的人&#xff0c;也难免会因为事情太多而忘记一些重要的细节。 我就经常遇到这样的问题&#xff0c;明明记得自己有个重要的会议要参加&#xff0c;或者有个关键的…

LeetCode 每日一题 Day 144-157

2385. 感染二叉树需要的总时间 给你一棵二叉树的根节点 root &#xff0c;二叉树中节点的值 互不相同 。另给你一个整数 start 。在第 0 分钟&#xff0c;感染 将会从值为 start 的节点开始爆发。 每分钟&#xff0c;如果节点满足以下全部条件&#xff0c;就会被感染&#xf…

风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系

随着智慧电厂成为未来电力企业发展的必然趋势&#xff0c;深圳华锐视点紧跟时代步伐&#xff0c;引领技术革新&#xff0c;推出了能源3D可视化智慧管理系统。该系统以企业现有的数字化、信息化建设为基础&#xff0c;融合云平台、大数据、物联网、移动互联、机器人、VR虚拟现实…

什么是视频号小店?为什么这么多人都在做?一文带你轻松入门!

大家好&#xff0c;我是电商花花。 现在电商的快速发展&#xff0c;电商行业在各大电商平台上不断发展&#xff0c;而视频号小店也被更多人看到和入驻&#xff0c;让更多创业者对视频号小店产生兴趣。 知道的人都觉得视频号小店是一个不可多得的创业项目&#xff0c;因为这里…

开源的聊天服务器tigase 7.1.3 相关文档

官方的api文档 7.1.3&#xff1a; Tigase Administration Guide github地址&#xff1a; Release 7.1.3 tigase/tigase-server GitHub 安装教程&#xff1a; Tigase手动安装过程-腾讯云开发者社区-腾讯云

学习强国手机助手

前景&#xff1a; 用手机刷学习强国时要一直盯着手机&#xff0c;总感觉费时费劲&#xff0c;刚好最近学习python写个小工具帮忙自动学习&#xff0c;实现了文章和视频学习&#xff0c;答题类不一定都能正确。上班时电脑连着USB就可以放那&#xff0c;自己可以上班干自己事情。…

IDEA中git的常用操作(保姆级教学)

IDEA中git的常用操作&#xff08;保姆级教学&#xff09; 以下是git的工作原理&#xff0c;觉得繁琐的可以跳过不看 Workspace&#xff1a;工作区 (平时存放代码的地方) Index / Stage&#xff1a;暂存区&#xff08;用于临时存放存放你的改动&#xff0c;事实上就是一个文件&…