IMU 误差建模 —— Notes for “Quaternion kinematics for the error-state Kalman filter“

IMU 误差建模

—— Notes for “Quaternion kinematics for the error-state Kalman filter”


参考文献 “Quaternion kinematics for the error-state Kalman filter” 1 完整地推导了误差状态卡尔曼滤波器 (ESKF, the error-state Kalman filter). 内容的重点在 IMU 运动方程的建模, 然后套用 Kalman filter 的预测-更新框架获得了 ESKF. IMU 运动方程的建模分为两个部分, 1. 捷联惯导 IMU 的刚体运动学建模, 即确定部分, 2. IMU 信号误差建模, 即随机部分. 刚体运动学比较明确公式推导也很完备, 此处不展开. 我们讨论一下随机部分的建模.

I 误差性质

加速度计和陀螺仪的测量方程如下1
a m = R T ( a t − g t ) + a b t + a n (231) {\mathbf {a}}_m = \mathbf{R}^{\rm T}(\mathbf{a}_t - \mathbf{g}_t) + \mathbf{a}_{bt} + \mathbf{a}_{n} \tag{231} am=RT(atgt)+abt+an(231)

ω m = ω t + ω b t + ω n (232) \boldsymbol{\omega}_{m} = \boldsymbol{\omega}_t + \boldsymbol{\omega}_{bt} + \boldsymbol{\omega}_{n} \tag{232} ωm=ωt+ωbt+ωn(232)

1. 高斯白噪声

a n \mathbf{a}_n an 是加速度测量中的高斯白噪声, 快速变化影响当前时间测量值. 每一轴 (XYZ 三轴) 的加速度测量噪声认为是独立同分布的高斯白噪声. 每一轴上的随机变量的分布满足 N [ 0 , σ a ~ n 2 ] \mathcal{N}[0, \sigma_{\tilde{\mathbf{a}}_n}^2] N[0,σa~n2], 则各轴之间独立的三维随机变量写成
a n ( t ) ∼ N [ 0 1 × 3 , σ a ~ n 2 I 3 × 3 ] (I-1-1) \mathbf{a}_{n}(t) \thicksim \mathcal{N}[\mathbf{0}_{1\times3}, \sigma_{\tilde{\mathbf{a}}_n}^2 \mathbf{I_{3\times3}}] \tag{I-1-1} an(t)N[01×3,σa~n2I3×3](I-1-1)
该白噪声作为随机过程所含的不同时刻的随机变量之间具有零均值和独立性的特点, 即
E [ a n ( t ) ] = 0 , E [ a n ( t 1 )   a n ( t 2 ) ] = σ a ~ n 2 δ ( t 1 − t 2 ) I (I-1-2) \mathbf{E}[\mathbf{a}_{n}(t)] = \mathbf{0}, \qquad \mathbf{E}[\mathbf{a}_{n}(t_1)\, \mathbf{a}_{n}(t_2)] = \sigma_{\tilde{\mathbf a}_{n}}^2 \delta(t_1 - t_2) \mathbf{I} \tag{I-1-2} E[an(t)]=0,E[an(t1)an(t2)]=σa~n2δ(t1t2)I(I-1-2)
其中 δ ( ⋅ ) \delta(\cdot) δ() 为狄拉克脉冲函数 (Dirac delta function).

同理, 分析陀螺仪角速度测量中的高斯白噪声
ω n ∼ N [ 0 1 × 3 , σ ω ~ n 2 I 3 × 3 ] (I-1-3) \boldsymbol{\omega}_n \thicksim \mathcal{N}[\mathbf{0}_{1\times3}, \sigma_{\tilde{\boldsymbol{\omega}}_n}^2 \mathbf{I_{3\times3}}] \tag{I-1-3} ωnN[01×3,σω~n2I3×3](I-1-3)

在进一步分析加速度计随机游走偏差 Accelerometer bias 和陀螺仪随机游走偏差 Gyrometer bias 前, 先探讨一下随机游走和高斯白噪声之间的关系.

2. 维纳过程

标准维纳过程 (布朗运动) 定义2

A standard (one-dimensional) Wiener process (also called Brownian motion) is
a stochastic process { W t } t ≥ 0 + \{W_t\}_{t≥0+} {Wt}t0+ indexed by nonnegative real numbers t t t with the following
properties:
(1) W 0 = 0 W_0 = 0 W0=0.
(2) With probability 1, the function t t t W t W_t Wt is continuous in t t t.
(3) The process { W t } t ≥ 0 \{W_t\}_{t≥0} {Wt}t0 has stationary, independent increments.
(4) The increment W t + s − W s W_{t+s} − W_s Wt+sWs has the normal distribution N [ 0 , t ] {\mathcal N}[0, t] N[0,t] .

由标准维纳过程的定义可以知道随机变量 W t = W t − W 0 ∼ N [ 0 , t ] W_t = W_t - W_0 \thicksim \mathcal{N}[0,t] Wt=WtW0N[0,t], 其方差随着时间发散.

