Office Hours Week 3 - QnA
Q1. Resampling Wheel에서 랜덤한 수를 선택할 때 0부터 2 * W_max라는 범위는 어떻게 설정된 건가요?
A1. 각각의 파티클 구간을 확실히 뛰어넘게 하고 싶었습니다. 그러나 범위가 너무 넓으면 탐색해야 할 것이 매우 많습니다. 2^n 정도가 적절하다고 생각합니다.
Q2. 주어진 상황에서 적절한 필터를 선택할 때 항상 고려해야 할 가장 중요한 규칙이 있다면 무엇인가요?
A2. 파티클 필터는 구현하기 가장 쉬운 대신 시간 복잡도가 차원에 지수적으로 비례합니다. 이는 보통 문제가 됩니다. 높은 차원의 공간에서는 파티클 필터를 적용할 수 없습니다.
칼만 필터는 시간 복잡도가 지수적으로 증가하지 않는 유일한 필터이기 때문에, 이러한 경우에 적합합니다. 그러나, 문제는 칼만 필터가 unimodal 하다는 점입니다. 칼만 필터는 여러 개의 추정을 할 수 없습니다. 이러한 문제를 해결한 mixed rough Kalman Filter라던지 multihypothesis Kalman Filter 같은 칼만 필터의 확장 버전이 있습니다.
히스토그램 필터는 global uncertainty를 가진, 파티클 필터와 비슷한 상황에 적용 가능합니다. 게다가 히스토그램 필터는 더 규칙적입니다. 파티클 필터에서는 한 번 위치 추정을 실패하게 되면 다시는 돌이킬 수 없지만, 그리드 기반 필터에서는 올바른 위치 값을 다시 얻을 기회가 주어집니다. 그리드는 다양한 프로그래밍 프레임워크에서 지원하기 때문에 몇몇 경우는 사용할만 하지만, 그리드의 해상도에 따른 정확도 한계치가 있습니다.
추천 사항으로는, multimodal distribution인 경우 가능한 한 파티클 필터를 사용하고, unimodal distribution을 갖는 연속 공간일 경우 칼만 필터를 사용하는 것입니다.
Q3. 파티클 필터가 unimodal distribution으로 수렴했을 때, 칼만 필터로 필터를 변경해도 될까요?
A3. 대부분의 경우 그렇게 하지 않습니다. 필터를 변경하면 결국에는 불확실성이 증가하는 시점이 생깁니다. GPS 리시버를 구매하면 이러한 현상을 확인할 수 있습니다. GPS 리시버는 용도가 2D/3D 네비게이션인지에 따라 여러 개의 칼만 필터를 사용합니다.
리시버가 변환될 때, 위치가 약간 불확실해지며 종종 로봇에 좋지 않습니다. 로봇이 약간 점프하거나 물체의 위치를 혼동하기 때문입니다.
여러 개의 필터를 결합하는 방법이 있습니다. 가장 대중적인 방식은 Rao-Blackwellized filter입니다. Rao와 Blackwell이 발견한 사실은, 파티클 영역에서 때때로 입자를 특정 차원에 고정하면, 입자의 다른 모든 조건이 가우시안 또는 unimodal 형태가 된다는 것입니다. 이렇게 되면 이후에는 각각의 파티클에 칼만 필터를 적용할 수 있습니다.
더이상 깊게 설명하지는 않겠지만, 수백 개의 차원 위치 추정을 위해 Rao-Blackwellized filter가 사용되어야만 하는 분야가 있습니다.
Q4. 파티클이 유효하지 않는 공간으로 이동한다면, 파티클 필터는 어떻게 되나요? 예시로 들었던 복도를 예로 든다면, 파티클이 벽 속으로 이동하면 어떻게 되나요?
A4. 해당 파티클은 사라집니다. 해당 파티클은 측정 시 벽 속에 있다는 결과가 나오는데, 로봇은 반드시 "난 벽 속에 있지 않아"라는 결과를 보여줍니다. 이러한 가정은 결국 파티클의 가중치를 0으로 만들고, 파티클은 사라집니다.
Q5. 필터의 정확도와 컴퓨팅 자원을 맞바꾸기 위해 파티클의 수를 동적으로 조절하는 건 어떨까요?
A5. 파티클의 수를 동적으로 조절하는 건 특정한 상황에서 정말 좋은 아이디어입니다. 분명 적은 수의 파티클은 연산을 빠르게 만듭니다. 트래킹을 정말 잘하고, 모든 파티클이 한 장소에 모여있다면 파티클이 그렇게 많을 필요가 없겠죠.
파티클의 수는 대체로 total non-normalized importance weights에 의해 결정됩니다. 모든 가중치가 정말 크다면, 트래킹을 정말 잘하고 있는 것이고, 파티클이 많이 필요하지 않습니다. 반면 중요 가중치가 정말 작다면 트래킹이 제대로 되고 있지 않다는 소리이며 더많은 파티클이 필요합니다.
물론 정확하지 않습니다. 때로는 측정값이 모든 가중치를 작게 만들 수도 있으니 이렇게 말하는 좋습니다. 정규화 되지 않은 중요 가중치가 특정한 threshold 값에 도달하게 만든 뒤 샘플링을 멈춥니다.
사실 대부분의 시스템은 실시간 시스템이며 때문에 어떤 때는 많은 파티클을, 어떤 때는 적은 파티클을 사용할 수 없습니다. 측정을 하고자 정해진 시간이 있기 때문입니다. 그래서, 원활한 트래킹이 가능하면서도 가능한 한 적은 파티클을 사용하는 것이 실행 가능한 해결책입니다.
Q6. 움직이는 사물과 움직이지 않는 사물을 어떻게 구분하나요? 수업 시간에 다루었던 지도는 정적이었고, 모든 사물은 움직이지 않았습니다. 구글 자동차는 어떻게 움직이는 자동차, 사람과 움직이지 않는 사물을 구분하나요?
A6. 구글 자동차는 기본적인 지도, 거리가 움직이지 않는다고 가정합니다. 만약 차선이 움직인다면 구글 자동차는 혼란스러울지 모릅니다.
사물이 움직일지 판단하기 위해 우리는 확률론적 threshold를 사용합니다. 이를 위해 두 시점의 물체의 위치가 일치하는지 판단하고, 모션 벡터를 확인합니다. 때로는 단순 노이즈로 판단하기도 하지만, 사람과 자동차의 경우 명확하고 강한 움직임이 검출됩니다.
또한, 길 한가운데에선 정적인 물체가 없을 확률이 높습니다. 이러한 bias를 반영하여 좋은 트래커를 얻을 수 있습니다.
'Robotics' 카테고리의 다른 글
60일차 - C++ openCV 4 실시간 영상에서 ORB 특징점 추출 및 FLANN 매칭하기 (0) | 2020.08.30 |
---|---|
59일차 - c++ opencv ORB, XCode 라이브러리 설정, c++ npy 불러오기 (0) | 2020.08.29 |
57일차 - Mathmatics for Circular Motion (0) | 2020.08.27 |
56일차 - 특징점 추출을 통해 카드 이미지를 인식 1 (0) | 2020.08.27 |
55일차 - openCV 이용하여 Zumi Heroes를 위한 도트 리소스 제작 (0) | 2020.08.26 |