rqt_console 를 사용하여 로그 보기

목표: rqt_console 을 사용하여 로그 메시지를 검사하는 방법을 알아봅니다.

배경 지식

rqt_console 는 ROS 2에서 로그 메시지를 검사하는 데 사용되는 GUI 도구입니다. 일반적으로 로그 메시지는 터미널에 표시됩니다. rqt_console 을 사용하면 이러한 메시지를 시간에 따라 수집하여 가깝게 보고 조직적으로 볼 수 있으며, 필터링하고 저장하고 저장된 파일을 다시 검사하여 다른 시간에 검사할 수도 있습니다.

노드들은 이벤트와 상태에 관한 로그 메시지를 다양한 방식으로 출력하여 사용자를 위해 정보를 제공합니다. 일반적으로 내용은 사용자를 위한 것입니다.

전제 조건

rqt_console 및 turtlesim 을 설치해야 합니다.

항상 새로운 터미널을 열 때마다 ROS 2를 source하는 것을 잊지 마십시오.

작업

1 설정

다음 명령을 사용하여 새 터미널에서 rqt_console 을 시작합니다.

ros2 run rqt_console rqt_console

rqt_console 창이 열립니다.

../../_images/console.png

콘솔의 첫 번째 부분은 시스템에서의 로그 메시지가 표시되는 곳입니다.

중간에는 심각도 수준을 제외하고 메시지를 필터링하는 옵션이 있습니다. 오른쪽의 더하기 기호 버튼을 사용하여 추가적인 제외 필터를 추가할 수도 있습니다.

아래 부분은 지정한 문자열을 포함하는 메시지를 강조 표시하는 데 사용됩니다. 이 섹션에도 추가 필터를 추가할 수 있습니다.

이제 새로운 터미널에서 다음 명령을 사용하여 turtlesim 을 시작합니다.

ros2 run turtlesim turtlesim_node

2 rqt_console에서 메시지

rqt_console 에서 표시할 로그 메시지를 생성하려면 거북이를 벽에 부딪히게 해보겠습니다. 새 터미널에서 다음 명령을 입력하십시오. (토픽 튜토리얼에서 자세히 다루었습니다.)

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}}"

위의 명령은 주제를 일정한 속도로 게시하기 때문에 거북이가 지속적으로 벽에 부딪히게 됩니다. rqt_console 에서는 계속해서 “Warn” 심각도 수준과 함께 동일한 메시지가 반복적으로 표시됩니다.

../../_images/warn.png

ros2 topic pub 명령을 실행한 터미널에서 거북이가 벽에 부딪히지 않도록 하려면 Ctrl+C 를 누르십시오.

3 로거 레벨

ROS 2의 로거 레벨은 심각도에 따라 정렬됩니다.

Fatal
Error
Warn
Info
Debug

각 수준이 나타내는 내용에 대한 정확한 표준은 없지만 다음과 같은 것으로 가정하는 것이 안전합니다.

  • Fatal 메시지는 시스템이 스스로를 보호하기 위해 종료하려고 하는 것을 나타냅니다.

  • Error 메시지는 시스템을 손상시키지는 않지만 올바르게 작동하지 못하게 하는 중요한 문제를 나타냅니다.

  • Warn 메시지는 예상치 못한 활동이나 이상적이지 않은 결과로 깊은 문제를 나타낼 수 있지만 기능을 완전히 손상시키지는 않습니다.

  • Info 메시지는 시스템이 예상대로 작동하는 것을 시각적으로 확인하는 이벤트 및 상태 업데이트를 나타냅니다.

  • Debug 메시지는 시스템 실행의 단계별 과정을 자세히 설명합니다.

기본 레벨은 “Info”입니다. 기본 심각도 수준 이상인 메시지만 볼 수 있습니다.

보통 “Debug” 메시지는 “Info”보다 심각도가 낮기 때문에 숨겨지지만 나머지 심각도 수준보다는 높은 경우가 많습니다. 예를 들어 기본 레벨을 “Warn”으로 설정하면 “Warn”, “Error”, “Fatal” 심각도 수준의 메시지만 볼 수 있습니다.

3.1 기본 로거 레벨 설정

로그인 /turtlesim 노드를 처음 실행할 때 기본 로거 레벨을 설정할 수 있습니다. 터미널에서 다음 명령을 입력하십시오.

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

이제 “turtlesim”을 시작할 때 초기 “Info” 레벨 메시지를 보지 못하게 됩니다. 이는 “Info” 메시지가 새로운 기본 심각도인 “Warn”보다 낮은 우선 순위이기 때문입니다.

요약

rqt_console 은 시스템의 로그 메시지를 자세히 조사해야 할 경우 매우 유용합니다. 로그 메시지를 조사하려는 이유는 다양할 수 있으며, 주로 무엇이 잘못되었는지와 그로 인한 이벤트의 연속을 찾아내는 데 사용됩니다.

다음 튜토리얼에서는 ROS 2 Launch 를 사용하여 한 번에 여러 노드를 시작하는 방법을 배우게 됩니다.