[ROS] TimeSlot 실습

happy_quokka·2023년 10월 16일
0

ROS

목록 보기
10/25

sender_timesplot

#!/usr/bin/env python

import rospy
from std_msgs.msg import Int32
import time

name = "sender"
pub_topic = "msg_to_student"

rospy.init_node(name)
pub = rospy.Publisher(pub_topic, Int32, queue_size=0)
rate = rospy.Rate(5)

def do_job(time):
    for i in range(0,time):
        i = i + 1
        pub.publish(i)

def list_append_time():
    start.append(start_time)
    end.append(ent_time)
    sleep.append(sleep_time)

while not rospy.is_shutdown():
    start = []
    end = []
    sleep = []

    num = input("input count number : ")

    rate.sleep()

    total_start = time.time()

    for j in range(0,5):
        start_time = time.time()
        do_job(num)
        end_time = time.time()

        rate.sleep()
        sleep_time = time.time()

        list_append_time()

    total_end = time.time()

    for t in range(0,5):
        sleep[t] = sleep[t] - end[t]
        end[t] = end[t] - start[t]

    for result in range(0,5):
        print("spend time > ", round(end[result], 4), 's')
        print("sleep time > " , round(sleep[result], 4), 's')
    
    print("-------------------------------")
    print("total time > ", round((total_end - total_start),4), 's')
    print("-----------------------\n\n")

receiver_timesplot

#!/usr/bin/env python

import rospy
from std_msgs.msg import Int32

name = "receiver"
sub_topic = "msg_to_student"

def callback(msg):
    print(msg.data)


rospy.init_node(name, anonymous=True)
sub = rospy.Subscriber(sub_topic, Int32, callback, queue_size=1)

rospy.spin()

sr_timeslot.launch

<launch>
    <node pkg="msg_send" type="sender_timeslot.py" name = "sender" output="screen"/>
    <node pkg="msg_send" type="receiver_timeslot.py" name="receiver"/>
</launch>

chmod

$ chmod +x receiver_timeslot.py sender_timeslot.py

cm

실행

$ roslaunch msg_send sr_timeslot.launch

  • 순차적인 delay가 발생하고 시간이 걸리더라도 일을 다 수행한다

0개의 댓글