进一步细分时间区间 [ 0 , t ] [0, t] [0,t] N ∈ Z + N\in \mathbb{Z}^{+} NZ+ 个跨度为 Δ t \Delta t Δt 的等长小区间, N Δ t = t N\Delta t = t NΔt=t. 同时令 N → ∞ N\to \infty N, 就可以得到无穷小增量系列 (the infinitesimal increments), 即
Δ W i = W ( i + 1 ) Δ t − W i Δ t , 0 ≤ i ≤ N − 1 & i ∈ Z (I-2-1) \Delta W_i = W_{(i+1)\Delta t} - W_{i\Delta t}, \qquad 0 \le i \le N-1 \quad \&\quad i \in \mathbb{Z} \tag{I-2-1} ΔWi=W(i+1)ΔtWiΔt,0iN1&iZ(I-2-1)
由标准维纳过程 (布朗运动) 定义可知, Δ W i ∼ N [ 0 , Δ t ] \Delta W_i \thicksim \mathcal{N}[0, \Delta t] ΔWiN[0,Δt], 且 Δ W i \Delta W_i ΔWi Δ W j \Delta W_j ΔWj 之间是独立的 (当 i ≠ j i \neq j i=j). 那么
W t = lim ⁡ N → ∞ ∑ i = 0 N − 1 Δ W i ≜ ∫ 0 t d W ( t ) (I-2-2) W_t = \lim_{N\to\infty} \sum_{i=0}^{N-1} \Delta W_i \triangleq \int_{0}^{t} {\rm d} W(t) \tag{I-2-2} Wt=Nlimi=0N1ΔWi0tdW(t)(I-2-2)
另外, 在时间区域 ( i Δ t , ( i + 1 ) Δ t ) (i\Delta t, (i+1) \Delta t) (iΔt,(i+1)Δt) 内, 任取 τ \tau τ 时刻, 即 τ ∈ ( i Δ t , ( i + 1 ) Δ t ) \tau\in (i\Delta t, (i+1) \Delta t) τ(iΔt,(i+1)Δt). 定义该时刻上标准高斯变量 ξ i ( τ ) ∼ N [ 0 , 1 ] \xi_{i}(\tau)\thicksim \mathcal{N}[0,1] ξi(τ)N[0,1], 则 ξ i ( τ ) Δ t ∼ N [ 0 , Δ t ] \xi_{i}(\tau)\Delta t \thicksim \mathcal{N}[0,\Delta t] ξi(τ)ΔtN[0,Δt]. 同时需要满足 ξ i \xi_i ξi ξ j \xi_j ξj (当 i ≠ j i \neq j i=j) 之间相互独立. 当时间区域趋于无穷小时, 即 Δ t → 0 \Delta t \to 0 Δt0 时, ξ i ( τ ) \xi_i(\tau) ξi(τ) 系列是高斯白噪声 ( 0 ≤ i ≤ N , N → ∞ 0 \le i \le N, N\to\infty 0iN,N). ξ i ( τ ) \xi_i(\tau) ξi(τ) 系列按照时间顺序首尾拼接, 在时间区域 ( 0 ≤ τ ≤ t 0\le \tau \le t 0τt) 上形成高斯白噪声, 记为 ξ ( τ ) ∼ N [ 0 , 1 ] \xi(\tau)\thicksim \mathcal{N}[0,1] ξ(τ)N[0,1].
结合维纳过程定义和上述构造的高斯变量系列, 在无穷小时间 ( i Δ t , ( i + 1 ) Δ t ) ( i\Delta t, (i+1) \Delta t) (iΔt,(i+1)Δt) 内, Δ W i \Delta W_i ΔWi ξ i ( τ ) Δ t \xi_{i}(\tau)\Delta t ξi(τ)Δt 分布相同, 用 ξ i ( τ ) Δ t \xi_{i}(\tau)\Delta t ξi(τ)Δt 替代式 (I-2-2) 中的 Δ W i \Delta W_i ΔWi
W t = lim ⁡ N → ∞ ∑ i = 0 N − 1 Δ W i = lim ⁡ N → ∞ ∑ i = 0 N − 1 ξ i ( τ ) Δ t = ∫ 0 t ξ ⌊ τ Δ t ⌋ ( τ ) d t = ∫ 0 t ξ ( τ ) d t (I-2-3) W_t = \lim_{N\to\infty} \sum_{i=0}^{N-1} \Delta W_i= \lim_{N\to\infty} \sum_{i=0}^{N-1} \xi_i(\tau)\Delta t = \int_{0}^{t} \xi_{\lfloor \frac{\tau}{\Delta t}\rfloor}(\tau){\rm d} t = \int_{0}^{t} \xi(\tau){\rm d} t \tag{I-2-3} Wt=Nlimi=0N1ΔWi=Nlimi=0N1ξi(τ)Δt=0tξΔtτ(τ)dt=0tξ(τ)dt(I-2-3)
以上我们说明了标准维纳过程 (布朗运动) 是高斯白噪声在时间 [ 0 , t ] [0,t] [0,t] 上的积分.

简单推论
∫ i Δ t ( i + 1 ) Δ t ξ ( τ ) d t = W ( i + 1 ) Δ t − W i Δ t ∼ N [ 0 , Δ t ] (I-2-4) \int_{i\Delta t}^{(i+1) \Delta t} \xi(\tau){\rm d} t = W_{(i+1) \Delta t} - W_{i\Delta t} \quad \thicksim\quad \mathcal{N}[0, \Delta t] \tag{I-2-4} iΔt(i+1)Δtξ(τ)dt=W(i+1)ΔtWiΔtN[0,Δt](I-2-4)

3. 一维随机游走

One-dimensional random walks 的定义3

A random walk on the integers Z \mathbb{Z} Z with step distribution F \mathcal{F} F and initial state x ∈ Z x \in \mathbb{Z} xZ is a sequence S n S_n Sn of random variables whose increments are independent, identically distributed random variables ξ i \xi_i ξi with common distribution F \mathcal{F} F, that is,
S n = x + ∑ i = 1 n ξ i S_n = x + \sum_{i=1}^{n}\xi_i Sn=x+i=1nξi

根据以上定义, 对比式 (I-2-3) 可知 W t W_t Wt 就是初始变量 x x x 为 0 的随机游走, 对应随机变量是 ξ i ( τ ) Δ t \xi_{i}(\tau)\Delta t ξi(τ)Δt. 因为维纳过程和随机游走都具有的马尔科夫特性, 可以以任意时刻状态为初始变量, 后续过程为相同性质的随机游走过程.

4. 随机游走偏差

我们再回过来进行 IMU 的误差建模. a b t \mathbf{a}_{bt} abt 是加速度数值中的随机游走偏差, 该随机游走误差是一个慢变的误差累积过程.

随机游走误差的运动学方程1
a ˙ b t = a w (230d) \dot{\mathbf{a}}_{bt} = \mathbf{a}_w \tag{230d} a˙bt=aw(230d)

ω ˙ b t = ω w (230e) \dot{\boldsymbol{\omega}}_{bt} = \boldsymbol{\omega}_w \tag{230e} ω˙bt=ωw(230e)

