안녕하세요 개발질 하는 기획자 Haneul 입니다.😳
오늘은 첫 포스팅으로 Ros(Robot operating system)에 대한 기본 개념과 간단하면서도 꼭 필요한 명령어를 알아보겠습니다.

ros는 여러 구조체가 실시간으로 통신하며 동작해야하는 로봇의 특성을 잘 반영하여 간편한 프로그래밍을 할 수 있도록 운영체제 역할을 한다고 볼 수 있습니다. node 구조체 사이의 통신을 topic, service의 형태로 정보를 실시간으로 주고 받기에 유용합니다.
노드와 노드 사이의 통신을 위한 서버.
마스터가 없으면 ROS 노드 간 Message, Topic등을 통신 할 수 없다.
실행 명령어 : roscore
ROS에서 실행되는 최소 단위 프로세스(프로그램).
ROS에서는 하나의 목적에 하나의 노드를 개발하는 것 추천.
노드와 노드 간의 데이터를 주고 받는 양식.
ROS에서는 메시지를 통해 노드 간 데이터를 주고 받는다.
ROS 소프트웨어의 기본 단위. 패키지는 노드, 라이브러리, 환경설정 파일들을 통합하는 최소의 빌드 단위이며, 배포 단위.
단방향의 연속적인 메시지 송수신 방식.
계속적으로 보내줌.
메시지의 이름, 주제, 노드에서 어떤 메시지를 송신하고 싶으면 토픽으로 마스터에 등록하고 해당 토픽으로 메세지를 보낸다.
Subscriber Node는 등록된 토픽의 이름에 해당하는 Publisher Node의 정보를 받는다.
양방향의 일회성 메세지 송수신 방식.
요청에 대한 응답 데이터를 받고 싶을 때 사용.
응답을 보내고 종료.
Topic에 원하는 메시지를 담아 송신(Publish)하는 것.
Publish를 수행하기 위해 Topic을 포함한 자신의 정보를 마스터에 등록하고, Subscriber Node에 Message를 보냄.
하나의 노드에 여러 개의 Publisher를 선언 할 수 있다.
Topic의 내용에 해당하는 Message를 수신(Subscribe)하는 것.

| Topic | Service |
|---|---|
| 단방향 통신, 비동기 통신 | 양방향 통신, 동기 통신 |
| Publisher : Message 송신 | Service Client : Service 요청 |
| Subscriber : Message 수신 | Service Server : Service 응답 |
| 지속적으로 발생하는 송수신에 적합 | 클라이언트 요청이 있을 때 서버에서 응답 |
| 1:N, 1:1, N:1, N:N 전부 가능 | 요청과 응답이 끊기면 노드 접속 종료 |

오늘은 간단하게 ros1의 핵심 개념과 명령어에 대해 알아보았습니다.
다음 포스팅에는 ros 코드를 직접 보며 정리해보겠습니다.
읽어주셔서 감사합니다😊