위치인식 연구

[실시간 위치인식 시스템] 기존 시스템의 문제점 파악 및 개선, 시각화 소스코드 구현

chadongmin 2023. 8. 11. 10:53

1. 전체 시스템 아키텍쳐 

전체 시스템의 구조는 위 그림과 같습니다. 3개의 고정되어 있는 앵커와 1개의 고정되어 있는 태그 그리고 게이트웨이로 구성되어 있습니다. 

 

2. 기존 시스템의 문제점 파악 및 해결 방안 탐색

시스템 동작원리는 크게 세 부분으로 구성됩니다.

1. 앵커와 태그 사이의 거리 측정 및 태그의 좌표 값 계산(Trilateration),

2. 태그의 좌표값을 게이트 웨이에게 전송,

3. 게이트웨이가 수신한  태그의 좌표값을 PC에 구성 된 UDP 서버로 전송 

 

하지만 이 부분에서 치명적인 단점이 있었습니다. 3개의 앵커와 태그 사이에서 총 3개의 거리 값을 측정하고, 이를 기반으로 Trilateration 방식으로 태그의 좌표를 계산할 때, 앵커의 좌표가 필요합니다. Trilateration을 수행하는 부분이 Tag에서 수행된다면, 앵커의 고정되어 있는 좌표가 수정 될 때 마다 소스코드에 하드코딩 된 앵커의 좌표를 수정하고 새로 프로그램을 빌드해야 하는 단점이 생깁니다. 

(Trilateration : 삼변측량법)

 

그래서 이러한 부분을 해결하고 관심사를 분리하기 위해서 아래와 같이 시스템의 동작 방식을 수정하였습니다. 

 

1. 앵커와 태그 사이의 거리 계산

2. 각 앵커와 태그 사이의 거리 값을 게이트 웨이에게 전송

3. 게이트 웨이가 수신한 3개의 거리 값을 PC에 구성 된 UDP 서버로 전송

4. UDP 서버에서 수신한 거리 값을 기반으로 Trilateration 수행 후 태그의 좌표를 화면에 출력

 

3. UDP 서버 및 GUI 구현 (개선해야 할 점)

2023.05.25 - [일기] - 좋은 개발자가 되기 위해서 노력해야 할 점. (다짐)

 

좋은 개발자가 되기 위해서 노력해야 할 점. (다짐)

https://www.youtube.com/watch?v=2to3IQFhZVo 채용 담당자가 말하는 '꼭' 뽑고 싶은 신입 개발자 특징은? | 개발자 특집 4편 위 영상을 보고 많이 느낀 점이 많아서 블로그에 기록하고자 글을 씁니다. 위 영상

iamdongmin.tistory.com

5월 23일에 발행한 게시물에서도 JS의 AJAX나 JAVA SWING을 사용해서 시각화를 구현해야겠다고 다짐했었는데, SWING을 사용하여 구현에 성공했습니다.  그 이유는 UDP서버가 자바로 구현이 되어 있는데, AJAX를 사용해서 웹 페이지에서 시각화를 하려면 WAS에 HTTP 요청을 보내야 합니다. UDP 서버 프로그램에서 Trilateration과 HTTP 요청을 보내는 것과 Trilateration 이후 Java에 내장 된 GUI 라이브러리를 사용해서 바로 화면에 그리는 것을 비교했을 때, 후자가 더 속도와 성능 측면에서 월등할 것이라는 판단이 있어서 후자의 방식으로 구현했습니다. 

4. UDP 서버 프로그램 동작 시연 

연구실의 방에 직각삼각형 형태로 앵커를 배치하였습니다. 의자에 태그를 부착하고 각 앵커에 가까이 갔을때의 시각화 모습입니다. 

정상적으로 동작하는 모습입니다. UDP 서버 프로그램이 동작하는 화면 기록을 아래에 첨부하였습니다. 

화면 기록 2023-07-07 오후 1.25.03.mov
6.28MB