pub8.py

msg.linear.y = 0.0
msg.linear.x = 2.0
msg.linear.z = 0.0

msg.angular.y = 0.0
msg.angular.x = 0.0
msg.angular.z = 1.8  

rate=rospy.Rate(1)

pub.publish(msg)
rate.sleep()  # once one time
while not rospy.is_shutdown():   
    for  _ in range(7): # cycle 7
        pub.publish(msg)
        rate.sleep()
    msg.angular.z= -msg.angular.z   # direction change

 

launch 파일

<launch>
       <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"/>
       <node pkg="my_pkg1" type="pub8.py" name="pub_node"/>
       <node pkg="my_pkg1" type="sub.py" name="sub_node" output="screen"/>
</launch>

 sub.py

  1 #!/usr/bin/env python 
  2  
  3 import rospy 
  4 from turtlesim.msg import Pose 
  5  
  6 def callback(data): 
  7     s = "Location: %2.f, %.2f" % (data.x, data.y) 
  8     rospy.loginfo(rospy.get_caller_id() + s) 
  9  
 10 rospy.init_node("my_listener", anonymous = True) 
 11 rospy.Subscriber("/turtle1/pose", Pose, callback) 
 12 rospy.spin()

제가 생각했던 원하는 8자 모양(원했던  방향이 있음)은 정방향이기에 while문 들어가기 전에 한번 원형 그리고 while에서 7번 돌때마다 방향바꿨습니다.  사실 7번 사이클을 돌면 되는 줄알았지만, 어떤 경우에는 8자형이긴 하지만, 처음 부분에서 깔끔하지 못한 결과가 나왔습니다. 이에 while 문 전에 subscriber에게 토픽을 한번 보낸 후 while문에 들어가니 깔끔하게 8자형이 그려졌습니다. 

msg 설정값은 이전 수업에서 제시한 예제의 값으로 매겼습니다.

 

 

'프로그래머스 > ROS' 카테고리의 다른 글

ROS 노드통신 프로그래밍(2)  (0) 2022.11.08
ROS 노드 통신 프로그래밍(1)  (0) 2022.11.08
week2-2 코드분석 (과제2)  (0) 2022.11.08
2) ROS 설치  (0) 2022.11.07
프로그래머스 ROS 기초  (0) 2022.11.07

+ Recent posts