로봇의 움직임에 따라 어떠한 방향으로 동작할지 시스템순서도를 설계하였다.
순서도는 다음과 같다.
출발 -> 최종목적지태그인식 -> 서버가 로봇의 최종목적지태그를 인식할 때까지 서버랑 로봇 둘 다 무한대기
만약 로봇전부가 태그(최종목적지tag, or 기본 tag 아무거나)를 받는 것을 완료했다면 다음으로 넘어간다.
서버가 로봇의 모든 태그를 받았다면 알고리즘을 계산하여, 서버가 로봇에게 계산한 다음좌표를 로봇에게 전달한다.
로봇은 그에따라 다음목적지로 이동하기 위해 direction알고리즘을 수행하고 다음목적지로 이동을 완료한다.
이동을 완료했다면, 다음목적지가 어떤 의미를 뜻하는지 상태를 결정하기 위해 3가지 중 1가지를 택한다.
1. 단순 다음 목적지
2. 택배 최종 목적지
3. 레디상태로 바뀌기 위한 목적지
중에 1가지 목적지에 도착하며,
1번일 경우, 다시 현재위치에 잘 도착했다고 서버에게 현재좌표를 보낸다.
2번일 경우, 잘도착했다고 보내는 것은 같지만, 택배(짐)를 toss 하는 서보모터가 움직이는 코드 추가
3번일 경우. 레디상태에 다시 돌아왔기때문에 특수한 패킷교환방식(piggybacking) 방식을 사용하여 로봇의 상태를 ready로 바꾸고 최종태그를 다시 태그 하기 위한 로봇의 상태를 ready로 바꾼다.
로봇의 상태 3가지
로봇의 상태를 나누었다.
이는 상태의 따른 책임을 명확하게 분배하기 위함이었다.
운영체제(os)이론에서 이를 모티브 하여 응용해서 상태를 분배했다.
이들의 상태는 3가지 tag변환에 의해 이루어진다.
3가지 tag변환은 위 그림과 같다.
waitting -> ready상태에서 running상태로 변화하기 위해서는 piggybacking을 이용한 패킷교환방식으로 특정태그를 뒤에 붙여 상태를 변화한다.
나머지도 이와같이 tag를 이용하여 상태를 변화합니다.
실제 로봇 시연동영상은 다음과 같습니다.
'Project > Caston Design' 카테고리의 다른 글
[MQTT] 통신선로 구축하기 (0) | 2023.09.01 |
---|---|
[image processing] QR코드인식 (0) | 2023.09.01 |
[개발환경구축] SSH로 vscode와 연동하기 (0) | 2023.09.01 |
[초안설계] 졸업작품 system design (0) | 2023.09.01 |