随机游走误差的变化率是高斯白噪声, 同时每根轴上独立但有相同的随机过程. 即 XYZ 每一轴上的角速度随机游走误差是各轴独立的高斯白噪声的从 0 时刻到当前时刻 t t t 的积分. 白噪声的积分不再是白噪声, 而是维纳过程 (Wiener process) 或是布朗运动 (Brownian motion).

根据中心极限定理, 随机游走的极限是布朗运动2, 而 IMU 测量也正好比较频繁, 故较容易接近极限状态. 维纳过程具有马尔科夫特性, 当前时刻的随机游走误差是上一时刻误差的基础上累加当前时刻的一个白噪声误差变量. 而这个被累加的三个轴上独立同分布的白噪声变量
a w ∼ N [ 0 , σ a w 2 I ] (I-4-1) \mathbf{a}_w \thicksim \mathcal{N}[\mathbf{0}, \sigma_{\mathbf{a}_w}^2 \mathbf{I}] \tag{I-4-1} awN[0,σaw2I](I-4-1)
由 (230d) 可知
a b t ( t ) = ∫ 0 t a w ( τ )   d τ (I-4-2) \mathbf{a}_{bt}(t) = \int_{0}^{t} \mathbf{a}_w(\tau)\, {\rm d}\tau \tag{I-4-2} abt(t)=0taw(τ)dτ(I-4-2)
由标准维纳过程 (布朗运动) 定义可知, a b t ( t ) \mathbf{a}_{bt}(t) abt(t) 满足正态分布, 即
a b t ( t ) ∼ N [ 0 , σ a w 2 t   I ] (I-4-3) \mathbf{a}_{bt}(t) \thicksim \mathcal{N}[\mathbf{0}, \sigma_{\mathbf{a}_w}^2 t \,\mathbf{I}] \tag{I-4-3} abt(t)N[0,σaw2tI](I-4-3)
角加速度的随机游走偏差随时间在逐渐发散.

同理, 分析陀螺仪角速度的的随机游走偏差. 陀螺仪三个轴上的白噪声变量
ω w ∼ N [ 0 , σ ω w 2 I ] (I-4-4) \boldsymbol{\omega}_w \thicksim \mathcal{N}[\mathbf{0}, \sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I}] \tag{I-4-4} ωwN[0,σωw2I](I-4-4)
陀螺仪角速度的随机游走偏差
ω b t ∼ N [ 0 , σ ω w 2 t   I ] (I-4-5) \boldsymbol{\omega}_{bt} \thicksim \mathcal{N}[\mathbf{0}, \sigma_{\boldsymbol{\omega}_w}^2 t\,\mathbf{I}] \tag{I-4-5} ωbtN[0,σωw2tI](I-4-5)

II 系统模型

1. 增广状态

系统的误差状态
δ x = [ δ p δ v δ θ δ a b δ ω b δ g ] (266) \delta \mathbf{x} = \begin{bmatrix} \delta \mathbf{p}\\ \delta \mathbf{v}\\ \delta \boldsymbol{\theta}\\ \hdashline \delta \mathbf{a}_{b}\\ \delta \boldsymbol{\omega}_{b}\\ \delta \mathbf{g} \end{bmatrix} \tag{266} δx= δpδvδθδabδωbδg (266)

系统误差状态中 [ δ p δ v δ θ ] \begin{bmatrix} \delta \mathbf{p}\\ \delta \mathbf{v}\\ \delta \boldsymbol{\theta} \end{bmatrix} δpδvδθ 是真正需要估计的误差状态, 比如是机器人的位姿误差、速度误差、姿态误差. 而 [ δ a b δ ω b δ g ] \begin{bmatrix} \delta \mathbf{a}_{b}\\ \delta \boldsymbol{\omega}_{b}\\ \delta \mathbf{g}\end{bmatrix} δabδωbδg 是增广的误差状态 (Augmented error states), 作用有

(a) 增加对加速度计和陀螺仪各自的随机游走偏差 ( δ a b \delta \mathbf{a}_b δab δ ω b \delta \boldsymbol{\omega}_b δωb, 进而 a b \mathbf{a}_b ab ω b \boldsymbol{\omega}_b ωb) 的在线估计, 而没有其他方法消除这些变化的随机误差过程.

(b) 增加重力加速度矢量的估计, 就可以设定任意初始姿态 q 0 q_0 q0 与参考框架重合, 而得到 R { q 0 } = I \mathbf{R}\{q_0\} = \mathbf I R{q0}=I, 而由对应的重力加速 g = [ g x ,   g y ,   g z ] T \mathbf{g}=[g_x,\, g_y,\, g_z]^{\rm T} g=[gx,gy,gz]T 来表示初始姿态 (参考框架) 与外部导航坐标系 (如东北天坐标系) 之间的相对姿态, 同时顺带估计了参考水平面1. 要不然的话, 为了保证线性度, 每次都需要从相同初始姿态开始运行.

© 如果 δ a b \delta \mathbf{a}_b δab δ ω b \delta \boldsymbol{\omega}_b δωb δ g \delta \boldsymbol{g} δg 不作为系统误差状态而留在系统方程, 没做进一部变换情况下, 将破坏标准系统方程在形式上的构建, 阻碍大家利用已熟知的控制理论.

2. 离散模型

Consider the continuous-time dynamic system1 ,
x ˙ = f ( x , u , w ) (425) \dot{\mathbf x} = f(\mathbf{x}, \mathbf{u}, \mathbf{w}) \tag{425} x˙=f(x,u,w)(425)
where x \mathbf{x} x is the state vector, u \mathbf{u} u is a vector of control signals containing noise u ~ \tilde u u~, so that the control measurements are u m = u + u ~ \mathbf{u}_m = \mathbf{u} + \tilde{\mathbf{u}} um=u+u~, and w \mathbf w w is a vector of random perturbations.

