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 서버 프로그램이 동작하는 화면 기록을 아래에 첨부하였습니다.
'위치인식 연구' 카테고리의 다른 글
| [실시간 위치인식 시스템] 시각화 소스코드 문제점 개선(의존관계 주입, 싱글톤 패턴 적용) (0) | 2023.08.11 |
|---|---|
| Channel Impulse Response란? (0) | 2023.05.14 |