ROS가 제공하는 기본 turtlesim 패키지로 노드를 생성해보자
$ roscore
마스터 core 실행 터미널 (노드 정보 관리)
$ rosrun turtlesim turtlesim_node
turtlesim_node 노드 실행 터미널
귀여운 거북이가 있는 창이 나옴
토픽을 구독하여 이에 따라 거북이가 이동시킴
$ rosrun turtlesim turtle_teleop_key
teleop_turtle 노드 실행 터미널
키보드 입력에 따라 토픽을 발행
동작 확인을 위한 터미널
$ rosnode list
: 어떤 노드가 동작 중인지 확인jsg@jsg-ubuntu:~$ rosnode list /rosout /teleop_turtle /turtlesim
$ rostopic list
: 어떤 토픽이 오고 가는지 확인jsg@jsg-ubuntu:~$ rostopic list /rosout /rosout_agg /turtle1/cmd_vel /turtle1/color_sensor /turtle1/pose
$ rostopic list -v
: 토픽에 대한 더 자세한 정보 출력jsg@jsg-ubuntu:~$ rostopic list -v Published topics: * /turtle1/color_sensor [turtlesim/Color] 1 publisher * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher * /rosout [rosgraph_msgs/Log] 2 publishers * /rosout_agg [rosgraph_msgs/Log] 1 publisher * /turtle1/pose [turtlesim/Pose] 1 publisher Subscribed topics: * /turtle1/cmd_vel [geometry_msgs/Twist] 1 subscriber * /rosout [rosgraph_msgs/Log] 1 subscriber
$ rostopic echo topic_name
: 특정 토픽이 발행될 때 화면에 출력jsg@jsg-ubuntu:~$ rostopic echo /turtle1/cmd_vel linear: x: 0.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 2.0 --- linear: x: 2.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0 ---
$ rostopic type topic_name
: 특정 토픽이 담고 있는 메세지의 타입jsg@jsg-ubuntu:~$ rostopic type /turtle1/cmd_vel geometry_msgs/Twist
$ rosmsg show msg_type
: 메시지의 구성 요소 출력jsg@jsg-ubuntu:~$ rosmsg show geometry_msgs/Twist geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z
$ rqt_graph
: 노드와 토픽 관계를 시각화토픽을 터미널에서 직접 발행
$ rostopic pub [-option] topic_name msg_type -- msg
# turtle1/cmd_vel 토픽의 geometry_msgs/Twist 메시지를 # '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'로 1초에 한번씩 발행 $ rostopic pub -r 1 /turtle1/cmd_vel geometry_msgs/Twist -- \ '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'