printf("ho_tari\n");

[주행] 서비스(음식배달,정찰경찰 등) 로봇 및 관제 시스템 개발 3일차 본문

두산 로보틱스 부트캠프 ROKEY/실무 프로젝트

[주행] 서비스(음식배달,정찰경찰 등) 로봇 및 관제 시스템 개발 3일차

호타리 2024. 11. 15. 16:10

2024.11.14

 

서빙 로봇이 ROS2를 통해 통신을 하고 식당에서 주문을 할 수 있는 키오스크 화면을 테이블과 주방 기기 2개를 만들고 ROS2 service를 활용하여 통신을 시켰다.

 

 

주문을 하는 테이블의 gui화면으로 9개의 테이블 화면이 나오고 스크롤을 통해 화면을 내려 다른 번호의 테이블 주문표를 볼 수 있다.

 

테이블 gui에 있는 기능은 주문 메뉴를 선택할 수 있고 선택된 메뉴들의 개수와 총 합산 가격이 출력이 되며 submit order 번튼을 통해 주방으로 주문을 접수하게 된다.

 

remove order 버튼을 누르게 되면 주문한 메뉴의 개수를 1개씩 취소할 수 있고 이 주문 내역의 정보가 주방으로 넘어간 후에 주방에서 주문을 수락하게 되면 make payment 버튼을 통해 결제를 할 수 있다.

 

결제를 진행해야만 주방에서 주문 후 진행 상태를 업데이트할 수 있도록 하였다.

 

call robot 버튼을 누르면 서빙로봇을 해당 번호의 테이블로 부를 수 있어 실제 식당이라고 가정을 하면 음식을 모두 먹은 후 빈그릇을 치우기 위해 서빙 로봇을 호출할 수 있게 된다.

 

 

이건 주방에서의 gui이다.

 

테이블에서 주문 내역의 정보를 전달하게 되면 해당 번호의 테이블에 주문 내역이 출력되며 이 주문을 선택 후 accept order 버튼을 누르게 되면 주문 수락이 되었다는 정보를 해당 테이블로 전송할 수 있따.

 

reject order 버튼을 누르면 주문을 거절하게 되고 해당 테이블은 주문을 다시할 수 있게 된다.

 

주문 수락 후 진행 상태 업데이트의 종류로는 cooking, cooking completed, delivery in progress가 있고 해당 상태를 선택하고 update status 버튼을 누르게 되면 해당 상태로 업데이트가 되었다는 정보가 테이블로 전송되게 된다. 

 

delivery in progress로 상태가 업데이트되면 서빙 로봇에게도 해당 상태가 업데이트가 된다.

 

 

이건 서빙 로봇의 gui이다.

 

주방 gui에서 delivery in progress로 상태를 업데이트하게 되면 서빙 로봇 gui에 해당 테이블의 번호와 delivery in progress라는 텍스트가 출력이 된다.

 

해당 테이블의 번호가 상태창에 뜨게 되면 이를 선택한 후 start delivery 버튼을 눌러 서빙 로봇을 해당 번호의 테이블로 자율 이동 시킬 수 있게 된다.

 

해당 테이블로 서빙을 완료하게 되면 서빙 로봇 gui에서 return to kitchen 버튼이 활성화가 되며 이를 클릭하면 주방으로 자동으로 자율 이동하여 돌아오게 된다.

 

서빙 로봇의 자율 주행을 실행하기 위해서는 원래 gazebo, rviz 프로그램을 모두 실행하여 터틀봇의 초기 위치를 2D pose estimate 시키고 자율 이동의 목표지점에 goal position을 설정해야 자율 이동이 시작이 되었는데 serving robot gui를 실행을 시키면 자동으로 바로 터틀봇의 시작 위치로 2D pose estimate시키도록 설정하였고 각 테이블의 위치를 goal position으로 설정되도록 해서 해당 테이블로 자율 이동을 명령하는 정보가 전달이 되면 자율 이동이 가능하게끔 코드를 설계하였다.