다중 코드 초음파 센서 네트워크를 이용한 군집로봇 위치인식 시스템. 3.

#
제 석사논문입니다.
심사발표때 썼던 PPT 자료와 부가설명으로 정리했습니다.

내용에 대해서 지적이나 의견을 제시해주시는 것은 감사히 받겠습니다.

나름 제가 그동안 살아오면서 만든 것 중 가장 강력한 저작권이 걸린 물건이니(!)
다른 곳으로 가져가거나 함부로 사용하진 말아주세요.

참고용으로 쓰시겠다면 레퍼런스는 달아주시고(부산대학교 전자전기공학과 석사졸업논문입니다)
서로 겹치는 주제로 학회에서 보는 일은 없길;; 바랍니다.

#
냅 수식. 귀찮으니 설명은 최소한만 하겠습니다.
자세히 보면 별로 어렵진 않고 학부생이라도 보면 알 수 있을 정도일 듯.

#


우선 추측항해 좌표계산.
보통 로봇의 위치 계산할 때 점모델이란 걸 많이 쓰는데, 별로 신뢰할 수가 없어서
로봇의 곡선운동 중 그리는 호의 형태를 제대로 계산했습니다.

점모델은 오차가 크지만 많이 쓰는 이유가 각도를 포함하는 확장칼만필터를 적용시킬 수 있어서인데..
그럴려면 각도를 직접적으로 측정할 방법이 있어야 합니다.
제 시스템에서는 각도를 직접적으로 측정하는 게 아니라 위치의 변화량으로 계산하는 방식이라,
위치의 계산 결과가 나오기 전에는 각도값을 알 수 없어서 어차피 점모델 쓰지도 못함.

오차를 계산하는 건 칼만 필터를 적용시키기 위해서입니다.
사실 더 복잡하게 제대로 계산할 수도 있고 해야 더 정확한데, 단순하게 처리했습니다.
추측항해의 오차는 이동거리에 비례해서 커지는 걸로 가정했습니다.

#



초음파 위치측정.
로봇 3대가 있을 때 2대로 만들어지는 상대좌표계로 나머지 한대의 위치를 측정합니다.

측정좌표가 로봇당 2개씩 나오는데, 이는 로봇간 거리로 만들어지는 삼각형이
절대좌표계의 어디에 붙어있는가에 따라 달라지기 때문.

사실 삼각형의 형태에 따라서 측정된 로봇의 좌표의 오차범위는 x와 y에
correlation 성분이 있는 Joint Gaussian Random Variable이 되어야 정상인데,
correlation 성분을 무시하고 uncorrelated된 것으로 가정했습니다.
오차의 대세에 큰 영향은 없으면서 연산량이 몇배로 줄어들기 때문;
마찬가지 이유로 상대좌표계를 회전시킬 때 생기는 오차도 무시.

#

칼만 필터 수식입니다.
칼만 필터는 루돌프 사슴코칼만이라는 사람이 만든 필터인데,
사실은 알 수 없는 시스템에 대한 optimal system estimation을 least mean square법을 쓰고 어쩌고 해서 구해지는 거지만,
결국 나오는 결과를 놓고 따져보자면 예측값(predicted value)과 측정값(measured value)이 있을때
이 둘의 오차의 분산에 대한 가중치를 줘서 평균낸 값이 가장 믿을만한 추정값(estimated value)라는 겁니다.
그 중간과정이 좀 귀찮지만 패스.
간단하면서도 성능이 좋아서 특히 위치인식관련 쪽에선 거의 다 쓴다고 보면 됩니다.

연산결과로 나오는 초음파 송신로봇 3대의 분산행렬은 correlation성분을 가집니다.
이 부분에서 서론에서 말한 캘리포니아대 쪽 논문을 많이 참고했습니다.

이 과정에서 x좌표와 y좌표가 correlated되어 있다면...
위의 칼만 이득(Kalman gain) 구할 때 12x12 행렬의 역행렬을 구해야 합니다. -_- 연산량 촘 쩔지요.
x와 y가 uncorrelated 되어 있다고 보면 6x6 역행렬로 두번 연산하면 끝.

#


나머지 로봇들의 좌표계산. 간단한 연립방정식 하나 풀면 쉽게 구할 수 있습니다.
커멘더라는 로봇은, 로봇들의 초음파 송수신 동기 맞춰주는 로봇인데, 정작 자기는 동기가 안맞기 때문에
거리 측정 값이 정확하게 나오질 않습니다. 대신 거리의 차이값은 대충 나오기 때문에 수식이 저모양이 됨.
그래도 거리 값 하나는 필요해서.. 그냥 이전에 측정된 값을 쓰게 했습니다.
초음파 송신 로봇이 4대 이상이면 해결되는 문제지만, 그러면 다른 문제들이 쏟아져서 일단 이렇게 처리.
논문에는 4대 이상이 초음파를 쏠 때 커멘더 위치 계산 수식도 포함되어 있음.

그리고 또 칼만 필터.
나머지 로봇들은 초음파 송신 로봇들의 좌표로부터 오차에 영향을 받지만 영향을 주지는 않기 때문에
correlation 성분은 무시했습니다.

#

그래서 구해진 위치정보의 변화량을 이용해서 로봇의 진행방향을 계산.
또 칼만 필터.
추측항해로 구해지는 방향값은 거리가 멀수록 오차가 크고,
위치 변화량으로 측정되는 방향값은 거리가 멀수록 오차가 작아지게 계산했습니다.

#

그래서 전체 블록다이어그램.
사실은 저기서 각도의 출력값이 Ideal system의 예측값(U)에 영향을 다시 끼치기 때문에..
거기에 대한 고려도 살짝 더 들어가있는데 일단 생략.

#
대충 수식은 이게 답니다.
무시하고 생략하고 한 부분이 많아서, 이 부분 다 채워 넣으면 좀 더 업글되지 않을까 싶기도 하지만..
....과연?

다음편은 시스템 제어.