对式 (425) 在 ( x ˉ \bar{\mathbf{x}} xˉ, u m \mathbf{u}_m um) 处一阶泰勒展开, 即
x = x ˉ + δ x u = u m − u ~ w = 0 + w (III-2-1) \mathbf{x} = \bar{\mathbf{x}}+\delta\mathbf{x}\\ \mathbf{u} = {\mathbf{u}_m}-\tilde{\mathbf{u}}\\ \mathbf{w} = {\mathbf{0}}+ \mathbf{w}\\ \tag{III-2-1} x=xˉ+δxu=umu~w=0+w(III-2-1)
其中 ( δ x , − u ~ , w \delta \mathbf{x}, -\tilde{\mathbf{u}}, \mathbf{w} δx,u~,w) 视作为小量, 可以得到
( x ˉ + δ x ) ˙ = f ( x ˉ + δ x , u m − u ~ , 0 + w ) ⇒ x ˉ ˙ + δ x ˙ = f ( x ˉ , u m , 0 ) + ∂ f ∂ x ∣ x ˉ , u m δ x + ∂ f ∂ u ∣ x ˉ , u m ( − u ~ ) + ∂ f ∂ w ∣ x ˉ , u m w ⇒ δ x ˙ = ∂ f ∂ x ∣ x ˉ , u m δ x   −   ∂ f ∂ u ∣ x ˉ , u m u ~ + ∂ f ∂ w ∣ x ˉ , u m w ⇒ δ x ˙ = ∂ f ∂ δ x ∣ x ˉ , u m δ x   +   ∂ f ∂ u ~ ∣ x ˉ , u m u ~ + ∂ f ∂ w ∣ x ˉ , u m w (III-2-2) \begin{aligned} \dot{(\bar{\mathbf{x}}+\delta{\mathbf{x}})} & = f(\bar{\mathbf{x}}+\delta\mathbf{x}, {\mathbf{u}_m}-\tilde{\mathbf{u}}, {\mathbf{0}}+ \mathbf{w})\\ \Rightarrow \quad \dot{\bar{\mathbf{x}}} + \dot{\delta{\mathbf{x}}} & = f(\bar{\mathbf{x}}, {\mathbf{u}_m}, {\mathbf{0}}) + \frac{\partial f}{\partial \mathbf{x}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\delta \mathbf{x}} + \frac{\partial f}{\partial \mathbf{u}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {(-\tilde{\mathbf{u}})}+ \frac{\partial f}{\partial \mathbf{w}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\mathbf{w}} \\ \Rightarrow \quad \dot{\delta{\mathbf{x}}} & = \frac{\partial f}{\partial \mathbf{x}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\delta \mathbf{x}} \,{\color{red}-}\, \frac{\partial f}{\partial \mathbf{u}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\tilde{\mathbf{u}}}+ \frac{\partial f}{\partial \mathbf{w}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\mathbf{w}} \\ \Rightarrow \quad \dot{\delta{\mathbf{x}}} & = \frac{\partial f}{\partial \delta \mathbf{x}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\delta \mathbf{x}}\, {\color{red}+}\, \frac{\partial f}{\partial \tilde{\mathbf{u}}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\tilde{\mathbf{u}}}+ \frac{\partial f}{\partial \mathbf{w}} \big|_{\bar{\mathbf{x}}, \mathbf{u}_m} {\mathbf{w}}\\ \end{aligned} \tag{III-2-2} (xˉ+δx)˙xˉ˙+δx˙δx˙δx˙=f(xˉ+δx,umu~,0+w)=f(xˉ,um,0)+xf xˉ,umδx+uf xˉ,um(u~)+wf xˉ,umw=xf xˉ,umδxuf xˉ,umu~+wf xˉ,umw=δxf xˉ,umδx+u~f xˉ,umu~+wf xˉ,umw(III-2-2)
就是文献中的式 (428)1, 简写为

δ x ˙ = A δ x + B u ~ + C w (428) \dot{\delta \mathbf{x}} = \mathbf{A} \delta \mathbf{x} + \mathbf{B} \tilde{\mathbf{u}} + \mathbf{C}\mathbf{w} \tag{428} δx˙=Aδx+Bu~+Cw(428)

实际上, 式 (425) 中把 IMU 的加速度和角速度 u = [ a m − a n ω m − ω n ] \mathbf{u} = \begin{bmatrix} \mathbf{a}_m - \mathbf{a}_n \\ \boldsymbol{\omega}_m - \boldsymbol{\omega}_n\end{bmatrix} u=[amanωmωn] 作为该系统的控制输入. 注意此处 u \mathbf{u} u 与实际真实 IMU 值 ( a t \mathbf{a}_t at, ω t \boldsymbol{\omega}_t ωt) 的区别, 去除了作为状态量的游走偏差和加速度值 ( δ a b \delta \mathbf{a}_{b} δab, δ ω b \delta \boldsymbol{\omega}_{b} δωb, δ g \delta \mathbf{g} δg). 因为捷联惯导系统 IMU 状态是由外部平台决定的, 将 IMU 部分测量值视作捷联惯导系统的控制输入也合情合理.
形式上, 式 (428) 中的 u ~ = [ a n ω n ] \tilde{\mathbf{u}} = \begin{bmatrix} \mathbf{a}_n \\ \boldsymbol{\omega}_n\end{bmatrix} u~=[anωn] 是否作为误差状态方程 (428) 的控制输入? 因为 u ~ \tilde{\mathbf{u}} u~ 是随机变量, 故这这样的对比不可行.

数值计算上需要将连续误差方程 (428) 两边在时间区间 ( n Δ t , ( n + 1 ) Δ t n\Delta t, (n+1)\Delta t nΔt,(n+1)Δt) 上积分, 转换为离散误差方程

δ x n + 1 = δ x n + ∫ n Δ t ( n + 1 ) Δ t A δ x ( τ )   d τ + ∫ n Δ t ( n + 1 ) Δ t B u ~ ( τ )   d τ + ∫ n Δ t ( n + 1 ) Δ t C w ( τ )   d τ (431) \delta\mathbf{x}_{n+1} = \delta\mathbf{x}_{n} + \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{A} \delta \mathbf{x}(\tau) \, {\rm d}\tau + \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{B} \tilde{\mathbf{u}}(\tau) \, {\rm d}\tau + \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{C}\mathbf{w}(\tau) \, {\rm d}\tau \tag{431} δxn+1=δxn+nΔt(n+1)ΔtAδx(τ)dτ+nΔt(n+1)ΔtBu~(τ)dτ+nΔt(n+1)ΔtCw(τ)dτ(431)

对比原始的 error-state kinematics 式 (238a-238f), 可知其中的

B = [ 0 0 − R 0 0 − I 0 0 0 0 0 0 ] C = [ 0 0 0 0 0 0 I 0 0 I 0 0 ] (451) \mathbf{B} = \begin{bmatrix} 0 &0\\ -\mathbf{R} &0\\ 0 &-\mathbf{I}\\ 0 &0\\ 0 &0\\ 0 &0 \end{bmatrix} \qquad C= \begin{bmatrix} 0 &0\\ 0 &0\\ 0 &0\\ \mathbf{I} &0\\ 0 &\mathbf{I}\\ 0 &0 \end{bmatrix} \tag{451} B= 0R000000I000 C= 000I000000I0 (451)

3. 积分计算

下面针对离散误差方程 (431) 分别计算和说明.

(a) 很短的时间区间 ( n Δ t , ( n + 1 ) Δ t n\Delta t, (n+1)\Delta t nΔt,(n+1)Δt) 上, 假设系数 A \mathbf{A} A B \mathbf{B} B C \mathbf{C} C 都是常数矩阵, 取在 ( x ˉ \bar{\mathbf{x}} xˉ, u m \mathbf{u}_m um) 处的值. 所以在积分时间步内把系统看作线性时不变系统 (LTI).

(b) 由式 (I-1-1) 和 (I-1-3) 可知 u ~ \tilde{\mathbf{u}} u~ 的分布
u ~ = [ a n ω n ] ∼ N [ 0 , [ σ a ~ n 2 I 0 0 σ ω ~ n 2 I ] ] (III-3-1) \tilde{\mathbf{u}} = \begin{bmatrix} \mathbf{a}_n \\ \boldsymbol{\omega}_n\end{bmatrix} \thicksim \mathcal{N}\left [\mathbf{0}, \begin{bmatrix} \sigma_{\tilde{\mathbf{a}}_n}^2 \mathbf{I} &\mathbf{0}\\\mathbf{0} &\sigma_{\tilde{\boldsymbol{\omega}}_n}^2 \mathbf{I} \end{bmatrix}\right] \tag{III-3-1} u~=[anωn]N[0,[σa~n2I00σω~n2I]](III-3-1)

© u ~ \tilde{\mathbf{u}} u~ 是混合进入测量值 u m \mathbf{u}_m um 的噪声信号, 是在上一采样时刻 ( t = n Δ t t = n\Delta t t=nΔt ) 产生的值. u ~ \tilde{\mathbf{u}} u~ 作为误差运动系统的控制输入部分, 只在采样时刻输入控制量, 在时间区间 ( n Δ t , ( n + 1 ) Δ t n\Delta t, (n+1)\Delta t nΔt,(n+1)Δt) 内保持为常量, 即

u ~ ( τ ) = u ~ ( n Δ t ) ≜ u ~ n , n Δ t < τ < ( n + 1 ) Δ t (427) \tilde{\mathbf{u}}(\tau)= \tilde{\mathbf{u}}(n \Delta t) \triangleq\tilde{\mathbf{u}}_n, \quad n\Delta t < \tau < (n+1)\Delta t \tag{427} u~(τ)=u~(nΔt)u~n,nΔt<τ<(n+1)Δt(427)

计算控制输入误差积分项
∫ n Δ t ( n + 1 ) Δ t u ~ ( τ ) d τ = Δ t u ~ n (III-3-2) \int_{n\Delta t}^{(n+1)\Delta t } \tilde{\mathbf{u}}(\tau) {\rm d}\tau = \Delta t \tilde{\mathbf{u}}_n \tag{III-3-2} nΔt(n+1)Δtu~(τ)dτ=Δtu~n(III-3-2)
下面计算 Δ t u ~ n \Delta t \tilde{\mathbf{u}}_n Δtu~n 期望和协方差
E [ Δ t u ~ n ] = Δ t E [ u ~ n ] = 0 \mathbf{E}[\Delta t \tilde{\mathbf{u}}_n] = \Delta t \mathbf{E}[ \tilde{\mathbf{u}}_n] =\mathbf{0} E[Δtu~n]=ΔtE[u~n]=0

E [ ( Δ t u ~ n − E [ Δ t u ~ n ] ) ( Δ t u ~ n − E [ Δ t u ~ n ] ) T ] = E [ Δ t u ~ n u ~ n T Δ t ] = [ σ a ~ n 2 I 0 0 σ ω ~ n 2 I ] Δ t 2 \mathbf{E}\left[(\Delta t \tilde{\mathbf{u}}_n - \mathbf{E}[\Delta t \tilde{\mathbf{u}}_n])(\Delta t \tilde{\mathbf{u}}_n - \mathbf{E}[\Delta t \tilde{\mathbf{u}}_n])^{\rm T}\right] = \mathbf{E} \left[\Delta t \tilde{\mathbf{u}}_n \tilde{\mathbf{u}}_n^{\rm T} \Delta t \right] = \begin{bmatrix} \sigma_{\tilde{\mathbf{a}}_n}^2 \mathbf{I} &\mathbf{0}\\\mathbf{0} &\sigma_{\tilde{\boldsymbol{\omega}}_n}^2 \mathbf{I} \end{bmatrix} {\Delta t}^2 E[(Δtu~nE[Δtu~n])(Δtu~nE[Δtu~n])T]=E[Δtu~nu~nTΔt]=[σa~n2I00σω~n2I]Δt2

Δ t u ~ n = ∼ N [ 0 , [ σ a ~ n 2 I 0 0 σ ω ~ n 2 I ] Δ t 2 ] (III-3-3) \Delta t \tilde{\mathbf{u}}_n = \thicksim \mathcal{N}\left [\mathbf{0}, \begin{bmatrix} \sigma_{\tilde{\mathbf{a}}_n}^2 \mathbf{I} &\mathbf{0}\\\mathbf{0} &\sigma_{\tilde{\boldsymbol{\omega}}_n}^2 \mathbf{I} \end{bmatrix}{\Delta t}^2\right] \tag{III-3-3} Δtu~n=N[0,[σa~n2I00σω~n2I]Δt2](III-3-3)

(d) 随机噪声 (参考式 (I-4-1) 和 (I-4-4))
w = [ a w ω w ] ∼ N [ 0 , [ σ a w 2 I 0 0 σ ω w 2 I ] ] (III-3-4) \mathbf{w} = \begin{bmatrix} \mathbf{a}_w \\ \boldsymbol{\omega}_w \end{bmatrix} \thicksim \mathcal{N}\left[\mathbf{0}, \begin{bmatrix}\sigma_{\mathbf{a}_w}^2 \mathbf{I} &0 \\0 &\sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I} \end{bmatrix}\right] \tag{III-3-4} w=[awωw]N[0,[σaw2I00σωw2I]](III-3-4)
在时间区间 ( n Δ t , ( n + 1 ) Δ t n\Delta t, (n+1)\Delta t nΔt,(n+1)Δt) 上持续变化地影响系统. 对比式 (I-2-4) 可知随机变量积分项

