ROS

ROS_Study: Understanding ROS Topics

우기빌리 2023. 11. 22. 16:55

ROS를 시작하기에 앞서

roscore를 실행

* roscore는 동시에 1번만 실행 가능

 

Node: turtle_teleop_key

turtlesim_node 실행시켜준 뒤 실행해야됌

rosrun turtlesim turtle_teleop_key

 

화살표키로 실행된 turtlesim_node의 turtle을 움직일 수 있다.

 

-> node1: turtlemsim_node 와 node2: turtle_teleop_key가 ROS Topic을 가운데 두고 서로 통신하고 있는 것(아래 그림 참고)

turtle_teleop_key는 Topic에 msg(key strokes)를 publish

turtlesim_node는 같은 Topic에 msg(key strokes)를 subscribe

 

ROS Topics

rqt_graph

이를 그래프로 더 간단하게 확인 가능

rosrun rqt_graph rqt_graph

>>

topic name: turtle1/command_velocity

 

툴 rostopic은  ROS topics의 여러 정보들을 제공해준다.

가능한 command가 뭐가 있는지 확인하고 싶으면

rostopic -h

 

rostopic echo

topic에서 발행된 data 확인(그니까,,, 한 노드가 topic에 publish 한 msg를 본다,, 맞나?)

=> ㅇㅇ 맞아, 밑에 뭐 같은 내용(msg detail) 확인하려고 topic type 알아보고, msg show 하는데 그냥 이 방법이 최고임

rostopic echo [topic]

rostopic echo /turtle1/cmd_vel

>>

 

rostopic echo

 

 

* tip 현재 생성된 topic 확인하고 싶으면

rostopic echo 를 친 상태에서 tab을 연속으로 2번 치면 list가 뜬다

정석은 rostopic list를 이용해 확인

 

ROS Messages:

Topic을 가운데 두고 두 Nodes가 하는 통신은 ROS messages를 전송하며 진행된다. 두 Node는 반드시 같은 type의 message를 전송하고 수령해야된다. 

=> Topic의 type은 여기로 발행된 message type에 의해 결정된다.

 

Type 확인 방법:

rostopic type [topic]

rostopic type /turtle1/cmd_vel

>> geometry_msgs/Twist

 

이젠 rosmsg로 message의 세부사항을 확인할 수 있다.

 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

 

rostopic pub

현재 생성되어 있는 topic에 data를 발행한다.

rostopic pub [topic] [msg_type] [args]

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

 

같은 데이터를 지속적으로 발생시키고 싶을 경우:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'