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