[ROS2] EP5. 토픽 구독과 메세지 출력하기

김희상·2024년 7월 15일

ROS2

목록 보기
5/17
post-thumbnail

  • OS : Ubuntu 22.04
  • ROS 2 Humble
  • Gazebo 11

1. 토픽 구독 - 토픽 발행

1. 새로운 node 생성

  • my_first_package에서 생성
  • 파일 이름은 turtle_cmd_and_pose.py

2. setup.py 수정

  • entry_points 추가

3. 코드 생성

import rclpy as rp
from rclpy.node import Node
from turtlesim.msg import Pose

class CmdAndPose(Node):
    def __init__(self):
        super().__init__('turtle_cmd_pose')
        self.subscription = self.create_subscription(
            Pose,
            '/turtle1/pose',
            self.callback_pose,
            10
        )

    def callback_pose(self, msg):
        print(msg)


def main():
    rp.init()

    turtlesim_subscriber = CmdAndPose()
    rp.spin(turtlesim_subscriber)

    turtlesim_subscriber.destroy_node()
    rp.shutdown()

if __name__ == '__main__':
    main()
  • init에 입력 인자 이름을 잡으면 node의 이름이 된다
  • 그 노드의 기능으로 create_subscription
  • Pose라는 데이터 데피니션 사용하는 turtle1의 pose 구독
  • 토픽이 발행되서 들어올 때마다 callback_pose
  • callback_pose는 print만
  • 위에서 class 만든 것 불러와서 노드 선언 (turtle_cmd_pose_node)
  • 계속 실행

4. 빌드

5. 환경 부르기

6. 노드 실행


profile
3D 모델러의 개발 도전기

0개의 댓글