ROS = 로봇 응용 프로그램 개발할 때 필요한 소프트웨어 제공 플랫폼
: 하드웨어 추상화 (같은 종류 하드웨어 공통 명령어 집합으로 묶는 것) & 하위 디바이스 제어 & 일반 사용 기능 구현
& 프로세스간 메시지 패싱 & 패키지 관리 & 개발 환경 필요한 라이브러리 & 다양한 개발 및 디버깅 도구 제공
장점 : 오픈 소스 = 누구나 사용 가능
목적 = 전 세계 레벨에서 공동작업가능한 환경 구축
(코드 재사용 극대화에 초점을 둠)
기능
● 분산 프로세스 = 여러 노드 독립 실행, 노드 형태 프로그램이 분산 움직임
● 패키지 단위 관리 = 여러 프로세스를 패키지 단위 관리 (배포, 공유, 수정)
● 공개 레파지토리 = Github 공개 & 라이센스 밝힘
● API(application Programming Interface, 애플리케이션 프로그램 인터페이스, 컴퓨터 or 컴퓨터 프로그램 사이 연결)
= API 불러와 자신이 사용하던 코드 쉽게 적용
● 복수 프로그래밍 지원 = Python, C++, Lisp, java, C#, lua, ruby ...
사용 버전 = Melodic
ROS = 리눅스 작동 (Window X)
ROS 정보 사이트
중요 개념
● Node = 최소 프로그램 단위
(sensor / actuator driver, map building, planner, UI ...)
독립적 컴파일 & 실행 &관리
roscpp = C++ client library
rospy = python client library
Topic => Publish(내보내기) Subscriber(받기)
● Messages and Topics = 노드 사이 주고받는 정보
● Services
양방향 동기 통신
서비스 서버, 서비스 클라이언트간 통신
1 to 1 request response
클라이언트 요청 있을 시만 서버 응답
요청, 응답 끊김 = 노드 접속 끊김
● Actions
● ROS Master = 작동법: roscore
● Parameters
● Packages and Stacks
● Topic = 노드 간 메시지
단방향 비동기 통신
Publish(메시지 통신) Subscriber(메시지 수신)
'ROS' 카테고리의 다른 글
Gazebo 시뮬레이션 구동 (0) | 2022.09.06 |
---|---|
ROS 초음파 센서 프로그래밍 (0) | 2022.08.23 |
ROS C++ 기초 3 (0) | 2022.08.21 |
ROS C++ 기초 2 (0) | 2022.08.21 |
ROS C++ 기초 1 (0) | 2022.08.20 |