Link
https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools/Using-Rqt-Console/Using-Rqt-Console.html
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 메세지가 필요할지 모르겠지만 그 경우가 적지 않을 것인데 그 때마다 어디가 잘못되었는지 그 원인이 어디에서 시작되었는지 파악하는데 큰 도움이 될 것이다.
'Knowhow > ROS2' 카테고리의 다른 글
[ROS2 Foxy Tutorial 한글 번역] 10. Recording and playing back data (0) | 2023.02.03 |
---|---|
[ROS2 Foxy Tutorial 한글 번역] 9. Launching nodes (0) | 2023.02.03 |
[ROS2 Foxy Tutorial 한글 번역] 7. Understanding actions (0) | 2023.02.02 |
[ROS2 Foxy Tutorial 한글 번역] 6. Understanding parameters (0) | 2023.02.02 |
[ROS2 Foxy Tutorial 한글 번역] 5. Understanding services (0) | 2023.02.01 |