w n ≜ ∫ n Δ t ( n + 1 ) Δ t w ( τ )   d τ (433) \mathbf{w}_n \triangleq \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{w}(\tau) \, {\rm d}\tau \tag{433} wnnΔt(n+1)Δtw(τ)dτ(433)

为一高斯分布.

(e) 求随机积分项 w n \mathbf{w}_n wn 的期望和协方差矩阵
E [ w n ] = E [ ∫ n Δ t ( n + 1 ) Δ t w ( τ )   d τ ] = ∫ n Δ t ( n + 1 ) Δ t E [ w ( τ ) ]   d τ = 0 \mathbf{E}[\mathbf{w}_n] = \mathbf{E}\left[\int_{n\Delta t}^{(n+1)\Delta t} \mathbf{w}(\tau) \, {\rm d}\tau\right] = \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{E}[\mathbf{w}(\tau)] \, {\rm d}\tau = 0 E[wn]=E[nΔt(n+1)Δtw(τ)dτ]=nΔt(n+1)ΔtE[w(τ)]dτ=0

E [ ( w n − E [ w n ] ) ( w n − E [ w n ] ) T ] = E [ w n   w n T ] = E [ ∫ n Δ t ( n + 1 ) Δ t w ( τ )   d τ ∫ n Δ t ( n + 1 ) Δ t w T ( τ )   d τ ] = E [ ∫ n Δ t ( n + 1 ) Δ t ∫ n Δ t ( n + 1 ) Δ t w ( τ ) w T ( υ )   d τ   d υ ] = ∫ n Δ t ( n + 1 ) Δ t ∫ n Δ t ( n + 1 ) Δ t E [ w ( τ ) w T ( υ ) ]   d τ   d υ (III-3-5) \begin{aligned} \mathbf{E}\left[(\mathbf{w}_n - \mathbf{E}[\mathbf{w}_n])(\mathbf{w}_n - \mathbf{E}[\mathbf{w}_n])^{\rm T}\right] & = \mathbf{E}\left[\mathbf{w}_n \,\mathbf{w}_n ^{\rm T}\right] \\ &= \mathbf{E}\left[\int_{n\Delta t}^{(n+1)\Delta t} \mathbf{w}(\tau) \, {\rm d}\tau \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{w}^{\rm T}(\tau) \, {\rm d}\tau \right] \\ &= \mathbf{E}\left[\int_{n\Delta t}^{(n+1)\Delta t} \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{w}(\tau) \mathbf{w}^{\rm T}(\upsilon) \, {\rm d}\tau \, {\rm d}\upsilon \right]\\ &=\int_{n\Delta t}^{(n+1)\Delta t} \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{E} \left[ \mathbf{w}(\tau) \mathbf{w}^{\rm T}(\upsilon)\right] \, {\rm d}\tau \, {\rm d}\upsilon \end{aligned} \tag{III-3-5} E[(wnE[wn])(wnE[wn])T]=E[wnwnT]=E[nΔt(n+1)Δtw(τ)dτnΔt(n+1)ΔtwT(τ)dτ]=E[nΔt(n+1)ΔtnΔt(n+1)Δtw(τ)wT(υ)dτdυ]=nΔt(n+1)ΔtnΔt(n+1)ΔtE[w(τ)wT(υ)]dτdυ(III-3-5)

