[ROS] ROS Introduction
Updated:
ROS의 목적
- 로보틱스 소프트웨어 개발을 전세계 레벨에서 공동작업 가능하도록 생태계를 구축하는 것
ROS : Meta-Operating System
- 전통적인 운영체제(Linux, Windows, OS-X, Android 등) 위에서 동작하는 운영체제
- 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공
- 다수의 이기종 하드웨어 송수신, 스케쥴링, 에러 처리 등
- 로봇 소프트웨어 프레임워크를 기반으로 다양한 목적의 응용프로그램 개발
- 유저들이 개발한 패키지를 유통하는 생태계
특징
- 통신 기능
- 노드 간 데이터 통신 제공
- 메시지 전달 인터페이스 지원
- 메시지 파싱 기능
- 메시지의 기록 및 재생
- 메시지 사용으로, 다양한 프로그래밍 언어 사용 가능 (각 노드는 서로 다른 언어로 작성 가능)
- 분산 매개 변수 시스템
- 로봇 관련 다양한 기능
- 로봇에 대한 표준 메시지 정의
- 로봇 기하학 라이브러리
- 로봇 기술 언어
- 다양한 개발 도구
- 로봇 개발에 필요한 다양한 개발 도구 제공
- 로봇 개발의 효율성 향상
- Command-Line Tools (GUI 없이 명령어로만 로봇 억세스)
- RViz (강력한 3D시각화 툴)
- RQT (GUI 개발을 위한 Qt 기반 프레임워크)
- Gazebo (물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터)
ROS 용어
- Master : 노드와 노드간 연결 및 메시지 통신을 위한 네임 서버. HTTP 기반 XMLPRC 통신. 포트 11311 사용
- Node : 최소 단위의 실행 가능한 프로세스
- Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것
- Message : 노드간 전송되는 데이터
- Topic : 단방향 통신일 때 Topic 사용. 퍼블리셔 노드가 토픽을 마스터에 등록
- Publisher(Node) : 토픽 내용에 해당되는 메시지를 송신하는 노드
- Subscriber(Node) : 토픽 내용에 해당되는 메시지를 수신하는 노드
- Service : 요청이 있을 때만 응답하는 서버-클라이언트 동작 (일회성 메시지 통신)
- Catkin : ROS 빌드 시스템. CMake를 이용하고 있어서 패키지 폴더에 CMakeList 파일에 빌드 환경 기술
Leave a comment