제가 작성하는 이 글은 제가 공부하기 위해 작성하고 제 학교 후배들에게 조금이라도 ros에 대해서 접하게 하고자 작성하게 되었습니다. 그러니 만약 틀린내용이나 그러니 제가 부족한 부분이 있을수 있으니 주의해주면서 봐주시면 감사하겠습니다 -Happy Lee-
이번에는 다양한 개념을 알아보기 위해 작성하는 블로그이다. 너무 깊지 않을수 있으니 궁금한게 있으면 더 찾아보면서 공부하는게 좋을것이다.
ROS에서 제공하는 명령줄 인터페이스로, 명령줄에서 직접 ROS 시스템을 제어하거나 정보를 조회할 수 있도록 지원하는 도구입니다.
ros2 [verbs] [sub-verbs] [options] [arguments]
verbs: 동작을지정하며, 수행할 작업의 유형을 나타냄
sub-verbs: 특정 동작에 대한 세부동작을 지정
options: 명령어의 실행방식을 설정하는 추가파라미터
arguments: 실행할 때 필요한 인수를 지정하여 특정노드의 이름이나 토픽의 이름, 서비스 이름 등이 올 수 있음
run / launch

pkg / node / topic

action / service / interface

param / bag

extensions / extension_points / daemon / multicast

doctor / wtf / lifecycle

component / security

이 외에도 CLI를 직접 제작도 할수 있으니 참고하기 바란다.
ROS는 복수개의 node를 사용하여 개발이 이루어지는데 복수개의 node 사용시 데이터 통신을 위한 작업으로 인해 성능저하가 발생한다. 이를 막기 위해 IPC를 사용한다.


ros2에서는 노드의 상태관리를 위해 Lifecycle 인터페이스가 제공되는데 노드는 주요 상태와 전환상태를 가진다. 이 상태 전환을 통해 노드를 구성, 활성화, 비활성화를 할수 있다.
그래서 뭔가 lifecycle 자체가 OS가 여러개의 프로세스를 효율적으로 관리하기 위해 프로세스의 상태를 정의하고 상태의 전환을 조율함으로써 프로세스의 상태는 메모리, 자원의 할당 여부를 따라 끄고 키고 전환을 할수 있다.
DDS : 분산 시스템에서 데이터를 교환하기 위해 설계되어 ROS 2는 이 DDS를 기반으로 메시지 송수신을 관리합니다.