ROS2 rqt로 토픽 발행하기, log 구현하고 rqt로 확인하기
이전에 대회에 나갔을 때 기존에 있는 패키지를 바탕으로 코드를 수정하면서 원하는 방향으로 로봇이 움직이도록 만들었다. 이때 내가 처음부터 작성한 코드가 아니기에 조금만 수정해도 오류가 발생했다. 코딩, 프로그래밍을 한 것이 처음이었기에 이때부터 디버깅이라고 해야할지 로그를 남기는 것의 필요성이 중요하게 다가왔다. 하지만 ROS에서 로그를 남기는 방법이 다양해서 어떤 방법을 사용할지 몰라 그냥 print를 이용했었다. ㅎㅎ 이번에 로그 관련 강의가 올라와 이 부분이 궁금해 먼저 글을 써보려고 한다.
우선 혹시 모르기 때문에 rqt 관련 파일?을 설치한다.
sudo apt install ros-humble-rqt*
터틀심 실행하고 rqt를 실행하자!
플러그인 - 로깅 - 콘솔 선택
rqt 플러그인으로 로그를 관찰할 수 있음
- rqt로만 로그 확인할 수 있는 것은 아님
rqt로 토픽 다루기
플러그인 - visulization - plot
/turtle1/pose 입력
제거 가능
화살표축 누르면 축 수정 가능
토픽 모니터링도 할 수 있다~
다만 값 업데이트 되는 게 느리다 때문에 빠르게 발행되는 토픽이라면 위와 같이 그래프로 보는 것이 낫다
플러그인 - 토픽 - message publisher
토픽 입력하고 값 수정하여 발행도 가능
원하는 토픽 값을 입력하고 체크하면 발행 가능
직진 명령
ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist “{linear: {x: 2., y: 0., z: 0.}, angular: {x: 0., z: 0.}}”
혹은 rqt로 위와 같이 쉽게 publish 가능
거북이가 벽에 부딪히면 rqt log console에 기록이 남음
디버그, 로그 레벨
info - warn - error - fatal 로 뒤로 갈수록 치명적인 에러임
여러 터미널에서의 로그 기록을 확인할 수 있음
로그 기능 코드로 구현하기
self.get_logger().info('표기할 문구')
.info는 앞에서 말한 레벨을 의미하는데 단순히 정보를 전달할 목적의 로그이다.
특정 작업을 실시할 때라던지 사용할 수 있다.
다시 빌드하고 해당하는 노드를 실행하면 터미널에 [INFO] 와 함께 로그가 뜬 것을 볼 수 있다.