Knowhow/ROS2

[ROS2 Foxy Tutorial 한글 번역] 8. Using rqt_console to view logs

침닦는수건 2023. 2. 3. 10:52
반응형

Link

https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools/Using-Rqt-Console/Using-Rqt-Console.html

 

Using rqt_console to view logs — ROS 2 Documentation: Foxy documentation

Goal: Get to know rqt_console, a tool for introspecting log messages. rqt_console is a GUI tool used to introspect log messages in ROS 2. Typically, log messages show up in your terminal. With rqt_console, you can collect those messages over time, view the

docs.ros.org

 

Background

rqt_console은 ROS2에서 log 메세지를 볼 수 있는 GUI 도구다. 기본적으로 log 메세지는 터미널에 출력된다. rqt_console을 이용하면 시간에 따라 이 log 메세지들을 모을 수 있고 조금 더 정돈된 형태로 볼 수 있다. 필터링을 하거나 저장하고 불러오고는 행위도 가능하여 실시간이 아닌 나중에도 다시 보며 분석할 수 있다.

 

노드들은 다양한 방식으로 자신의 event나 status를 외부로 전달하기 위한 메세지를 log에 담아  내보낸다. 여기 담긴 내용은 보통 유저가 원하는 대부분의 내용이 들어있다.

 

Prerequisites

rqt_console과 turtlesim이 설치되어 있어야 한다.

 

당연하게도, ROS2 sourcing하는 것을 잊지 말자.

 

Tasks

1. Setup

새 터미널에서 rqt_console을 실행한다.

ros2 run rqt_console rqt_console

(ros2 run rqt_console rqt_console 두 번 입력하는 건 패키지이름이랑 노드이름이라 그렇다.)

첫번째 칸은 log 메세지가 출력되는 것이고, 두번째 칸은 몇몇 조건에 따라 필터링한 메세지가 보여지는 칸, 세번째 칸은 입력했던 string이 포함된 메세지들만 따로 표시되는 칸이다. 

 

이제 turtlesim을 새 터미널에서 실행시켜보자.

ros2 run turtlesim turtlesim_node

 

2. Messages on rqt_console

log 메세지를 rqt_console에 띄우기 위해선 거북이를 벽 끝까지 이동시킬 필요가 있다. 새 터미널을 열어서 "ros2 topic pub" 커맨드를 이용해서 이동시켜보자. 

ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}"

위 커맨드는 주기적으로 토픽을 publish하므로, 거북이는 벽을 향해 이동하고도 계속 이동 명령을 받는다. 이때 rqt_console을 보면 Warn 으로 표시된 같은 메세지가 여러분 출력되는 것을 볼 수 있을 것이다.

이제 Ctrl+C 키를 이용해 위 커맨드를 종료하면 된다.

 

3. Logger levels

ROS2의 logger는 다음과 같은 분류의 메세지를 갖고 있다.

Fatal
Error
Warn
Info
Debug
  • Fatal : 시스템이 자체를 보호하기 위해서 자동 종료됨을 알리는 유형
  • Error : 시스템 자체에 피해를 입히진 않지만 중요한 이슈가 발생했음을 알리는 유형
  • Warn: 비정상 활동이나 바람직하지 않느 결과가 발생했음을 암시하는 유형. 역시나 시스템에 피해가 가진 않는 수준.
  • Info: event나 status를 시각적으로 출력해주면서 시스템이 잘 작동하고 있음을 알려주는 유형
  • Debug: 시스템이 동작하는 과정을 step-by-step으로 알려주는 유형

기본 level은 Info이며, 기본으로 설정된 level보다 더 중요한 level은 출력되고 그 이하는 출력되지 않는다. 

 

그러므로 기본 Info 유형 이하인 Debug 유형만 출력되지 않는 경우가 일반적이다. 예를 들어, 기본을 Warn 유형으로 설정하면 Info와 Debug는 출력되지 않고 그 이상인 Warn, Error, Fatal만 출력된다.

 

3.1 Set the default logger level

remapping 기능을 이용해서 노드가 시작될 때 default logger level을 설정할 수 있다. /turtlesim 노드를 예로 들면 다음 커맨드와 같다.

ros2 run turtlesim turtlesim_node --ros-args --log-level WARN

이제 기본 유형이 Warn이 되었으니 Info는 더 이상 출력되지 않을 것이다. 

 

Summary

rqt_console은 시스템이 출력하는 log 메세지를 확인하는데 효과적인 도구다. 어떠한 이유로 log 메세지가 필요할지 모르겠지만 그 경우가 적지 않을 것인데 그 때마다 어디가 잘못되었는지 그 원인이 어디에서 시작되었는지 파악하는데 큰 도움이 될 것이다.

반응형