2021년 02월 10일 수요일 19:00
ZOOM 화상회의
지금까지 살펴봤던 ROS를 활용한 예시 중, 지난 시간까지 다루었던 TurtleBot3을 기반으로 실제로 특정 서비스를 제공할 수 있는 로봇을 제작한 사례를 살펴보자.
하드웨어 | 수량 | 역할 |
---|---|---|
Service Robot (로봇) | 다수 | 서비스 로봇 본체 |
제어/모니터링 PC | (확인하고자 하는 Service Robot 수만큼) | 서비스 로봇의 작동 상태를 확인(디버깅)하기 위한 노드가 디스플레이되는 PC |
E-Menu Tablet (주문용 디바이스; 태블릿 등) | 다수 | 서비스 로봇에게 명령을 내리는 노드. 실제 사용자와 상호작용하는 부분 |
Service Core | 단일 | 메인 시스템이 작동하는 서버 |
위 영상에서 소개된 로봇처럼, 여러 곳에서 명령을 받아 여러 대의 로봇이 하나의 통제 시스템 아래에서 각각 동시에 작동한다.
각 파트는 아래와 같은 방법으로 메시지를 송수신하게 된다.
E-Menu Tablet | 패드 ID / 주문내용 → | Service core | 목표 위치 좌표 → | Service Robot |
← 주문 가능 상황 / 로봇 상태 | ← 로봇 상태 |
출처: 12_서비스_로봇.pdf
TurtleBot3 기반이므로, 로봇 동작에 핵심적인 노드가 TurtleBot3 작동 예제에서 보았던 것와 비슷한 구조로 되어있음을 볼 수 있다.
출처: 12_서비스_로봇.pdf
로봇 작동 명령을 내리는 사용자 측 인터페이스로, Android 운영체제 태블릿 상에서 ROSJAVA를 이용해 앱을 제작한다.
ROS는 운영체제와는 관련없이, 각 노드 간 통신 방식
을 통일하는 역할의 메타 운영체제
이므로, Android 앱에서 ROS 통신방식에 맞는 데이터만 송수신한다면 하나의 ROS 노드로서 작동할 수 있다.
다만 Android 프로그래밍은 이 스터디에서 다루고자 하는 범위 밖이므로 다루지 않는다.
TurbleBot3을 기반으로 한 더욱 다양한 활용 예시는 Awesome TurtleBot3 Projects 에서 확인해보자.