ROS practice #2 turtlesim in package

정소원·2023년 5월 3일
0

ROS

목록 보기
4/5

Package create & run

// pakage create
$ cd ~/xycar_ws/src
$ catkin_create_pkg my_pkg1 std_msgs rospy
$ cm
$ cd ~/xycar_ws/src/my_pkg1/src

// src code create
$ vi pub.py // 코드 편집
$ chmod +x pub.py // 실행 권한 부여

// rosrun
$ roscore // termial1
$ rosrun turtlesim turtlesim_node // termial2
$ rosrun my_pkg1 pub.py // termial3

pub.py

목표: 터틀심을 8자로 주행시키는 토픽 발행
실행 결과:

소스코드:

#!/usr/bin/env python3

import rospy
from geometry_msgs.msg import Twist

rospy.init_node('my_node', anonymous=True)
pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10) # topic, msg type, size?

msg = Twist()
msg.linear.x = 2.0
msg.linear.y = 0.0
msg.linear.z = 0.0
msg.angular.x = 0.0
msg.angular.y = 0.0
msg.angular.z = 1.8


msg2 = Twist()
msg2.linear.x = 2.0
msg2.linear.y = 0.0
msg2.linear.z = 0.0
msg2.angular.x = 0.0
msg2.angular.y = 0.0
msg2.angular.z = -1.8

rate = rospy.Rate(1)

iter_num = 0
msg_case = True
while not rospy.is_shutdown():

    if iter_num % 4 == 0:
        msg_case = False if msg_case is True else True
        iter_num = 0

    if msg_case:
        pub.publish(msg)
        # rospy.loginfo(f'True, iter Num : {iter_num}')
    else:
        pub.publish(msg2)
        # rospy.loginfo('False')

    rate.sleep()

    iter_num += 1
profile
성장지향형 자율주행 소프트웨어 개발자입니다. K-Digital-Training: 자율주행 데브코스 Planning & Control 1기로 활동하고 있습니다. 본 블로그를 통해 배움기록을 실천하고 있습니다. #자율주행 #기계공학

0개의 댓글