[ROS2] EP6. 내가 정의한 메세지 사용하기

김희상·2024년 7월 15일

ROS2

목록 보기
6/17
post-thumbnail

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

1. 내가 정의한 메세지 사용하기

1. 코드 수정

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

class CmdAndPose(Node):

    def __init__(self):
        super().__init__('turtle_cmd_pose')
        self.sub_pose = self.create_subscription(
                Pose, 
                '/turtle1/pose', 
                self.callback_pose, 
                10
            )
        
        self.cmd_pose = CmdAndPoseVel()

    def callback_pose(self, msg):
        self.cmd_pose.pose_x = msg.x
        self.cmd_pose.pose_y = msg.y
        self.cmd_pose.linear_vel = msg.linear_velocity
        self.cmd_pose.angular_vel = msg.angular_velocity
        print(self.cmd_pose)

def main(args=None):
    rp.init(args=args)
    
    turtle_cmd_pose_node = CmdAndPose()
    rp.spin(turtle_cmd_pose_node)

    turtle_cmd_pose_node.destroy_node()
    rp.shutdown()


if __name__ == '__main__':
    main()
  • turtle_cmd_and_pose.py 수정

2. 빌드, 환경 부르기

  • -packages-select로 하나의 패키지만 지정해서 빌드

3. 실행

  • 내가 만든 Definition에 구조에 맞게 프린트

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

0개의 댓글