차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
activity:public:2020:ros:210120 [2021/01/20 14:39:45] – khr9648 | activity:public:2020:ros:210120 [2021/01/27 11:35:45] (현재) – Youtube 링크 추가 david | ||
---|---|---|---|
줄 3: | 줄 3: | ||
ZOOM 화상회의 | ZOOM 화상회의 | ||
- | ====1. 개념==== | + | {{youtube> |
+ | |||
+ | =====1. 개념===== | ||
**임베디드 시스템(embedded system, 내장형 시스템)** | **임베디드 시스템(embedded system, 내장형 시스템)** | ||
줄 23: | 줄 25: | ||
리눅스 같은 운영체제는 실시간성을 보장하지 못하기 때문에 엑추에이터나 센서등을 제어하기 위해서는 실시간 제어에 적합한 마이크로컨트롤러를 사용한다. 이런 임베디드 시스템에는 ROS를 설치할 수 없기 때문에 시스템과 (ROS가 설치된) PC 사이의 통신이 필요하다.((ROS에서는 이를 위해 rosserial이라는 패키지를 제공한다)) | 리눅스 같은 운영체제는 실시간성을 보장하지 못하기 때문에 엑추에이터나 센서등을 제어하기 위해서는 실시간 제어에 적합한 마이크로컨트롤러를 사용한다. 이런 임베디드 시스템에는 ROS를 설치할 수 없기 때문에 시스템과 (ROS가 설치된) PC 사이의 통신이 필요하다.((ROS에서는 이를 위해 rosserial이라는 패키지를 제공한다)) | ||
- | ====2. Open CR==== | + | =====2. Open CR===== |
+ | |||
+ | ====2.1 개념==== | ||
- | ===2.1 개념=== | + | {{https:// |
ROS를 지원하는 임베디드 보드이며 터틀봇3에서 메인 제어기로 사용된다. | ROS를 지원하는 임베디드 보드이며 터틀봇3에서 메인 제어기로 사용된다. | ||
줄 31: | 줄 35: | ||
|| | || | ||
- | ===2.2 개발환경 구축=== | + | ====2.2 개발환경 구축==== |
[[https:// | [[https:// | ||
- | ====3. rosserial==== | + | =====3. rosserial===== |
- | ===3.1. 개념=== | + | ====3.1. 개념==== |
PC와 제어기 간의 메시지((메시지, | PC와 제어기 간의 메시지((메시지, | ||
줄 46: | 줄 50: | ||
|| | || | ||
- | ===3.2. package 구성=== | + | ====3.2. package 구성==== |
rosserial은 rosserial server와 rosserial client로 구성되어있다. rosserial server는 구현된 프로그래밍 언어에 따라 3가지 노드가 있다. | rosserial은 rosserial server와 rosserial client로 구성되어있다. rosserial server는 구현된 프로그래밍 언어에 따라 3가지 노드가 있다. | ||
줄 73: | 줄 77: | ||
|| | || | ||
- | ===3.3. 프로토콜=== | + | ====3.3. 프로토콜==== |
rosserial server와 client는 시리얼 통신 시반의 패킷 형태로 데이터를 송/ | rosserial server와 client는 시리얼 통신 시반의 패킷 형태로 데이터를 송/ | ||
줄 85: | 줄 89: | ||
* Sync Flag / Protocol version: 프로토콜 버전으로 ROS Groovy는 0xFF이고, ROS Hydro, Indigo, Jade 그리고 Kinetic은 0xFE 이다. | * Sync Flag / Protocol version: 프로토콜 버전으로 ROS Groovy는 0xFF이고, ROS Hydro, Indigo, Jade 그리고 Kinetic은 0xFE 이다. | ||
* Message Length(N): 메시지의 데이터 길이 헤더이며 2 Byte로 구성된다. Low 바이트가 먼저 전송되고 이어서 High 바이트가 전송된다. | * Message Length(N): 메시지의 데이터 길이 헤더이며 2 Byte로 구성된다. Low 바이트가 먼저 전송되고 이어서 High 바이트가 전송된다. | ||
- | * Checksum over message length: 메시지 길이 헤더의 유효성 검증을 위한 체크섬으로 계산 방법은 | + | * Checksum over message length: 메시지 길이 헤더의 유효성 검증을 위한 체크섬으로 계산 방법은 |
< | < | ||
* Topic ID: 메시지의 형태를 구분하기 위한 ID이다. 0~100까지는 시스템 함수로 예약되어있는데 주로 사용되는 ID는 아래와 같다. | * Topic ID: 메시지의 형태를 구분하기 위한 ID이다. 0~100까지는 시스템 함수로 예약되어있는데 주로 사용되는 ID는 아래와 같다. | ||
줄 91: | 줄 95: | ||
ID_PARAMETER_REQUEST=6, | ID_PARAMETER_REQUEST=6, | ||
* Serialized Message Data: 송/수신 메시지를 시리얼 형태로 전송하기 위한 데이터이다. 예) IMU, TF, GPIO 데이터 | * Serialized Message Data: 송/수신 메시지를 시리얼 형태로 전송하기 위한 데이터이다. 예) IMU, TF, GPIO 데이터 | ||
- | * Checksum over Topic ID and Message Data: Topic ID와 메시지 데이터의 유효성 검증을 위한 체크섬으로 계산 방법은 | + | * Checksum over Topic ID and Message Data: Topic ID와 메시지 데이터의 유효성 검증을 위한 체크섬으로 계산 방법은 |
< | < | ||
|| | || | ||
- | ===3.4. 제약 상황=== | + | ====3.4. 제약 상황==== |
* **메모리**: | * **메모리**: | ||
줄 109: | 줄 113: | ||
|| | || | ||
- | ===3.5. 예제=== | + | ====3.5. 예제==== |
예제를 진행하기 전에 roscore를 먼저 실행한 후 진행해야 한다. 다음은 OpenCR에서 제공하는 기본 예제이다. | 예제를 진행하기 전에 roscore를 먼저 실행한 후 진행해야 한다. 다음은 OpenCR에서 제공하는 기본 예제이다. |