센서와 상태 추정 / NOTE 22

자기센서 보정

Soft / Hard Iron Calibration

구·타원체 모델과 회귀식을 이용한 원문 보정 노트를 읽습니다.

♫ 이 문서 듣기

개념에서 수식으로

먼저 이해할 내용

자기센서의 측정점들이 원점에서 벗어나거나 축마다 서로 다른 크기로 퍼지면 방향 해석이 달라질 수 있다. 이 글은 측정점의 분포를 구 또는 축에 정렬된 타원체 식으로 적고, 그 계수에서 중심과 크기 관련 값을 읽는 전개를 다룬다.

기호를 먼저 읽기

x, y, z
한 번 측정한 세 축의 값
a, b, c
분포 중심에 해당하는 좌표
r
구 모델의 반지름
AA, BB, CC
축별 제곱항의 계수
W[[i]]
원문 Mathematica 표기에서 계수벡터의 i번째 항
X, Y
회귀 계산을 위해 모은 입력 행렬과 목표벡터

이 글의 흐름

이차식을 펼쳐 회귀 계수로 적고, 완전제곱 형태로 다시 묶어 중심을 읽는다. 구와 타원체를 구별하며, 샘플 수를 늘려 행렬을 구성하는 과정을 따라간다.

주제와 표기

Magnetic sensor Soft/Hard Iron

Elliptical Sphere

중심을 가진 타원체를 계수식으로 적는다

AA(x−a)²처럼 중심에서의 차이를 제곱하면 각 축의 퍼짐을 나타낼 수 있다. 이를 전개하면 x²·y²·z² 항, 일차항, 상수항으로 나뉜다. W의 각 성분은 이 전개식의 계수이므로, 물리적 중심 a·b·c와 같은 값으로 바로 읽지 않는다.

AA(xa)2+BB(yb)2+CC(zc)2=1
W[[1]]x2+W[[2]]y2+W[[3]]z22W[[4]]x2W[[5]]y2W[[6]]z+W[[7]]=1

완전제곱으로 묶어 중심을 되찾는다

일차항과 이차항을 묶으면 x−W[[4]]/W[[1]] 같은 형태가 된다. 괄호 안에서 빼는 값이 해당 축의 중심 좌표이다. 따라서 중심은 하나의 계수 자체가 아니라 일차항 계수와 이차항 계수의 비율로 읽는다.

W[[1]](xW[[4]]W[[1]])2+W[[2]](yW[[5]]W[[2]])2+W[[3]](zW[[6]]W[[3]])2+W[[7]]W[[4]]2W[[1]]W[[5]]2W[[2]]W[[6]]2W[[3]]=1
(abc)=(W[[4]]W[[1]]W[[5]]W[[2]]W[[6]]W[[3]])

Sphere

세 축의 크기 조건을 같게 두면 구 모델이 된다

구 모델에서는 x·y·z의 제곱항에 같은 계수를 사용한다. 타원체와 달리 세 방향에서 동일한 반지름을 전제로 하는 것이다. 이 조건이 바뀌면 회귀에 필요한 계수의 개수도 달라진다.

AA(xa)2+AA(yb)2+AA(zc)2==1
W[[1]]x2+W[[1]]y2+W[[1]]z22W[[2]]x2W[[3]]y2W[[4]]z+W[[5]]==1
W[[1]](xW[[2]]W[[1]])2+W[[1]](yW[[3]]W[[1]])2+W[[1]](zW[[4]]W[[1]])2+W[[5]]W[[2]]2W[[1]]W[[3]]2W[[1]]W[[4]]2W[[1]]=1
(abc)=(W[[2]]W[[1]]W[[3]]W[[1]]W[[4]]W[[1]])

반지름과 중심이 계수에 어떻게 들어가는지 읽는다

구 식을 r²로 나누어 전개하면 제곱항 계수와 중심 좌표가 r²에 의해 함께 스케일된다. 원문은 이 관계를 W[[1]]부터 W[[5]]에 연결한다. 중심을 얻을 때 계수의 비율을 사용하는 이유를 여기서 다시 확인할 수 있다.

(xa)2r2+(yb)2r2+(zc)2r2==1
x2+y2+z2r22axr22byr22czr2+a2+b2+c2r2==1
x=[x2+y2+z2,2x,2y,2z]
W[[1]]==1r2;
W[[2]]=ar2;
W[[3]]=br2;
W[[4]]=cr2;
W[[5]]=a2+b2+c2r2
a=W[[2]]W[[1]];
b=W[[3]]W[[1]];
c=W[[4]]W[[1]];

원래 측정값을 회귀용 입력으로 바꾼다

한 샘플의 x·y·z를 그대로 넣는 대신, x²+y²+z², −2x, −2y, −2z, 1로 구성한 한 행을 만든다. 이 행에 계수벡터 W를 곱하면 구의 전개식에 대응한다. Y의 1은 현재 모델식의 오른쪽 상수이다.

W=(xTx)1(xy)

x=[x2+y2+z2,2x,2y,2z,1]
y=[1]
W=(AABBCCDDEE)
X=(A1B1C1D1E1AtBtCtDtEt);Y=(11);
W=(XTX)1(XTY);

1

