ROS

ROS_Study: Understanding ROS Nodes

우기빌리 2023. 11. 8. 14:04

ROS graph concept과 몇몇의 명령어(roscore, rosnode, rosrun) 알아보자 

 

ROS Graph Concept 개요(아래 그림 참고):

Nodes: ROS package 내부에 있는 executable files. ROS로 서로 다른 Node끼리 통신할 수 있다.

Node는 또한 Service를 제공하거나 사용할 수 있다.

Messages: topic에 subscribe/publish 할때 사용되는 ROS data type

Topics: 한 Node는 한 Topic에 message를 subscribe/publish 한다.

Master: 각 Nodes들이 서로를 찾게 도와주는 것

roscore: Master + rosout + parameter 서버

* rosout, parameter는 우선 생략

 

 

roscore: ROS를 실행하기 위한 가장 첫 번째 단계

 

rosnode: 현재 실행중인 ROS node의 정보를 알려준다.

rosnode list

 

>> /rosout

 

아직 다른 Node를 생성하지 않았기에 rosout 한개만 표시된다.

*rosout은 Nodes'의 디버깅 아웃풋을 수집하기에 항상 켜져있다.

 

rosnode info /rosout

해당 노드의 더 많은 정보를 볼 수 있다.

 

Using rosrun

rosrun: 생성된 패키지를 활용하여 패키지 내부에 있는 Node를 직접적으로 사용하게끔 한다.

*여타 방법은 해당 Node가 있는 곳까지 경로를 안내해주고나, 해당 경로에 가 있어야된다.

 

rosrun [package_name] [node_name]

rosrun turtlesim turtlesim_node

 

웬 거북이가 보인다.

거북이의 종류는 다양하다

새로운 노드를 실행시켰기 때문에 이젠 rosnode list를 실행하면 새로운 Node가 표시된다.

 

>> /rosout

>> /turtlesim

 

노드를 실행시킬 때, 해당 노드의 이름을 변경하여 실행시킬수도 있다.

rosrun turtlesim turtlesim_node __name:=my_turtle

 

이때 실행된 list를 확인하면

>>  /my_turtle

>> /rosout

이 표시됨을 알 수있다.

 

*이전에 지운 노드가 여전히 리스트에 표시되어 있으면 윈도우 창을 끈게 아니라 터미널에서 (Ctrl+c) 를 눌러서 없앴기 때문. 해당 단축키는 완벽하게 꺼주는 기능은 아닌 듯하다.

 

rosnode list를 업데이트 하고 싶다면,

rosnode cleanup

 

rosnode ping <node>: 해당 노드와의 연결성을 시험하는 명령어

rosnode ping my_turtle

>>

'ROS' 카테고리의 다른 글

ROS_Study: Understanding ROS Services and Parameters  (0) 2023.11.22
ROS_Study: Understanding ROS Topics  (0) 2023.11.22
ROS_STudy: Building Packages  (2) 2023.11.08
ROS_Study: CreatingPackage  (0) 2023.09.11
ROS_Study: catkin/workspaces  (0) 2023.09.11