이 글은 아래의 자료를 참고로 만들어졌습니다.
docs.ros.org/en/dashing/Tutorials/Rqt-Console/Using-Rqt-Console.html
Using rqt_console
Goal: Get to know rqt_console, a tool for introspecting log messages.
Tutorial level: Beginner
Background
rqt_console은 ROS 2에서 log messages를 확인하기 위한 GUI 도구입니다.
일반적으로, log messages는 terminal에서 보여집니다.
rqt_console을 사용하면, 시간에 따라 messages를 수집하고, 자세히 볼 수 있습니다.
보다 체계적인 방법으로는, messages를 필터링하고, 저장하고, 심지어 다른 시간에 저장된 파일을 검사할 수 있습니다.
Nodes는 logs를 사용하여 events나 status에 관한 메세지를 다양한 방식으로 출력합니다.
이러한 content는 일반적으로 사용자의 편의를 위해 정보를 제공합니다.
Prerequisites
rqt_console과 turtlesim 설치가 필요합니다.
항상 새로운 터미널에 설정파일을 소싱하는 것을 잊지 마세요.
Tasks
1 Setup
새로운 터미널을 열고 아래의 명령을 실행하여 rqt_console을 실행합니다.
$ ros2 run rqt_console rqt_console
콘솔의 첫번째 부분은 시스템의 log messages를 출력합니다.
중간 부분은 messages를 필터할 수 있는 옵션입니다.
오른쪽 더하기 버튼을 눌러 필터들을 추가할 수 있습니다.
마지막 부분은 messages를 강조하는 부분입니다.
마찬가지로, 오른쪽 더하기 버튼을 눌러 필터들을 추가할 수 있습니다.
새로운 터미널에 아래의 명령을 통해 turtlesim을 실행합니다.
$ ros2 run turtlesim turtlesim_node
2 Messages on rqt_console
rqt_console에 log messages를 표시하기위해, turtle을 벽으로 움직여봅시다.
새로운 터미널을 열고, 아래의 명령을 실행합니다(자세한 내용은 topics tutorial에서 다루었습니다).
$ 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}}"
topic이 꾸준한 속도로 명령을 publishing하기 때문에,
turtle은 지속적으로 벽으로 이동합니다.
rqt_console에서 serverity에서 Warn이라는 메세지가 계속 출력되는 것을 볼 수 있습니다.
ros2 topic pub 명령을 실행한 터미널에 Ctrl+C를 눌러 벽으로 가는 turtle이 멈춥니다.
3 Logger levels
ROS 2의 serverity에 따른 logger levels는 아래와 같습니다.
Fatal
Error
Warn
Info
Debug
각 level이 무엇을 나타내는지 정확한 기준은 없지만,
아래와 같이 가정을 해도 무방합니다.
- Fatal messages는 시스템이 손상으로부터 스스로를 지키기위해 종료될 것임을 알려줍니다.
- Error messages는 시스템을 손상시키지는 않지만 시스템이 제대로 작동하지 않는 중요한 문제가 있음을 알려줍니다.
- Warn messages는 깊숙한 문제로 인해 나타나는 예기치 않은 활동이나 이상적이지 않은 결과를 나타내지만, 기능을 완전히 손상시키지 않음을 나타냅니다.
- Info messages는 시스템이 예상대로 실행 중임을 시각적으로 확인하는 이벤트나 상태 업데이트를 나타냅니다.
- Debug messages는 시스템 실행의 전체 단계별 프로세스를 자세히 설명합니다.
default level은 Info입니다. default severity와 더욱 심각한 levels에서만 messages를 볼 수 있습니다.
일반적으로, Debug messages는 Info보다 심각한 level이 아니기 때문에 messages가 숨겨집니다.
예를 들어, 만약 deault level이 Warn이라면, Warn, Error, Fatal의 severity의 messages만 볼 수 있습니다.
3.1 Set the default logger level
remapping을 이용하여 /turtlesim node의 default logger level을 바꿀 수 있습니다.
아래의 명령을 실행합니다.
$ ros2 run turtlesim turtlesim_node __log_level:=warn
[WARN] [turtlesim]: Oh no! I hit the wall! (Clamping from [x=11.120889, y=5.544445])
...(생략)
$ ros2 run turtlesim turtlesim_node
[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
[WARN] [turtlesim]: Oh no! I hit the wall! (Clamping from [x=11.112445, y=5.544445])
...(생략)
default logger level을 바꾸면 Info level의 경고를 볼 수 없습니다.
왜냐하면 새로운 default serverity Warn이 Info messages보다 낮은 level에 있기 때문입니다.