已知 w ( t ) \mathbf{w}(t) w(t) 是随机白噪声, 故当 τ ≠ υ \tau \neq \upsilon τ=υ 时, w ( t ) \mathbf{w}(t) w(t) w ( υ ) \mathbf{w}(\upsilon) w(υ) 独立不相关, 即
E [ w ( τ ) w T ( υ ) ] = [ σ a w 2 I 0 0 σ ω w 2 I ] δ ( τ − υ ) (III-3-6) \mathbf{E} \left[ \mathbf{w}(\tau) \mathbf{w}^{\rm T}(\upsilon)\right] = \begin{bmatrix}\sigma_{\mathbf{a}_w}^2 \mathbf{I} &0 \\0 &\sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I} \end{bmatrix} \delta(\tau-\upsilon) \tag{III-3-6} E[w(τ)wT(υ)]=[σaw2I00σωw2I]δ(τυ)(III-3-6)
继续推导式 (III-3-5)
E [ ( w n − E [ w n ] ) ( w n − E [ w n ] ) T ] = ∫ n Δ t ( n + 1 ) Δ t ∫ n Δ t ( n + 1 ) Δ t E [ w ( τ ) w T ( υ ) ]   d τ   d υ = ∫ n Δ t ( n + 1 ) Δ t ∫ n Δ t ( n + 1 ) Δ t [ σ a w 2 I 0 0 σ ω w 2 I ] δ ( τ − υ )   d τ   d υ = ∫ n Δ t ( n + 1 ) Δ t [ σ a w 2 I 0 0 σ ω w 2 I ]   d υ = [ σ a w 2 I 0 0 σ ω w 2 I ] Δ t (III-3-7) \begin{aligned} \mathbf{E}\left[(\mathbf{w}_n - \mathbf{E}[\mathbf{w}_n])(\mathbf{w}_n - \mathbf{E}[\mathbf{w}_n])^{\rm T}\right] &=\int_{n\Delta t}^{(n+1)\Delta t} \int_{n\Delta t}^{(n+1)\Delta t} \mathbf{E} \left[ \mathbf{w}(\tau) \mathbf{w}^{\rm T}(\upsilon)\right] \, {\rm d}\tau \, {\rm d}\upsilon \\ &= \int_{n\Delta t}^{(n+1)\Delta t} \int_{n\Delta t}^{(n+1)\Delta t} \begin{bmatrix}\sigma_{\mathbf{a}_w}^2 \mathbf{I} &0 \\0 &\sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I} \end{bmatrix} \delta(\tau-\upsilon) \, {\rm d}\tau \, {\rm d}\upsilon\\ &= \int_{n\Delta t}^{(n+1)\Delta t} \begin{bmatrix}\sigma_{\mathbf{a}_w}^2 \mathbf{I} &0 \\0 &\sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I} \end{bmatrix} \, {\rm d}\upsilon\\ &= \begin{bmatrix}\sigma_{\mathbf{a}_w}^2 \mathbf{I} &0 \\0 &\sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I} \end{bmatrix} \Delta t \end{aligned} \tag{III-3-7} E[(wnE[wn])(wnE[wn])T]=nΔt(n+1)ΔtnΔt(n+1)ΔtE[w(τ)wT(υ)]dτdυ=nΔt(n+1)ΔtnΔt(n+1)Δt[σaw2I00σωw2I]δ(τυ)dτdυ=nΔt(n+1)Δt[σaw2I00σωw2I]dυ=[σaw2I00σωw2I]Δt(III-3-7)
最终, 可知随机积分项
w n ∼ N [ 0 , [ σ a w 2 I 0 0 σ ω w 2 I ] Δ t ] (III-3-8) \mathbf{w}_n \thicksim \mathcal{N}\left[\mathbf{0}, \begin{bmatrix}\sigma_{\mathbf{a}_w}^2 \mathbf{I} &0 \\0 &\sigma_{\boldsymbol{\omega}_w}^2 \mathbf{I} \end{bmatrix} \Delta t\right] \tag{III-3-8} wnN[0,[σaw2I00σωw2I]Δt](III-3-8)

