ROS 2 토픽 Topic

권호떡의 데싸정복·2024년 10월 2일

Topic

Noda A 처럼 하나 이상의 토픽을 발행할 수 있으며 'Publisher' 기능과 동시에 토픽을 구독하는 'Subscriber' 역할도 동시에 수행할 수 있음.

ROS 프로그래밍시에 70% 이상이 토픽으로 사용될 정도로 통신 방식 중에 가장 기본이 되며 가장 널리쓰이는 방법

토픽 목록 확인

ros2 node info

$ ros2 run turtlesim turtlesim_node

$ ros2 node info /turtlesim

turtlesim 노드가 어떤 통신을 수행하는지 보여줌.

ros2 topic list

$ ros2 topic list -t

$ rqt_graph

turtlesim 노드가 어떤 토픽들을 사용하여 통신하는지 보여줌.

  • 토픽 목록
    - /parameter_events : 파라미터 변경 이벤트를 처리하는 토픽
    • /rosout : ros 시스템 로그 메시지를 위한 토픽
    • /turtle1/cmd_vel : 거북이의 속도 명령을 전달하는 토픽
    • /turtle1/color_sensor : 거북이의 색상 센서 데이터를 전달하는 토픽
    • /turtle1/pose : 거북이의 현재 위치와 방향 정보를 전달하는 토픽

rqt

$  ros2 run turtlesim turtle_teleop_key



hide부분을 잘 조정하면 더 많은 정보를 볼 수 있다.

ros2 topic info 토픽 정보 확인

$ ros2 topic info /turtle1/cmd_vel


토픽에 대한 상세 정보를 보여주는 코드이다.

Type: geometry_msgs/msg/Twist : 토픽이 사용하는 메시지 타입이다. Twist 메시지는 로봇의 선속도와 각속도를 나타낸다.
Publisher count: 1 토픽에 데이터를 발행(publish)하는 노드가 1개 있다는 의미
Subscriber count: 1 토픽의 데이터를 구독(subscribe)하는 노드가 1개 있다는 의미

ros2 topic echo 토픽 내용 확인

$ ros2 topic echo /turtle1/cmd_vel


해당 명령어를 실행 후 거북이를 조종해보면 속도, 각도를 print해준다.

ros2 topic bw 토픽 대역폭 확인

$  ros2 topic bw /turtle1/cmd_vel

ros2 topic hz 토픽 주기 확인

$ ros2 topic hz /turtle1/cmd_vel

주기(주파수)를 모니터링한다.

average rate: 토픽의 평균 메시지 발행 빈도 (Hz)
min: 가장 짧은 메시지 간 간격 (초)
max: 가장 긴 메시지 간 간격 (초)
std dev: 메시지 간 간격의 표준 편차 (초)
window: 평균을 계산하는 데 사용된 최근 메시지 수

ros2 topic pub 토픽 발행

$ ros2 topic pub --once /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 --rate 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: 1.8}}"


해당 명령어를 실행하면 무한으로 원을 그린다.

ros2 bag record / bag 기록

$ ros2 bag record /turtle1/cmd_vel

1.이 명령어는 /turtle1/cmd_vel 토픽의 데이터를 기록
2.스페이스바를 눌러 기록을 정지하거나 재개할 수 있음
3."Subscribed to topic '/turtle1/cmd_vel'"지정된 토픽을 성공적으로 구독했음을 확인

  • 주요 용도
    - 실험이나 테스트 중 시스템의 동작을 기록
    • 문제가 발생한 상황을 재현하여 분석 가능
    • 기록된 데이터를 재생하여 알고리즘 테스트
    • 실제 센서 데이터를 시뮬레이션 환경에서 재현 가능

보면 파일이 생겼음

$ ros2 bag info <your directory>

를 실행해주면 bag의 정보를 볼 수있음

$ ros2 bag play <your directory>

를 하면 녹화한 turtle을 볼 수 있음

profile
데이터사이언스정복

0개의 댓글