======ROS 스터디 #10: 서비스 로봇====== 2021년 02월 10일 수요일 19:00\\ ZOOM 화상회의 {{youtube>TGQEFFCB2hc?medium}} \\ 지금까지 살펴봤던 ROS를 활용한 예시 중, 지난 시간까지 다루었던 TurtleBot3을 기반으로 실제로 특정 서비스를 제공할 수 있는 로봇을 제작한 사례를 살펴보자. =====1. 배달 서비스 로봇===== {{youtube>u7qb8xiSiNg?medium}} {{youtube>5NYdgnzxykc?medium}} ====1.1. 하드웨어 구성==== ^ 하드웨어 ^ 수량 ^ 역할 ^ | Service Robot (로봇) | **다수** | 서비스 로봇 본체 | | 제어/모니터링 PC | **(확인하고자 하는 Service Robot 수만큼)** | 서비스 로봇의 작동 상태를 확인(디버깅)하기 위한 노드가 디스플레이되는 PC | | E-Menu Tablet (주문용 디바이스; 태블릿 등) | **다수** | 서비스 로봇에게 명령을 내리는 노드. 실제 사용자와 상호작용하는 부분 | | Service Core | **단일** | 메인 시스템이 작동하는 서버 | ====1.2. 시스템 구성==== 위 영상에서 소개된 로봇처럼, 여러 곳에서 명령을 받아 여러 대의 로봇이 하나의 통제 시스템 아래에서 각각 동시에 작동한다.\\ 각 파트는 아래와 같은 방법으로 메시지를 송수신하게 된다. | **E-Menu Tablet** | 패드 ID / 주문내용 →| **Service core** | 목표 위치 좌표 →| **Service Robot** | | ::: |← 주문 가능 상황 / 로봇 상태 | ::: |← 로봇 상태 | ::: | {{https://img.kasimov.synology.me/2020/ros/10/12_서비스_로봇_page10.png}}\\ 출처: {{https://github.com/robotpilot/ros-seminar/blob/master/12_%EC%84%9C%EB%B9%84%EC%8A%A4_%EB%A1%9C%EB%B4%87.pdf|12_서비스_로봇.pdf}} ====1.3. Service Robot==== TurtleBot3 기반이므로, 로봇 동작에 핵심적인 노드가 TurtleBot3 작동 예제에서 보았던 것와 비슷한 구조로 되어있음을 볼 수 있다. {{https://img.kasimov.synology.me/2020/ros/10/12_서비스_로봇_page08.png}}\\ 출처: {{https://github.com/robotpilot/ros-seminar/blob/master/12_%EC%84%9C%EB%B9%84%EC%8A%A4_%EB%A1%9C%EB%B4%87.pdf|12_서비스_로봇.pdf}} ====1.4. E-Menu Tablet==== 로봇 작동 명령을 내리는 사용자 측 인터페이스로, Android 운영체제 태블릿 상에서 **ROSJAVA**를 이용해 앱을 제작한다.\\ ROS는 운영체제와는 관련없이, 각 노드 간 ''통신 방식''을 통일하는 역할의 ''메타 운영체제''이므로, Android 앱에서 ROS 통신방식에 맞는 데이터만 송수신한다면 하나의 ROS 노드로서 작동할 수 있다.\\ 다만 Android 프로그래밍은 이 스터디에서 다루고자 하는 범위 밖이므로 다루지 않는다. =====2. 더 찾아보기===== TurbleBot3을 기반으로 한 더욱 다양한 활용 예시는 {{https://emanual.robotis.com/docs/en/platform/turtlebot3/projects/#projects|Awesome TurtleBot3 Projects}} 에서 확인해보자. =====참고자료/출처===== * {{https://github.com/robotpilot/ros-seminar/blob/master/12_%EC%84%9C%EB%B9%84%EC%8A%A4_%EB%A1%9C%EB%B4%87.pdf|12_서비스_로봇.pdf}} * 표윤석 박사님 ROS 강의(ROBOTIS) \\ {{youtube>rgkEnqRIZWY?medium}}