4. 系统方程整理

这样式 (431) 就可以写成式 (435) 形式
δ x n + 1 = e A Δ t δ x n ⏟ d e t e r m i n i s t i c + B Δ t u ~ n + C w n ⏟ s t o c h a s t i c (III-4-1) \delta\mathbf{x}_{n+1} =\underbrace{e^{\mathbf{A}\Delta t} \delta \mathbf{x}_n }_{\rm deterministic} + \underbrace{ \mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n}_{\rm stochastic} \tag{III-4-1} δxn+1=deterministic eAΔtδxn+stochastic BΔtu~n+Cwn(III-4-1)
现在可以把两个随机项合并为一项,
B Δ t u ~ n + C w n = [ B C ] [ Δ t u ~ n w n ] (III-4-2) \mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n = \begin{bmatrix} B &C \end{bmatrix} \begin{bmatrix} \Delta t \tilde{\mathbf{u}}_n \\ \mathbf{w}_n\end{bmatrix} \tag{III-4-2} BΔtu~n+Cwn=[BC][Δtu~nwn](III-4-2)
计算合并后的随机项的期望和协方差
E [ B Δ t u ~ n + C w n ] = 0 (III-4-3) \mathbf{E}[\mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n] = 0 \tag{III-4-3} E[BΔtu~n+Cwn]=0(III-4-3)

E [ ( B Δ t u ~ n + C w n ) ( B Δ t u ~ n + C w n ) T ] = B   E [ ( Δ t u ~ n ) ( Δ t u ~ n ) T ]   B T + C   E [ w n w n T ]   C T + B   E [ ( Δ t u ~ n ) w n T ]   C T + C   E [ w n ( Δ t u ~ n ) T ]   B T (III-4-4) \begin{aligned} &\mathbf{E}\left[(\mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n)(\mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n)^{\rm T}\right] \\=& \mathbf{B} \, \mathbf{E} \left[ (\Delta t \tilde{\mathbf{u}}_n)(\Delta t \tilde{\mathbf{u}}_n)^{\rm T}\right ] \,\mathbf{B}^{\rm T} + \mathbf{C} \, \mathbf{E} \left[ \mathbf{w}_n \mathbf{w}_n^{\rm T}\right]\,\mathbf{C}^{\rm T} \\ &+ \mathbf{B} \, \mathbf{E} \left[ (\Delta t \tilde{\mathbf{u}}_n)\mathbf{w}_n^{\rm T}\right ] \,\mathbf{C}^{\rm T} + \mathbf{C} \, \mathbf{E} \left[\mathbf{w}_n(\Delta t \tilde{\mathbf{u}}_n)^{\rm T}\right ] \,\mathbf{B}^{\rm T} \end{aligned} \tag{III-4-4} =E[(BΔtu~n+Cwn)(BΔtu~n+Cwn)T]BE[(Δtu~n)(Δtu~n)T]BT+CE[wnwnT]CT+BE[(Δtu~n)wnT]CT+CE[wn(Δtu~n)T]BT(III-4-4)

