anhy0923
HY's Embedded LAB
anhy0923
전체 방문자
오늘
어제
  • 분류 전체보기 (67)
    • UDS 진단통신 (1)
    • FreeRTOS (2)
    • ROS2 (5)
    • [EH전공] CAN 통신 (1)
    • C언어 튜터링: C로 로봇을 파헤쳐보자! (4)
    • [졸업작품] 외벽 균열 검사 로봇 (8)
      • 2021-2 <종합설계기획> (7)
      • 2022-1 <종합설계1> (1)
      • 2022-2 <종합설계2> (0)
    • TCP 기반 제어시스템 (7)
      • Robot Arm Control (5)
      • RPi CCTV Server (2)
    • Embedded System (6)
      • Linux (3)
      • Linux - Ubuntu (2)
      • RPi (1)
    • Drone FW using STM32CubeIDE (25)
      • 0. Intro (2)
      • 1. Debug (3)
      • 2. Sensor Interface (4)
      • 3. GPS (4)
      • 4. Transmitter_Receiver (3)
      • 5. Drone Body Asb (1)
      • 6. ESC Protocol (4)
      • 7. EEPROM (2)
      • 8. GCS (1)
      • PID Control (1)
    • Elec Academy (3)
    • HAL & LL Driver (1)
    • OpenCV - Lane Detection (1)

블로그 메뉴

  • 홈
  • 방명록

티스토리

hELLO · Designed By 정상우.
anhy0923

HY's Embedded LAB

ROS2

ROS2 Topic 프로그래밍

2022. 7. 17. 02:09

Topic 관련 명령어

ros2 topic list

ros2 topic info <토픽명>

Type:
Publisher count:
Subscription count:

ros2 topic echo <토픽명>

ros2 interface show <type>

 

Topic

msg type이 geometry_msgs/msg/Twist인 메시지를 사용

from geometry_msg.msg import Twist

Publisher

create_publisher(msg_type, topic_name, queue_size)

self.twist_publisher = self.create_publisher(Twist, '/turtle1/cmd_vel', 10)

Callback 함수 내에서 msg publish

        msg = Twist()
        
        msg.linear.x = random.random()
        msg.angular.z = random.uniform(-1.0, 1.0)
        self.get_logger().info(
            f'Linear X velocity : {msg.linear.x} / Angular Z velocity : {msg.angular.z}'
        )

        self.twist_publisher.publish(msg)

Subscriber

create_subscription(msg_type, topic_name, callback_function, queue_size)

        self.pose_subscriber = self.create_subscription(
            Pose, 'turtle1/pose', self.sub_callback, queue_size
        )

callback함수는 topic msg를 받을 때 마다 호출되고 msg를 매개변수로 받음

    def sub_callback(self, msg):
        self.get_logger().info(f"""x : {msg.x:.3f} / y : {msg.y:.3f} / z : {msg.theta:.3f}
        linear_velocity : {msg.linear_velocity} / angular_velocity : {msg.angular_velocity }""")

rclpy.spin(Node)로 상태 갱신을 해야함

저작자표시 비영리 (새창열림)

'ROS2' 카테고리의 다른 글

6일차 & 7일차  (0) 2022.07.19
ROS2 Service 프로그래밍  (0) 2022.07.18
ROS2 Launch file  (0) 2022.07.17
ROS2 Node 프로그래밍  (0) 2022.07.17
    'ROS2' 카테고리의 다른 글
    • 6일차 & 7일차
    • ROS2 Service 프로그래밍
    • ROS2 Launch file
    • ROS2 Node 프로그래밍
    anhy0923
    anhy0923

    티스토리툴바