칼만필터는 어렵지 않아 로 공부하고 있습니다
칼만필터
-> 항공기나 인공위성의 위치와 자세를 측정하는 항법 분야에서 많이 사용
-> 가속도계와(accelerometer)와 자이로스코프(gyroscope)로 수평자세를 찾아냄
물체의 자세
- 물체의 자세는 오일러각도를 통해서 알 수 있음
- 가속도계와 자이로스코프 센서를 사용해서 오일러 각도를 찾아내고, 자세를 결정함
센서
1. 가속도계(Accelerometer)를 이용하여 자세 결정하기
- 가속도 수식에서 롤각(ϕ)과 피치각(θ) 추출
- 가속도계로 측정한 가속도(fx,fy,fz)에는 중력 가속도와 속도의 크기나 방향이 바뀔 때 생기는 가속도 등 다양한 종류의 가속도 포함
- 수식
⎣⎢⎡fxfyfz⎦⎥⎤=⎣⎢⎡u˙v˙w˙⎦⎥⎤+ ⎣⎢⎡0−wvw0−u−vu0⎦⎥⎤⎣⎢⎡pqr⎦⎥⎤+g⎣⎢⎡sinθ−cosθsinϕ−cosθcosϕ⎦⎥⎤
u,v,w : 이동속도/ 이동가속도(p˙,q˙,r˙)/ g:중력 가속도
가속도, 각속도->측정값
g->이미 알고 있는값
이동속도, 이동 가속도는 고가의 항법센서로만 측정가능
평범한 항법센서로 계산하는 방법
1) 시스템이 정지해 있는 조건
u˙=v˙=w˙=0
u=v=w=0
2) 일정한 속도로 직진하는 조건
u˙=v˙=w˙=0
p=q=r=0
가속도의 근사식 사용
- ⎣⎢⎡fxfyfz⎦⎥⎤=g⎣⎢⎡sinθ−cosθsinϕ−cosθcosϕ⎦⎥⎤
- ϕ=tan−1(fy/fx)
- θ=tan−1(fx/fy2+fz2)
- 근사식 가정해도 되는지??
- 보통 헬기는 대부분의 임무를 제자리 비행이나 일정 속도로 나는 도중에 수행하므로 이런 가정이 잘 맞음
- 보행로봇에도 적용 가능
- but, 빠른 속도로 회전하거나 속도 변화가 심하면 오차가 커질 수 있음
2. 자이로를 이용하여 자세 결정하기
1) 자이로 센서의 각속도와 오일러 각속도
- 자이로 센서는 오일러 각도의 변화율(ϕ˙,θ˙,ψ˙)이 아니라, 헬기의 각속도(p,q,r)를 측정
-> 자이로의 측정값을 오일러 각도의 변화율로 바꿔서 적분
- 오일러 각도와 각속도의 관계
⎣⎢⎡ϕ˙θ˙ψ˙⎦⎥⎤=⎣⎢⎡100sinϕtanθcosϕsinϕ/cosθcosϕtanθ−sinϕcosϕ/cosθ⎦⎥⎤ ⎣⎢⎡pqr⎦⎥⎤
-> ϕk=ϕk−1+dt(p+qsinϕtanθ+rcosϕtanθ
-> θk=θk−1+dt(qcosϕ−rsinϕ)
-> ψk=ψk−1+dt(qsinϕ/cosθ+rcosϕ/cosθ)
===> 현재자세를 나타냄!!
2) 오일러 각도로 변환 후 적분한 결과
- 자이로의 측정값에는 오차가 섞여있음->적분하여 구한 자세에도 오차포함
- so, 각속도를 적분하여 얻은 자세는 동적 움직임을 잘 포착하지만 점차 오차가 누적되어 실제값에서 멀어짐
- 단기간의 측정에서는 비교적 정확하지만 장시간의 변화에는 부정확해짐
3. 센서 융합
자이로 센서+가속도센서 => 칼만필터 사용
-> 자이로스코프는 빠른 시간 내에 변위값을 측정하기 유리하나 적분오차 발생
-> 가속도 센서는 느리지만 절대각을 구할 수 있음(+정지상태에서만 기울기 값 측정 가능)
4. 센서 융합을 통해 자세 결정하기
1) 자이로스코프와 가속도계의 센서 융합 원리
(그림)
가속도계로 결정한 자세가 칼만필터의 측정값이 되고, 칼만ㄹ필터는 이 값을 자이로의 각속도를 적분하여 계산한 자세와 비교하여 오차를 보정
2) 자이로스코프와 가속도계의 센서 융합에 필요한 시스템 모델
- 상태변수
x=⎣⎢⎡ϕθψ⎦⎥⎤
xk+1=Axk+wk<=>x=⎣⎢⎡ϕ˙θ˙ψ˙⎦⎥⎤=⎣⎢⎡.⎦⎥⎤⎣⎢⎡ϕθψ⎦⎥⎤
--> 불가능
3) 상태변수를 쿼터니언으로