티스토리 뷰

그동안은 ROS2의 학습용 패키지인 turtlesim 패키지만을 돌려봤습니다. 이번 차 부터는 그 것들이 어떻게 돌아가는 지 내부를 알아보면서 다시 한 번 학습을 해 보겠습니다. 오늘은 노드(node)에 대해 알아보겠습니다. 노드는 ROS2 시스템에서 가장 기본적인 실행 단위를 의미하고, 로봇시스템의 기능 하나하나를 노드로 만들어서 전체 시스템을 돌리게 된다고 생각하면 됩니다.

 

이전 튜토리얼: ROS2 foxy 튜토리얼2 - turtlesim과 rqt


1. ROS 그래프

ROS 시스템에서 가장 중요한 역할 중 하나는 유저들이 개발한 기능들간의 통신입니다. 그리고 각 기능들은 노드로 구현되는데 이 노드간의 통신과 노드의 집합을 그래프라고 일컫습니다.

 

2. ROS2에서의 노드

 앞서 말했든 노드는 하나의 기능에 대한 구현입니다. 예를들면 모터제어, 센서 입력, 알고리즘 계산 등이 각각 노드로 하나씩 구현될 수 있습니다. 물론 하나의 노드에 여러가지 기능을 담도록 구현할 수 도 있지만 이 후 전체적인 시스템의 유지 보수적 측면에서 기능하나 당 노드하나를 만들어주는 것이 경험상 더 좋았습니다.

 각 노드들은 서로 데이터를 주고 받으면서 로봇시스템이 운용되도록 하는데 이 노드를 받는 기준으로 토픽(topic), 서비스(service), 액션(action), 파라미터(parameter)를 사용합니다. 여기서 단순히만 설명 드리자면 각 노드들은 서로 동일한 토픽(외 나머지)에 대해서만 정해진 데이터를 주고 받을 수 있습니다. 이에 대해 잘 표현한 그림이 ros2 tutorial 사이트에 있습니다.

노드3개가 서로 토픽과 서비스를 통해 데이터를 주고받는 시스템에 대한 그래프

또한 ROS2에서는 한  executable(C++ 프로그램, python 프로그램)에 여러개의 노드를 포함 시킬 수 있습니다.

 

3. ros2 run

그동안  executable을 사용하기위해 사용한 ros2 run에 대해 알아보겠습니다. ros2 run의 일반적인 사용법은 다음과 같습니다.

 

ros2 run <package_name> <executable_name>

ex) ros2 run turtlesim turtlesim_node

 

실행된 executable에 대한 노드 이름은 아직 알 수 없습니다. 알아보려면

ros2 node list

를 사용해주시면

/turtlesim

이라는 결과를 보실 수 있습니다.

여기서 이 turtlesim이 실행된 노드의 이름입니다.

 

4. ros2 node list

ros2 node list는 현재 실행되고 있는 노드들의 이름을 보여 줍니다. 이 명령어는 현재 노드가 실행되고 있는게 무엇인지 확인할 때 사용하기 좋습니다.

 

ros2 run turtlesim turtle_teleop_key

를 실행하여 새로운 노드를 실행한 후 ros2 node list 를 통해 어떤 노드들이 켜져있는지 확인해보면

 

/turtlesim

/teleop_turtle

 

이 실행되고 있는 것을 커맨드 창에서 확인해 볼 수 있습니다.

 

5. ros2 node info

이제 노드의 이름을 아는 법을 봤으니 노드의 정보를 알아봅시다.

 

ros2 node info <node_name>

ex) ros2 node info /turtlesim

 

이라는 명령어를 통해 노드의 정보를 알아 볼 수 있습니다. 노드에서 사용중인 서브스크라이버(Subscriber), 퍼블리셔(Publisher) 등의 정보가 나옵니다.

 

ros2 node info 실행 화면

 

이번시간에는 turtlesim패키지의 turtlesim_node 와 turtle_teleop_key 라는 이름의 executable을 실행하여 어떤 노드들이 실행되는지 알아봤습니다. 또한 ros2 node list와 ros2 node info 명령을 통해 노드이름과 정보를 알아보는 법도 배웠습니다.

 

출처:

index.ros.org/doc/ros2/Tutorials/Understanding-ROS2-Nodes/

 

Understanding ROS 2 nodes

ros2 node list will show you the names of all running nodes. This is especially useful when you want to interact with a node, or when you have a system running many nodes and need to keep track of them. Open a new terminal while turtlesim is still running

index.ros.org


다음 튜토리얼:

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31