μμ
VINS-Monoλ
Όλ¬Έμ Appendix A βQuaternion-based IMU Preintegrationβμ λ΄μ©μ κΈ°λ°μΌλ‘ νκ³ , λ€μμ λ
Όλ¬Έλ€μ μ°Έμ‘°νμ¬ μμ±νμμ΅λλ€.
[1] Efficient Integration of Inertial Observation into Visual SLAM without Initialization
Notation
- (β
)w : world frame, μ€λ ₯μ λ°©ν₯μ world frameμ zμΆκ³Ό alignλμ΄ μμ΅λλ€.
- (β
)b : body frame (IMU frame)
- (β
)c : camera frame
- R : rotation matrix
- q : Hamilton quaternion
- μ£Όλ‘ state vectorμ μ¬μ©
- 3D vectorμ νΈν νμ μ°μ°μ μν΄μ μ¬μ©λ¨
- qbwβ,pbwβ : rotation and translation from the body frame to the world frame
- bkβ : the body frame while taking the kth image
- ckβ : the camera frame while taking the kth image.
- β : represents the multiplication operation between two quaternions
- gw=[0,0,g]T : the gravity vector in the world frame
- (β
)^β : the noisy measurement or estimation of a certain quantity
μ 리
body frameμμ μΈ‘μ λ IMU μΈ‘μ κ°μ acceleration bias baβ, gyroscope bias bwβ, additive noiseμ μν₯μ λ°λλ€. accelerometerμ gyroscopeμ raw measurements a^,Ο^λ λ€μκ³Ό κ°μ΄ ννν μ μλ€.
a^tβΟ^tββ=atβ+batββ+Rwtβgw+naβ=Οtβ+bΟtββ+nΟββββ μ΄ λ, additive noiseκ° Gaussian white noiseλΌκ³ κ°μ νλ€. naββΌN(0,Οa2β),Β nΟββΌN(0,ΟΟ2β)
Acceleration biasμ gyroscope biasμ λͺ¨λΈμ random walkμ΄κ³ , derivativesλ Gaussian white noiseμ΄λ€. nbaβββΌN(0,Οbaβ2β),Β nbΟβββΌN(0,ΟbΟβ2β)
bΛatββ=nbaββbΛΟtββ=nbΟββββ νλ μ bkβ,bk+1βμ μκ° μ λ³΄μΈ tkβ,tk+1βμ λνμ¬, position, velocity, orientation stateλ [tkβ,tk+1β]μ time interval λμ IMU μΈ‘μ κ°μμν΄ propagate λ μ μλ€.
pbk+1βwβvbk+1βwβqbk+1βwββ=pbkβwβ+vbkβwβΞtkβ+=vbkβwβ+=qbkβwβββββ«β«tβ[tkβ,tk+1β]βRtwβ((a^tββbatβββnaβ)βgw)dt2β«tβ[tkβ,tk+1β]βRtwβ((a^tββbatβββnaβ)βgw)dtβ«tβ[tkβ,tk+1β]β21βΞ©(Ο^tββbΟtβββnΟβ)qtbkββdtβββ where
Ξ©(Ο)=[ββΟβΓββΟTββΟ0β],βΟβΓβ=β0ΟzββΟyβββΟzβ0ΟxββΟyββΟxβ0ββββ Ξtkβ is the duration between the time interval [tkβ,tk+1β].
IMU state propagationμ bkβ frameμμμ rotation, position, velocityκ° νμνλ€λ κ²μ μ μ μλ€. stateκ° λ³νκΈ° μμνλ©΄, μ°λ¦¬λ IMU μΈ‘μ κ°μ repropagate ν΄μΌλλ€. optimization-based algorithmμμλ μ°λ¦¬κ° λ§€λ² poseλ₯Ό 보μ νκΈ° λλ¬Έμ λ§€λ² repropagateμ ν΄μΌλλ€. μ΄κ²μ μ»΄ν¨ν
리μμ€λ₯Ό λ§μ΄ μ¬μ©νκΈ° λλ¬Έμ μ΄λ₯Ό νΌνκΈ° μν΄ preintegration algorithmμ μ¬μ©νλ€.
reference frameμ world frameμμ local frame bkβλ‘ λ°κΎΌ νμ, μ°λ¦¬λ linear acceleration a^κ³Ό angular velocity Ο^μ κ΄λ ¨λ λΆλΆλ€μ preintegrateν μ μμ΅λλ€.
Rwbkββpbk+1βwβRwbkββvbk+1βwβqwbkβββqbk+1βwββ=Rwbkββ(pbkβwβ+vbkβwβΞtkββ21βgwΞtk2β)+Ξ±bk+1βbkββ=Rwbkββ(vbkβwββgwΞtkβ)+Ξ²bk+1βbkββ=Ξ³bk+1βbkβββββ where
Ξ±bk+1βbkββΞ²bk+1βbkββΞ³bk+1βbkβββ=β«β«tβ[tkβ,tk+1β]βRtbkββ(a^tββbatβββnaβ)dt2=β«tβ[tkβ,tk+1β]βRtbkββ(a^tββbatβββnaβ)dt=β«tβ[tkβ,tk+1β]β21βΞ©(Ο^tββbΟtβββnΟβ)Ξ³tbkββdtβββ bkβλ₯Ό biasκ° μ£Όμ΄μ§ referenceλ‘ μ΄μ©νμ¬ preintegration term (5)μ΄ IMU μΈ‘μ κ°λ§μ ν΅ν΄ ꡬν μ μλ€λ κ²μ μ μ μμ΅λλ€. Ξ±bk+1βbkββ,Ξ²bk+1βbkββ,Ξ³bk+1βbkββκ° μ€μ§ IMU biasμ κ΄λ ¨μκ³ bkβ,bk+1β frameμμμ λ€λ₯Έ stateμλ κ΄λ ¨μ΄ μλ κ²μ μ μ μμ΅λλ€.
biasμ μΆμ μ΄ λ³ν λ, λ§μ½ λ³νκ° μλ€λ©΄ Ξ±bk+1βbkββ,Ξ²bk+1βbkββ,Ξ³bk+1βbkββλ₯Ό biasμ λν 1μ°¨ κ·Όμ¬λ₯Ό ν΅ν΄ κ°μ μ μ©νκ³ , λ³νκ° ν¬λ€λ©΄ repropagate ν©λλ€. μ΄λ° λ°©λ²μ IMU μΈ‘μ κ°μ λν propagateμ λ°λ³΅μ μΌλ‘ νμ§ μκΈ° λλ¬Έμ optimization-based algorithmsμ μ¬μ©ν λ μ»΄ν¨ν
리μμ€λ₯Ό μλΉν μ μ½ν©λλ€.
discrete-time implementationμ λνμ¬ λ€μν integration λ°©λ²λ€μ΄ μ μ©λ μ μμ΅λλ€. (zero-order hold (Euler), first-order hold (midpoint), and higher order (RK4) integrationβ¦)
λ§μ½ zero-order hold discretizationμ μ¬μ©νλ€λ©΄ μ΄ κ²°κ³Όλ [19], [24]λ
Όλ¬Έκ³Ό μμΉμ μΌλ‘ λκ°μ΅λλ€. zero-order hold discretizationμ μλ₯Ό λ€μ΄λ³΄λ©΄ μ²μμ Ξ±bk+1βbkββ,Ξ²bk+1βbkββλ 0μ΄κ³ , Ξ³bk+1βbkββλ identity quaternionμ
λλ€. (4)μ λ°λ₯Έ Ξ±,Ξ²,Ξ³μ νκ· μ λ€μκ³Ό κ°μ΄ step by stepμΌλ‘ propagateλ©λλ€.
additive noise naβ,nΟβμ νκ· κ°μ 0μ
λλ€.
estimateλ preintegration κ°μ (β
)^βλ‘ νκΈ°νκ² μ΅λλ€.
Ξ±^i+1bkββΞ²^βi+1bkββΞ³^βi+1bkβββ=Ξ±^ibkββ+Ξ²^βibkββΞ΄t+21βR(Ξ³^βibkββ)(a^iββbaiββ)Ξ΄t2=Ξ²^βibkββ+R(Ξ³^βibkββ)(a^iββbaiββ)Ξ΄t=Ξ³^βibkβββ[121β(Ο^iββbΟiββ)Ξ΄tβ]βββ i λ [tkβ,tk+1β]μ¬μ΄μμ μΈ‘μ λ IMUμ μΈ‘μ μμ μ μλ―Ένλ€. Ξ΄tλ IMU κ°μ μΈ‘μ ν iμ i+1 μ¬μ΄μ time intervalμ΄λ€.
λ€μ covariance propagtaionμ μ²λ¦¬ν©λλ€. 4D rotation quaternion Ξ³tbkββκ° overparameterized λμ΄μκΈ° λλ¬Έμ, μ°λ¦¬λ error termμ νκ· μ£Όλ³μ perturbationμΌλ‘ μ μν©λλ€.
Ξ³tbkβββΞ³^βtbkβββ[121βδθtbkβββ]ββ δθtbkββλ 3D small perturbationμ
λλ€.
(5)μ continuous-time dynamics of error termsμ λ€μκ³Ό κ°μ΄ μ λν μ μμ΅λλ€.
βδαΛtbkββδβΛβtbkββδθΛtbkββΞ΄bΛatββΞ΄bΛwtββββ==ββ00000βI0000β0βRtbkβββa^tββbatβββΓβββΟ^tββbwtβββΓβ00β0βRtbkββ000β00βI00βββδαtbkββδβtbkββδθtbkββΞ΄batββΞ΄bwtββββ+β0βRtbkββ000β00βI00β000I0β0000IβββnaβnwβnbaββnbwββββFtβΞ΄ztbkββ+Gtβntβ.βββ zero-order hold discretizationμ integration periodλμ Ftβλ μμμ
λλ€. λ°λΌμ μ£Όμ΄μ§ Ξ΄tμ λν΄ Fdβ=exp(FtβΞ΄t)κ° λ©λλ€. exponential seriesλ₯Ό νμ₯νκ³ , higher order termμ μλ΅νμ¬ FdββI+FtβΞ΄tμ μ»μ μ μμ΅λλ€. continuous-time noise covariance matrix Qtβ=diag(Οa2β,ΟΟ2β,Οbaβ2β,ΟbΟβ2β)μ λνμ¬ discrete-time noise covariance matrixλ λ€μκ³Ό κ°μ΄ κ³μ°λ©λλ€.
Qdββ=β«0Ξ΄tβFdβ(Ο)GtβQtβGtTβFdβ(Ο)T=Ξ΄tFdβGtβQtβGtTβFdTββΞ΄tGtβQtβGtTββββ Initial covariance Pbkβbkββ=0μΌλ‘λΆν° covariance Pbk+1βbkββλ₯Ό λ€μκ³Ό κ°μ΄ propagate ν©λλ€.
Pt+Ξ΄tbkββ=(I+FtβΞ΄t)Ptbkββ(I+FtβΞ΄t)T+βΞ΄tGtβQtβGtβTtβ[k,k+1]βββ λμμ first-order Jacobian matrix λν initial Jacobian Jbkββ=Iλ₯Ό μ΄μ©ν΄ λ€μκ³Ό κ°μ΄ λ°λ³΅μ μΌλ‘ propagateλ μ μλ€.
Jt+Ξ΄tββ=(I+FtβΞ΄t)Jtβ,Β Β tβ[k,k+1].βββ μμ λ°λ³΅μ μ formulationμ ν΅ν΄ covariance matrix Pbk+1βbkββκ³Ό Jbk+1ββμ μ»μ μ μμ΅λλ€. biasμ λν Ξ±bk+1βbkββ,Ξ²bk+1βbkββ,Ξ³bk+1βbkββμ 1μ°¨ κ·Όμ¬λ λ€μκ³Ό κ°μ΄ μ°μ¬μ§λλ€.
Ξ±bk+1βbkββΞ²bk+1βbkββΞ³bk+1βbkββββΞ±^bk+1βbkββ+JbaβΞ±βΞ΄bakββ+JbΟβΞ±βΞ΄bΟkβββΞ²^βbk+1βbkββ+JbaβΞ²βΞ΄bakββ+JbΟβΞ²βΞ΄bΟkβββΞ³^βbk+1βbkβββ[121βJbΟβΞ³βΞ΄bΟkβββ]βββ JbaβΞ±βλ μμΉκ° Ξ΄bakββδαbk+1βbkββμΈ Jbk+1ββμ subblock matrix μ
λλ€.
JbΟβΞ±β,JbaβΞ±β,JbaβΞ²β,JbΟβΞ²β,JbΟβΞ³βμ λν΄μλ κ°μ μλ―Έκ° μ μ©λ©λλ€.
λ§μ½ bias estimationκ°μ΄ μ‘°κΈ λ³κ²½λλ€λ©΄ repropagationνλ λμ μ (11)μ μ΄μ©ν΄ preintegration κ²°κ³Όλ₯Ό 보μ ν©λλ€.
μ΄μ μ°λ¦¬λ corresponding covariance Pbk+1βbkββ κ°μ μ΄μ©ν΄ IMU μΈ‘μ κ° λͺ¨λΈμ λ€μκ³Ό κ°μ΄ μμ±ν μ μμ΅λλ€.
βΞ±^bk+1βbkββΞ²^βbk+1βbkββΞ³^βbk+1βbkββ00ββ=βRwbkββ(pbk+1βwββpbkβwβ+21βgwΞtk2ββvbkβwβΞtkβ)Rwbkββ(vbk+1βwβ+gwΞtkββvbkβwβ)qbkβwβ1ββqbk+1βwβbaβbk+1βββbaβbkββbwβbk+1βββbwβbkββββββ