제가 작성하는 이 글은 제가 공부하기 위해 작성하고 제 학교 후배들에게 조금이라도 ros에 대해서 접하게 하고자 작성하게 되었습니다. 그러니 만약 틀린내용이나 그러니 제가 부족한 부분이 있을수 있으니 주의해주면서 봐주시면 감사하겠습니다 -Happy Lee-
ROS는 노드에 대한 통신으로 생각하면된다

▪ 위 그림처럼 NodeA, Node B, Node C 각각의 노드들은 서로유기적으로 Message로 연결된다.
▪ 수행하고자하는 태스크가 많아질수록 메시지로 연결되는 노드가 늘어나며 시스템이 확장된다.
ros2 node list : 현재 실행중인 노드의 이름표시
ros2 node info : 현재 실행중인 노드의 정보표시

▪ 위 그림의NodeA– NodeB, Node A– Node C처럼 비동기식 단방향 메시지송수신방식
▪ msg 메시지형태의 메시지를 발간하는 Publisher
▪ 메시지를 구독하는 Subscriber 간의 통신
▪ 이는 1:N, N:1, N:N 통신도 가능
▪ ROS 메시지 통신에서 가장널리 사용되는 통신방법이다.
ros2 topic list : 현재 실행중인 토픽 이름표시
ros2 topic info : 현재 실행중인 토픽정보 표시
ros2 topic type : 현재 실행중인 토픽타입 표시
ros2 topic echo : 특정 토픽을 터미널에 표시
ros2 topic pub (ros2 topic pub [주기 관련][토픽 이름] [토픽 타입] "[{값}]") : 특정 토픽을 발행한다.
ros2 topic bw : 지정 토픽의 대역폭 측정
ros2 topic delay : 지정 토픽의 지연시간 측정
ros2 topic find : 지정 타입을 사용하는 토픽 이름 출력
ros2 topic hz : 지정 토픽의 주기 측정

▪ 위 그림의NodeB- Node C처럼 동기식 양방향 메시지 송수신 방식이다.
▪ 서비스의요청(Request)을 하는 쪽은 Service client이다
▪ 서비스의응답(Response)을 하는 쪽을 Service server이다
▪ 특정요청을 하는 클라이언트 단과 요청받은 일수행후 결과값을 전달하는 서버 단과의통신
▪ 서비스요청 및 응답(Request/Response) 또한 위에서 언급한 msg 메시지의 변형으로 srv 메시지라고함
ros2 service list : 현재 실행되고 있는 서비스의 이름을 보여준다.
ros2 service type (ros2 service type [서비스 이름]) : 현재 실행되고 있는 서비스의 타입을 보여준다.
ros2 service call (ros2 service call [서비스 이름][서비스 타입] "{값}" ) : 특정 서비스를 호출한다.
ros2 service find (ros2 service type [서비스 타입]) : 지정 서비스 타입의 서비스를 출력한다.

▪ 양방향 메시지 송수신 방식으로 토픽(topic)과 서비스(service)의 혼합한다.
▪ 액션 목표 및 액션결과를 전달하는 방식은 서비스와같다.
▪ 액션 피드백은 토픽과 같은메시지 전송방식이다.
▪ 액션목표/피드백/결과(Goal/Feedback/Result) 메시지 또한 위에서 언급한 msg 메시지의 변형으로 action 메시지라고 한다.
ros2 action list : 현재 실행중인 액션의 이름표시
ros2 action info : 현재 실행중인 액션의 정보표시
ros2 action goal : 액션의 목표 지정

▪ 각노드에 파라미터관련 Parameterserver를 실행시켜 외부의Parameter client 간의 통신으로 파라미터를 변경하는것으로 서비스와 동일하다.
▪ 노드내매개변수 또는 글로벌매개변수를 서비스 메시지 통신방법을 사용하여 노드 내부 또는 외부에서쉽게지정(Set) 하거나 변경할 수 있고, 쉽게 가져(Get)와서 사용할 수 있게하는점에서목적이다르다.
ros2 param list : 파라미터 목록 확인
ros2 param describe (ros2 param describe [노드 이름][파라미터 이름]) : 파라미터 내용 확인
ros2 param get (ros2 param get [노드 이름][파라미터 이름]) : 파라미터 읽기
ros2 param set (ros2 param set [노드 이름][파라미터 이름] [값]) : 파라미터 쓰기
ros2 param dump (ros2 param dump [노드 이름]) : 파라미터 저장
ros2 param delete (ros2 param delete [노드 이름][파라미터 이름]) : 파라미터삭제