x86
은 컴퓨터/노트북, ARM A-class
는 스마트폰에 사용됨
MCU
계열은 로봇 제어 관련
PC와는 달리 임베디드 시스템에서는 ROS 설치가 불가능
실시간성 확보 및 하드웨어 제어를 위해서는 ROS가 설치된 PC와 임베디드 시스템 간의 연결이 요구됨
ROS에서는 이를 위해 rosserial
이라는 패키지를 제공
OpenCR과 Rasberry Pi 3를 USB 혹은 시리얼 연결.
이 둘 사이에 데이터를 주고받는데, Rasberry Pi 3에서는 ROS 메시지를 사용! 하지만 OpenCR에서는 바로 사용 불가능 ➡️ 이 변환을 담당하는 게 rosserial
$ sudo apt install ros-kinetic-rosserial ros-kinetic-rosserial-server ros-kinetic-rosserial-arduino
rosserial server
rosserial_python
: Python 언어 기반의 rosserial server, 매우 많이 사용됨rosserial_server
: C++ 언어 기반의 rosserial server, 일부 기능 제약 있음rosserial_java
: Java 언어 기반의 rosserial server, 안드로이드 SDK와 함께 사용rosserial client
:
rosserial_arduino
: Arduino와 Leonardo 지원, OpenCR은 수정하여 사용 중rosserial_embeddedlinux
: 임베디드용 리눅스용 라이브러리rosserial_windows
: 윈도우 운영체제 지원, 윈도우의 응용프로그램과 통신 지원rosserial_mbed
: ARM사의 mbed 지원rosserial_tivac
: TI사의 Launchpad 지원http://wiki.ros.org/rosserial/Overview/Protocol
메모리
Float64
Strings
Arrays
통신 속도
ROS를 지원하는 임베디드 보드
터틀봇3
에서 메인 제어기로 사용됨
오픈소스 H/W, S/W
: 회로, BOM, 거버 데이터 등의 H/W 정보 및 OpenCR의 모든 S/W를 오픈소스로 공개
rosserial의 제약 사항을 극복
하기 위한 구성
SBC 계열의 컴퓨터와 다양한 센서와 함께 사용하기 위한 전원 설계
확장 포트
참고)
강의: https://www.youtube.com/watch?v=VKNVj9IDMeo&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=9&ab_channel=ROBOTISOpenSourceTeam
자료: https://github.com/robotpilot/ros-seminar/blob/master/09_%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C_%EC%8B%9C%EC%8A%A4%ED%85%9C.pdf