샘플을 쌓는 과정과 해의 존재는 구별한다

한 행, 두 행, 세 행으로 X를 늘려 가는 구간은 데이터가 행렬에 어떻게 들어가는지 보여준다. 그러나 미지수보다 독립적인 관측 조건이 적으면 XᵀX의 역행렬이 존재하지 않을 수 있다. 제시된 중간 출력이 모든 측정 집합에서 유일한 보정값을 보장하는 것으로 읽지 않는다.

X=(A0B0C0D01);Y=(1);
W=(XTX)1(XTY);
W//MatrixForm
5A05B05C05D051

2

X=(A0B0C0D01A1B1C1D11);Y=(11);
W=(XTX)1(XTY);
W//MatrixForm
수식

3

X=(A0B0C0D01A1B1C1D11A2B2C2D21);Y=(111);
W=(XTX)1(XTY);
W//MatrixForm
수식

4

X=(A0B0C0D01A1B1C1D11A2B2C2D21A3B3C3D31);Y=(1111);
W=(XTX)1(XTY);
W//MatrixForm
수식

t

반복 측정에서 계수를 읽는 흐름을 정리한다

각 시점의 측정값으로 A_t·B_t·C_t·D_t를 만들고 행렬에 쌓는다. 계수 W를 얻은 다음 원문이 제시한 관계로 반지름과 중심을 계산한다. 계수마다 역할이 다르므로 단위를 포함한 원래 모델의 정의와 함께 해석한다.

At=x2+y2+z2;
Bt=2x;
Ct=2y;
Dt=2z;
Et=1;
X=(A1B1C1D11:::::AtBtCtDt1);Y=(1:1);
W=(XTX)1(XTY);
W//MatrixForm
수식
수식
수식
수식
W[[5]]=5
r2=1W[[1]];
a=W[[2]]W[[1]];
b=W[[3]]W[[1]];
c=W[[4]]W[[1]];

같은 모델을 다른 묶음으로 다시 확인한다

이 구간은 구 모델의 입력 행과 계수 복원 관계를 다시 제시한다. 앞 구간과 동일한 역할의 항을 짝지어 보면 반복되는 식의 목적을 이해할 수 있다. W[[5]]=5처럼 고정값으로 보이는 중간 결과는 모든 데이터에 대한 일반 보정 상수로 확정하지 않는다.

W=(xTx)1(xy)

x=[x2+y2+z2,2x,2y,2z,1]
y=[1]
수식
수식
수식
수식
W[[5]]=5
r2=1W[[1]];
a=W[[2]]W[[1]];
b=W[[3]]W[[1]];
c=W[[4]]W[[1]];

Elliptical Sphere

축마다 다른 계수를 갖는 타원체로 확장한다

이번에는 x²·y²·z²를 각각 독립된 입력 열로 둔다. 이 때문에 구 모델보다 더 많은 계수가 필요하며, 중심을 되찾는 계수의 짝도 달라진다. xy·yz·zx 교차항이 제시되지 않은 식은 축에 정렬된 모델 범위에서 읽는다.

AA(xa)2+BB(yb)2+CC(zc)2=1
W[[1]]x2+W[[2]]y2+W[[3]]z22W[[4]]x2W[[5]]y2W[[6]]z+W[[7]]=1
W[[1]](xW[[4]]W[[1]])2+W[[2]](yW[[5]]W[[2]])2+W[[3]](zW[[6]]W[[3]])2+W[[7]]W[[4]]2W[[1]]W[[5]]2W[[2]]W[[6]]2W[[3]]=1
(abc)=(W[[4]]W[[1]]W[[5]]W[[2]]W[[6]]W[[3]])

W=(xTx)1(xy)

확장한 행렬에서도 같은 회귀 원리를 사용한다

샘플별 일곱 성분의 입력을 쌓아 W를 구하는 형식이다. 행을 늘려 가는 과정은 앞의 구 모델과 같지만, 충분한 독립 정보가 있어야 계수를 구별할 수 있다. 이미지에만 있는 긴 성분 출력은 이 행렬 연산의 구체적 전개이며, 보이지 않는 계수를 임의로 정하지 않는다.

x=[x2,y2,z2,2x,2y,2z,1]

1

X=(A1B1C1D1E1F11);Y=(1);
W=(XTX)1(XTY);
W//MatrixForm
7A17B17C17D17E17F171

2

X=(A1B1C1D1E1F11A2B2C2D2E2F21);Y=(11);
W=(XTX)1(XTY);
W//MatrixForm
수식

3

X=(A1B1C1D1E1F11A2B2C2D2E2F21A3B3C3D3E3F31);Y=(111);
W=(XTX)1(XTY);
W//MatrixForm
수식

t

X=(A1B1C1D1E1F11A2B2C2D2E2F21AtBtCtDtEtFt1);Y=(111);
W=(XTX)1(XTY);
W//MatrixForm
수식
수식
수식
수식
수식
수식
수식

정리하면

보정 계수의 목적은 식을 복잡하게 만드는 것이 아니라 측정 분포의 중심 이동과 축별 크기를 분리하는 데 있다. 원문의 모델이 모든 교차축 왜곡까지 포함한다고 확대 해석하지 않는다.