가속도 센서로 기울어진 각도 구하는 공식 유도

signer do·2024년 1월 4일
1

드론제어

목록 보기
3/3
post-thumbnail

드론 및 MPU6050의 전진방향은 +X축 방향이다.
드론의 좌측 옆면은 +Y축 방향이다. 즉 그림으로 들어가는 방향이 +Y방향.


드론의 Pitch가 θpitch\theta_{pitch}>0 만큼 회전하여 평행을 이룬 경우를 가정하자.

MPU6050 좌표계에서 빨간색 +z방향으로 받게 되는 가속도는 gcosθpitchgcos\theta_{pitch}이다.
빨간색 +x방향으로 받게 되는 가속도는 gsinθpitchgsin\theta_{pitch}인데 x방향과 같은 방향이므로, gsinθpitch-gsin\theta_{pitch}이다.

AcX=gsinθpitchAcX = -gsin\theta_{pitch}
AcY=0AcY = 0
AcZ=gcosθpitchAcZ = gcos\theta_{pitch}


아래 그림은 위의 pitch가 θpitch\theta_{pitch}>0 만큼 기울어진 평행된 드론을 후면에서 본 모습이다. 그림으로 들어가는 방향이 드론의 전진방향. MPU6050의 좌표계에서 Z방향이 받는 가속도는 gcosθpitchgcos\theta_{pitch}이다.
MPU6050의 좌표계의 X방향이 그림에서 들어가는 방향이고 받는 가속도는 gsinθpitch-gsin\theta_{pitch}이다.


이 드론의 roll 방향을 ψroll\psi_{roll}>0 만큼 기울이면, 아래와 같이 MPU6050이 받는 가속도는 달라진다.
MPU6050의 좌표계의 Z방향이 받는 가속도는 gcosθpitchcosψrollgcos\theta_{pitch} cos\psi_{roll}
Y방향이 받는 가속도는 gcosθpitchsinψroll-gcos\theta_{pitch} sin\psi_{roll}

AcX=gsinθAcX = -gsin\theta
AcY=gcosθpitchsinψrollAcY = -gcos\theta_{pitch} sin\psi_{roll}
AcZ=gcosθpitchcosψrollAcZ = gcos\theta_{pitch} cos\psi_{roll}

AcY2+AcZ2=g2cos2θpitchsin2ψroll+g2cos2θpitchcos2ψrollAcY^2+AcZ^2 = g^2cos^2\theta_{pitch}sin^2\psi_{roll} + g^2cos^2\theta_{pitch}cos^2\psi_{roll}
=g2cos2θpitch(sin2ψroll+cos2ψroll)=g^2cos^2\theta_{pitch}(sin^2\psi_{roll}+cos^2\psi_{roll})
=g2cos2θpitch=g^2cos^2\theta_{pitch}

중요한 점은 ψroll\psi_{roll}이 어떤 값을 갖더라도 θpitch\theta_{pitch}에 영향을 미치지 못한다. 즉 두 각은 서로 독립적.
따라서 어떤 θ\theta, ψ\psi 든 하나의 θ\theta로 표현할 수 있음.


최종식 유도
AcY2+AcZ2=gcosθpitch\sqrt{AcY^2+AcZ^2}=gcos\theta_{pitch}

AcX=gsinθpitchAcX = -gsin\theta_{pitch}

AcXAcY2+AcZ2=gsinθpitchgcosθpitch=tanθpitch\dfrac{-AcX}{\sqrt{AcY^2+AcZ^2}}=\dfrac{gsin\theta_{pitch}}{gcos\theta_{pitch}}=tan\theta_{pitch}

θpitch=tan1AcXAcY2+AcZ2\theta_{pitch}=tan^{-1}\dfrac{-AcX}{\sqrt{AcY^2+AcZ^2}}

θroll=tan1AcYAcX2+AcZ2\theta_{roll}=tan^{-1}\dfrac{-AcY}{\sqrt{AcX^2+AcZ^2}}

profile
Don't hesitate!

0개의 댓글