ROS2

[ROS2] Tutorial Beginner : CLI tools - Using rqt_console to view logs / Launching nodes / Recording and playing back data

씨주 2024. 10. 9. 23:10

Using rqt_console to view logs

Background

rqt_console은 GUI툴로 log message를 introspect하는데 사용한다.

쉽게 말해서 log message들을 편하게 관리할 수 있게 도와준다.

 

Tasks

setup

ros2 run rqt_console rqt_console

 

 

1번째 section은 log message를 보여준다.

2번째 section은 message를 필터링할 수 있다.

3번째 section은 input을 포함한 message들을 확인할 수 있으며 필터링 또한 가능하다.

 

messages on rqt_console

ros2 run turtlesim turtlesim_node
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}}"

 

 

앞으로 계속 전진하다 벽에 부딪혀 log message가 뜨는 것을 확인할 수 있다.

 

logger levels

심각성 : Fatal / Error > Warn > Info(default) > Debug

default값 아래인 Debug는 숨겨진다.

하지만 default값을 Warn으로 바꾼다면 Info, Debug 모두 숨겨진다.

 

아래의 코드로 default값을 바꿀 수 있다.

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

 

Launching nodes

Background

현재까지 tutorial을 하면서 새 node를 열때마다 터미널을 열었는데, 복잡한 시스템일수록 많은 node가 필요하다.

이를 위해 ros2 launch를 사용하여 전체 시스템의 node를 한번에 처리할 수 있다.

 

Tasks

Running a Launch File

ros2 launch turtlesim multisim.launch.py
# turtlesim/launch/multisim.launch.py

from launch import LaunchDescription
import launch_ros.actions

def generate_launch_description():
    return LaunchDescription([
        launch_ros.actions.Node(
            namespace= "turtlesim1", package='turtlesim', executable='turtlesim_node', output='screen'),
        launch_ros.actions.Node(
            namespace= "turtlesim2", package='turtlesim', executable='turtlesim_node', output='screen'),
    ])
    
# optional
ros2 topic pub  /turtlesim1/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: 1.8}}"
ros2 topic pub  /turtlesim2/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: -1.8}}"

 

Recording and playing back data

Background

ros2 bag은 CLI툴로 topic에 publish된 data를 기록한다.

topic에 전달된 data를 축적하고 이를 데이터베이스에 저장한다.

결과를 재생성하기 위해 data를 replay할 수 있고, 저장된 topic은 공유할 수 있다.

 

Tasks

setup

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
mkdir bag_files
cd bag_files

 

Choose a topic

topic에 publish된 record data만 저장할 수 있기 때문에 topic list를 먼저 확인한다.

ros2 topic list

 

turtle의 움직임을 저장하기 위해 cmd_vel을 실시간으로 확인해보자.

ros2 topic echo /turtle1/cmd_vel

 

Record a single topic

bag파일과 metadata.yaml이 저장된 것을 확인할 수 있다.

# ros2 bag record <topic_name>
ros2 bag record /turtle1/cmd_vel

 

Record multiple topics

-o 옵션은 bag file의 이름을 지정할 수 있다.

아래의 경우 'subset' 으로 저장된다.

ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose

 

bag info

# ros2 bag info <bag_file_name>
ros2 bag info subset

 

bag play

bag파일을 실행해보면 turtle의 움직임이 똑같이 재현된다.

ros2 bag play subset

 

 

 

ROS2_Humble Documentation : https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html