需要说明 Δ t u ~ n \Delta t \tilde{\mathbf{u}}_n Δtu~n w n \mathbf{w}_n wn 之间相互独立, 故有
E [ ( Δ t u ~ n ) w n T ] = E [ Δ t u ~ n ] E [ w n ] T = 0 (III-4-5) \mathbf{E} \left[ (\Delta t \tilde{\mathbf{u}}_n)\mathbf{w}_n^{\rm T}\right ] = \mathbf{E} \left[ \Delta t \tilde{\mathbf{u}}_n\right ] \mathbf{E} \left[ \mathbf{w}_n\right ]^{\rm T} = 0 \tag{III-4-5} E[(Δtu~n)wnT]=E[Δtu~n]E[wn]T=0(III-4-5)
同理
E [ w n ( Δ t u ~ n ) T ] = 0 (III-4-6) \mathbf{E} \left[\mathbf{w}_n(\Delta t \tilde{\mathbf{u}}_n)^{\rm T}\right ] =0 \tag{III-4-6} E[wn(Δtu~n)T]=0(III-4-6)
这样协方差计算式 (III-4-4) 就有
E [ ( B Δ t u ~ n + C w n ) ( B Δ t u ~ n + C w n ) T ] = B   E [ ( Δ t u ~ n ) ( Δ t u ~ n ) T ]   B T + C   E [ w n w n T ]   C T = ( 451 ) ,   ( I I I − 3 − 3 ) ,   ( I I I − 3 − 8 ) [ 0 0 0 0 0 0 0 σ a ~ n 2 Δ t 2 I 0 0 0 0 0 0 σ ω ~ n 2 Δ t 2 I 0 0 0 0 0 0 σ a w 2 Δ t I 0 0 0 0 0 0 σ ω w 2 Δ t I 0 0 0 0 0 0 0 ] (III-4-7) \begin{aligned} &\mathbf{E}\left[(\mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n)(\mathbf{B}\Delta t \tilde{\mathbf{u}}_n + \mathbf{C}\mathbf{w}_n)^{\rm T}\right] \\ =& \mathbf{B} \, \mathbf{E} \left[ (\Delta t \tilde{\mathbf{u}}_n)(\Delta t \tilde{\mathbf{u}}_n)^{\rm T}\right ] \,\mathbf{B}^{\rm T} + \mathbf{C} \, \mathbf{E} \left[ \mathbf{w}_n \mathbf{w}_n^{\rm T}\right]\,\mathbf{C}^{\rm T} \\ \overset{\rm (451),\, (III-3-3),\,(III-3-8)}{=}& \begin{bmatrix} 0 &0 &0 &0 &0 &0\\ 0 &\sigma_{\tilde{\mathbf{a}}_n}^2 {\Delta t}^2 \mathbf{I} &0 &0 &0 &0\\ 0 &0 &\sigma_{\tilde{\boldsymbol{\omega}}_n}^2 {\Delta t}^2 \mathbf{I} &0 &0 &0 \\ 0 &0 &0 &\sigma_{\mathbf{a}_w}^2 \Delta t \mathbf{I} & 0 &0\\ 0 &0 &0 &0 &\sigma_{\boldsymbol{\omega}_w}^2 \Delta t \mathbf{I} &0\\ 0 &0 &0 &0 &0 &0 \end{bmatrix} \end{aligned} \tag{III-4-7} ==(451),(III33),(III38)E[(BΔtu~n+Cwn)(BΔtu~n+Cwn)T]BE[(Δtu~n)(Δtu~n)T]BT+CE[wnwnT]CT 0000000σa~n2Δt2I000000σω~n2Δt2I000000σaw2ΔtI000000σωw2ΔtI0000000 (III-4-7)
这样式 (III-4-1) 进一步简写为
δ x n + 1 = e A Δ t δ x n + i (III-4-8) \delta\mathbf{x}_{n+1} ={e^{\mathbf{A}\Delta t} \delta \mathbf{x}_n } + \mathbf{i} \tag{III-4-8} δxn+1=eAΔtδxn+i(III-4-8)

i ∼ N [ 0 6 × 1 ,   [ 0 σ a ~ n 2 Δ t 2 I 0 σ ω ~ n 2 Δ t 2 I σ a w 2 Δ t I 0 σ ω w 2 Δ t I 0 ] ] (III-4-9) \mathbf{i} \thicksim \mathcal{N}\left[\mathbf{0}_{6 \times 1}, \, \begin{bmatrix} 0 & & & & &\\ &\sigma_{\tilde{\mathbf{a}}_n}^2 {\Delta t}^2 \mathbf{I} & & &0 &\\ & &\sigma_{\tilde{\boldsymbol{\omega}}_n}^2 {\Delta t}^2 \mathbf{I} & & & \\ & & &\sigma_{\mathbf{a}_w}^2 \Delta t \mathbf{I} & &\\ &0 & & &\sigma_{\boldsymbol{\omega}_w}^2 \Delta t \mathbf{I} &\\ & & & & &0 \end{bmatrix} \right] \tag{III-4-9} iN 06×1, 0σa~n2Δt2I0σω~n2Δt2Iσaw2ΔtI0σωw2ΔtI0 (III-4-9)

另外由式 (451) 中 B \mathbf{B} B C \mathbf{C} C 的结构, 合并的随机项不会直接在状态 δ p \delta\mathbf{p} δp g \mathbf{g} g 的运动方程中呈现, 为了减少计算量, 直接设定相应 i \mathbf{i} i 的分量为 0

i = [ 0 v i θ i a i ω i 0 ] (459) \mathbf{i} = \begin{bmatrix} 0\\ \mathbf{v}_{\mathbf{i}}\\ \boldsymbol{\theta}_{\mathbf{i}}\\ \mathbf{a}_{\mathbf{i}}\\ \boldsymbol{\omega}_{\mathbf{i}}\\ 0 \end{bmatrix} \tag{459} i= 0viθiaiωi0 (459)

结论

本文主要关注 IMU 误差建模部分, 对 IMU 噪声和扰动中的白噪声和随机游走进行了分析, 噪声和扰动在误差状态模型中的积分及分布, 体现了误差和扰动在系统中的传递过程.
本文完毕.

参考文献

[1] Joan Solà, "Quaternion kinematics for the error-state Kalman filter", arXiv, 2017, https://arxiv.org/abs/1711.02508
[2] "BROWNIAN MOTION", http://galton.uchicago.edu/~lalley/Courses/312/BrownianMotion312.pdf, in "Statistics 312: Stochastic Processes Autumn 2016", by Steve Lalley, http://galton.uchicago.edu/~lalley/Courses/312/

[3] “ONE-DIMENSIONAL RANDOM WALKS”, http://galton.uchicago.edu/~lalley/Courses/312/RW.pdf, in “Statistics 312: Stochastic Processes Autumn 2016”, by Steve Lalley, http://galton.uchicago.edu/~lalley/Courses/312/

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值