GNSS는 Global Navigation Satellite System의 약자이고 INS는 Inertial Navigation System이다. 해당 두 시스템을 통합해서 사용하는 이유를 나름대로 정리하면 다음과 같다.
- GNSS의 Frequency는, INS의 Frequency보다 매우 작다. 따라서 INS가 이러한 GNSS의 단점을 보완해줄 수 있다.
- 또한 GNSS의 위치 측정치가 실제 위치와는 다른 오차가 많이 섞인 값이 들어와도 완충 작용이 가능하다.
- INS 중 MEMS(흔하게 사용하는 전자 IMU 센서)는 시간이 지속할수록 발산하기 때문에(센서의 bias), 단독으로 위치를 측정하기 어렵지만 GNSS가 IMU의 bias를 측정해서 보정하게 된다.
따라서 위와 같은 상호 보완적인 두 센서를 이용하면 매우 정확한 위치 추정을 할 수 있다. Kalman Filter에 대해서 간략하게 소개하고자 한다. 칼만필터는 여러 센서 값들을 융합하여서 원하는 값을 최적으로 찾아내는 필터라고 생각하면 된다. 칼만필터 식은 수학적으로 이미 유도가 되어 있는 내용이기 때문에, 최적임은 보장된다. 물론 이를 사용하는데 여러 가정이 들어간다, 기본적으로 구하고자 하는 값 x와 measurement 값 z 사이의 관계가 Linear 해야 하거나 등이다. 그럼에도 매우 유용하다.
칼만필터와 관련된 자세한 설명은 인터넷 블로그가 많아서 해당 부분을 보고 알아보면 된다. 처음 공부할 때 참조하였던 블로그 링크를 걸어놓고자 하였으나, 찾지 못하여 스킵한다.. 아래의 모든 설명은 Kalman filter의 기본을 알고 있다는 가정 하에, GNSS/INS Integration에 어떻게 활용될 수 있는지를 기술한다.
GNSS/INS Integration에서 약결합과 강결합 두 방식으로 적용할 수 있다. 하지만 기본적인 Klaman filter가 적용되는 방식이 거의 같으므로, 기본적인 방식을 설명하고 두 방식의 차이를 후술하겠다.
먼저 Kalman filter에서 state vector가 어떻게 정의되는지는 중요하다. state vectors는 15x1의 vector로 정의된다. 자세, 속도, 위치, IMU acc, gyro의 bias가 state vector의 구성 성분으로 들어간다.
각 요소의 초기값을 구할 때, Roll, Pitch 정보는 IMU만으로 얻을 수 있다. 하지만 Yaw 정보는 자기력 센서 등을 이용하거나, GPS 안테나와 수신국 사이의 방향을 통해서 추정할수도 있다. 또한 속도와 위치 벡터는 GPS의 센서 값을 그대로 사용할 수 있다.
GNSS/INS Integration에서 perdiction과 correction 부분이 어떻게 대응되는가를 보아야 한다. 아까 설명했듯이 GNSS의 Frequency가 작기 때문에, GPS Position measurement가 1번 들어올 때, IMU에서는 200번의 measurement가 들어온다.
여기서 주의해야 할 점은 우리가 Kalman filter의 measurement로 말하는 부분은 GPS의 Position 뿐이다. IMU센서의 데이터는 우리가 수신해서 받아오긴 이는 Control(위 사진에서는 u_k)이다.
즉 마치 Body Frame에 우리가 Control을 한 것이고, Control한 것을 측정해서 해당 Body Frame이 어떻게 움직일지 예측한다고 이해하면 더 편하다.
이러한 이해를 바탕으로 Kalman filter의 prediction 과정에서 수행되어야 하는 작업은 다음과 같다.
- IMU 각속도 정보를 이용해서 Body Frame의 위치 변경
- IMU의 acceleartion을 이용해서 Body Frame의 Velocity 예측
- IMU의 acceleration을 이용해서 Body Frame의 Position 예측
따라서 prediction 단계에서는 위의 state 중 3개만 업데이트 된다 bias 정보는 correction 단계에서 업데이트 된다. Correction 단계에서 수행되어야 하는 작업은 state vector correction인데, 구체적인 내용은 다음과 같다.
- IMU bias 계산 후 보정
- 이 외의 state vector 보정
약결합은 GPS의 Position을 Sensor가 주는 값으로 그대로 이용하지만, 강결합의 경우에는 Pesudorange 값을 이용해서 특정 프로세스를 거친 후에 Position을 산출해서 이용하는 것으로, 장단점이 있다. 강결합의 경우 시간이 많이 걸리지만, 가시 위성이 4개 이하인 경우에도 해당 칼만필터를 이용할 수 있다. 반면에 약결합은 계산량이 적지만, 가시 위성이 4개 미만이 되면, 위치를 추정할 수 없어서 칼만필터의 update 과정을 진행할 수 없다.
다음 글에서는 실제로 이를 C언어(또는 메트랩)로 구현하는 과정을 기술하고자 한다. 이 과정에서 Kalman filter의 H matrix나, 여러가지 수식들이 어떻게 활용되는지를 구체적으로 기술할 계획이다. 현재 이해가 되지 않는 부분도 구현을 하다 보면 이해가 될 것이라고 생각한다.
'작은 공부방' 카테고리의 다른 글
Project - 위성의 궤도 plot 프로그램 (2) | 2022.07.19 |
---|---|
sgp4와 수치적분을 이용한 위성 시뮬레이션 코딩 (8) | 2022.07.11 |
Attitude and Frame (0) | 2022.07.07 |
System Modeling: Euler's equation(rigid body) (0) | 2022.07.06 |
Astropy.coordinates Library (0) | 2022.07.04 |