센서와 상태 추정 / NOTE 16

관측 벡터로부터 자세 추정

Orientation from Vector Observations

가속도·자기장 관측, 목적함수와 자코비안 전개를 정리합니다.

♫ 이 문서 듣기

개념에서 수식으로

먼저 이해할 내용

기준 방향을 알고 있고 센서에서 같은 방향을 측정했다면, 두 표현을 가장 잘 맞추는 회전을 찾을 수 있다. 이 글은 기준벡터를 현재 자세로 변환한 예측값과 실제 관측값의 차이를 줄여 자세를 추정하는 과정을 다룬다.

기호를 먼저 읽기

d̂ᴱ
기준 좌표계에서 정한 방향
ŝˢ
센서 좌표계에서 측정한 방향
두 방향 표현을 연결할 자세
f
변환한 기준 방향과 측정 방향의 차이
J
자세 성분 변화에 대한 잔차의 민감도
ĝ, b̂, â, m̂
중력·자기장 기준과 정규화된 관측 방향

이 글의 흐름

기준벡터와 측정벡터를 구별하고 동일한 좌표계로 맞춘다. 그 차이로 잔차를 만들고, 자코비안과 기울기를 이용해 자세를 갱신한다. 중력과 자기장에 같은 절차를 적용한 뒤 함께 묶는다.

주제와 표기

Orientation from vector observations

A tri-axis accelerometer (Linear accelerations due to motion)

기준 방향과 관측 방향을 구분한다

가속도계와 자기센서에 관한 문장은 어떤 방향 정보를 자세 추정에 사용할지 설명한다. d̂는 미리 정한 기준이고 ŝ는 센서가 관측한 방향이다. q는 이 두 표현 사이의 회전을 찾기 위해 조정할 값이다.

the field of gravity

A tri-axis magnetometer (Local magnetic flux and distortions)

the earth ' s magnetic field

Quaternion

ESq^=(q1q2q3q4)

Predefined reference direction

같은 좌표계로 옮긴 뒤 차이를 구한다

q*⊗d̂⊗q는 기준 방향을 비교 가능한 표현으로 옮기는 항이다. 여기에서 측정한 ŝ를 빼면 예측과 관측의 차이 f가 된다. 서로 다른 좌표계에서 얻은 성분을 변환 없이 빼는 것이 아니라, 먼저 같은 기준에 놓는 것이 핵심이다.

Ed^=(0dxdydz)

Measured direction

Ss^=(0sxsysz)

Objective function

f[ESq^,Ed^,Ss^]=ESq^Ed^ESq^Ss^

Quaternion may be found

minESq^R4f[ESq^,Ed^,Ss^]

Gradient descent algorithm

잔차를 줄이는 방향으로 자세를 갱신한다

현재 q에서 잔차와 자코비안을 구하고, Jᵀf로 입력 성분 쪽의 변화 방향을 계산한다. 이 방향과 이동 크기를 이용해 다음 q를 구하는 것이 반복 갱신의 의미이다. 잔차벡터 자체를 하나의 최소값으로 비교한다기보다, 그 크기를 줄이는 문맥으로 읽는다.

Orientation estimation of ESq^n+1

수식

step-size: α

Gradient of the solution surface (General form)

f[ESq^k,Ed^,Ss^]=JT[ESq^k,Ed^]f[ESq^k,Ed^,Ss^]

Objective function

벡터 곱을 전개하여 자코비안에 연결한다

기준벡터와 측정벡터를 네 성분으로 쓰고, 켤레가 있는 곱을 성분별로 펼친다. 그 결과를 q의 각 성분으로 미분한 것이 자코비안이다. 긴 행렬과 성분별 결과는 이 연결을 구체화한 것이며, 이미지에만 있는 항의 계수는 실제 식을 확인해야 한다.

