반응형

ROS에서 디버깅하고 많은 노드들을 동시에 시작하기 위한 rqt_console과 rqt_logger_level을 알아보자.

 

1. Prerequisites rqt and turtlesim package

이번 과정은 rqt와 turtlesim 패키지를 모두 사용하므로 둘 다 설치를 진행한다.

 

<distro>는 ROS버전(kinetic, melodic, ...)을 입력한다.

2. Using rqt_console and rqt_logger_level

rqt_console은 ROS의 rogging 프레임워크를 통해 노드들의 결과를 표시해준다.

rqt_logger_level 은 노드들이 실행되면서 동시에 verbosity level(DEBUG, WARN, INFO and ERROR)을 변경할 수 있도록 한다.

 

rqt_console의 turtlesim의 출력을 확인해보고 rqt_logger_level을 turtlesim으로 변경해보자.

turtlesim을 시작하기 전에 새로운 터미널창을 열고 rqt_console과 rqt_logger_level을 실행하자.

 

그럼 아래와 같은 창이 팝업되게 된다.

 

 

그럼 이제 아래 명령어를 통해 turtlesim_node를 실행시키자.

 

기본으로 설정된 logger level이 INFO이므로 turtlesim 이 publish하는 정보들을 확인할 수 있게 된다.

 

이제 logger level을 WARN으로 변경해보자.

 

그리고 아래 코드를 입력하여 보면

콘솔에 아래와 같은 Warn 메시지들이 출력되는 것을 확인할 수 있다.

 

2.1 Quick Note about logger levels

Logging levels는 다음의 순서로 우선순위가 정해지게 된다.

Fatal은 가장 높은 우선순위를 갖고 Debug는 가장 낮은 우선순위를 갖는다. logger level을 설정함으로써 priority level 이상의 메시지들을 받게 된다. 예를들어, logger level을 WARN으로 설정하면 모든 Warn, Error, Fatal logging messages를 받게 된다.

 

그럼 이제 turtlesim 노드를 종료하고 다수의 turtlesim 노드들을 실행하기 위해 roslaunch를 사용해보자.

 

2.2 Using roslaunch

roslaunch는 launch file에 정의된대로 노드들을 실행하게 된다.

우선 앞에서 생성하고 빌드했던 beginner_tutorials 패키지의 경로로 이동하자.

만약 위의 명령에서 "roscd:No such package/stack 'beginner_tutorials'" 라는 에러가 출력되면 setup파일의 설정을 source하여 저장해야한다.

(참고: wiki.ros.org/catkin/Tutorials/create_a_workspace)

 

다음 launch 폴더를 생성한다.

2.3 The Launch File

이제 turtlemimic.launch 라는 파일을 생성하고 아래 내용을 복붙하자.

$ gedit turtlemimic.launch


<launch>

  <group ns="turtlesim1">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <group ns="turtlesim2">
    <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
  </group>

  <node pkg="turtlesim" name="mimic" type="mimic">
    <remap from="input" to="turtlesim1/turtle1"/>
    <remap from="output" to="turtlesim2/turtle1"/>
  </node>

</launch>

2.4 The Launch File Explained

 

위의 코드에서 가장 위에 <launch> 는 해당 파일이 launch file임을 나타낸다.

 

그리고 첫번째, 두번째 문단을 통해 sim이라는 이름의 2가지 노드(turtlesim1, turtlesim2)를 정의하고

이는 충돌없이 두개의 시뮬레이터가 잘 작동할 수 있도록 해준다.

 

마지막 문단은 각각의 노드들의 입/출력을 설정하는 과정으로 turtlesim2가 turtlesim1을 따라하도록 설정한 것이다.

 

마지막 </launch>는 launch file의 xml을 닫도록 하는 것이다.

 

 

2.5 roslaunching

이제 해당 파일을 roslaunch 해보자.

그럼 거북이 창이 2개 뜨는 것을 확인할 수 있다.

 

하나의 명령을 통해 2개의 거북이가 동시에 움직이는 것을 확인할 수 있다.

그럼 rqt_graph를 통해 관계를 조금 더 자세히 알아보자.

 

turtlesim1이 움직임의 메시지를 subscribe하고 mimic 노드를 통해 turtlesim2가 turtlesim1을 따라가는 관계임을 볼 수 있다.

반응형

'ROS > ROS Wiki' 카테고리의 다른 글

Creating a ROS msg and srv  (0) 2021.01.05
Using rosed to edit files in ROS  (0) 2021.01.05
Understanding ROS Services and Parameters  (0) 2021.01.05
Understanding ROS Topics  (0) 2021.01.04
Understanding ROS Nodes  (0) 2021.01.03

+ Recent posts