f[ESq^,Ed^,Ss^]=ESq^Ed^ESq^Ss^
ESq^=(q1q2q3q4)
Ed^=(0dxdydz)
Ss^=(0sxsysz)
ESq^Ed^ESq^=(q1q2q3q4)(0dxdydz)(q1q2q3q4)
수식
수식
수식
수식

Jacobian matrix

수식
수식

Gradient of the solution surface (General form)

f=JTf
fg,b=Jg,b[ESq^,Eb^]Tfg,b[ESq^,Sa^,Eb^,Sm^]
수식
수식

Calculation induction

수식
수식
수식
수식

Direction of gravity (Vertical axis, z axis)

Appropriate convention (the equations simplify)

중력 기준을 선택하면 식이 단순해진다

기준 중력을 z축으로 두면 방향벡터의 대부분 성분이 0이 된다. 정규화한 가속도 측정 â와 비교하여 중력 잔차를 만들고, q의 네 성분에 대한 자코비안 J_g를 얻는다. 기준을 단순하게 정하는 것이 이후 식의 항 수를 줄여 주는 이유이다.

Eg^=(0001)

Normalized accelermeter measurement

Sa^=(0axayaz)

Objective function

수식

Jacobian matrix

Jg[ESq^]=(2q32q42q12q22q22q12q42q304q24q30)

Earth's magnetic field (One horizontal axis, Vertical axis)

Appropriate convention (the equations simplify)

자기장도 같은 잔차 구조로 다룬다

기준 자기장은 수평 성분과 수직 성분으로 표현한다. 측정한 자기장 m̂를 이 기준과 비교하면 중력과 별도의 잔차를 만들 수 있다. 이 구간의 측정벡터는 m̂로 표기되어 있으므로, 가까이 있는 가속도 관련 제목만 보고 â와 같은 값으로 취급하지 않는다.

Eb^=(0bx0bz)

Normalized accelermeter measurement

Sm^=(0mxmymz)

Objective function

수식

Jacobian matrix

수식

Magnetic distortion compensation

Declination errors

Horizontal plane:earth's surface (Heading)

Inclination errors

Vertical plane: earth's surface (Sensor's attitude)

The measured direction of the earth's magnetic field in the earth frame at time t

측정 자기장을 기준 좌표계로 옮긴다

q와 q* 사이에 m̂를 두어 기준 좌표계에서의 자기장 h를 구한다. 그다음 hₓ와 hᵧ를 제곱해 더한 뒤 제곱근을 취하면 수평 성분의 크기가 된다. 원문은 이 값을 bₓ에, h_z를 b_z에 놓아 다음 비교에 사용할 기준벡터를 구성한다.

Eh^t=(0hxhyhz)=ESq^est,t1Sm^tESq^est,t1
(0hxhyhz)=ESq^est,t1Sm^tESq^est,t1
=(q1q2q3q4)(0mxmymz)(q1q2q3q4)
수식
수식
수식
Eb^t=(0hx2+hy20hz)
(0bxbybz)=(0hx2+hy20hz)

Solution surface → minimum

중력과 자기장 정보를 하나의 보정 문제로 묶는다

중력 잔차와 자기장 잔차를 함께 고려하면 두 기준 방향에 대한 불일치를 동시에 다루게 된다. 결합한 자코비안과 잔차의 곱으로 q 성분별 변화 방향을 얻는 것이 마지막 전개의 목적이다. 묶는 행렬의 실제 행·열 배치는 제시된 전개와 차원을 확인하며 읽는다.

f[ESq^k,Ed^,Ss^]=J[ESq^k,Ed^]Tf[ESq^k,Ed^,Ss^]

Objective function

수식
수식

Jacobian matrix

Jg,b[ESq^,Eb^]=(JgT[ESq^]JbT[ESq^,Eb^])
수식

Gradient of the solution surface (General form)

수식
수식
수식

정리하면

센서의 숫자를 바로 자세라고 해석하지 않고, 기준 방향과 관측 방향이 얼마나 잘 맞는지를 기준으로 자세를 정한다. 이때 좌표계와 정규화 조건이 계산의 전제이다.