<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"></blockquote><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">Advait,</span><div>

<span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><br></span></div><div><span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">Not that I know of.  Here's an example using a similar API to roscpp though:</span><br>

<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"></blockquote><font class="Apple-style-span" face="'courier new', monospace"><br></font><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div><div><font class="Apple-style-span" face="'courier new', monospace">#!/usr/bin/env python                                                                                                                                                                                             </font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">import roslib; roslib.load_manifest('rospy')</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">import rospy, threading, time</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>
</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">class TimerEvent(object):</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">    def __init__(self, last_expected, last_real, current_expected, current_real, last_duration):</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.last_expected    = last_expected</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.last_real        = last_real</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.current_expected = current_expected</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.current_real     = current_real</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.last_duration    = last_duration</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">class Timer(threading.Thread):</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">    def __init__(self, duration, callback, oneshot=False):</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        threading.Thread.__init__(self)</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self._duration = duration</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self._callback = callback</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self._oneshot  = oneshot</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.setDaemon(True)</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        self.start()</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">    def run(self):</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        r = rospy.Rate(1.0 / self._duration.to_sec())</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        current_expected = rospy.Time.now()</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        last_expected, last_real, last_duration = None, None, None</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        while not rospy.is_shutdown():</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">            r.sleep()</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">            current_real = rospy.Time.now()</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">            start = time.time()</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">            self._callback(TimerEvent(last_expected, last_real, current_expected, current_real, last_duration))</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">            if self._oneshot:</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">                break</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">            last_duration = time.time() - start</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">            last_expected, last_real = current_expected, current_real</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">            current_expected += self._duration</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">if __name__ == '__main__':</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">    import time</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">    rospy.init_node('test')</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">    def callback(event):</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print 'last_expected:        ', event.last_expected</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print 'last_real:            ', event.last_real</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print 'current_expected:     ', event.current_expected</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print 'current_real:         ', event.current_real</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print 'current_error:        ', (event.current_real - event.current_expected).to_sec()</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print 'profile.last_duration:', event.last_duration</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        if event.last_real:</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">            print 'last_error:           ', (event.last_real - event.last_expected).to_sec(), 'secs'</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">        print</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div>

<div><div><font class="Apple-style-span" face="'courier new', monospace">    Timer(rospy.Duration(2), callback)</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">    time.sleep(5)</font></div>

</div></blockquote><div><div><br></div></div><div><div class="gmail_quote">On Thu, Jan 20, 2011 at 4:59 PM, Advait Jain <span dir="ltr"><<a href="mailto:advait@cc.gatech.edu">advait@cc.gatech.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Is there some similar to Timers<br>
(<a href="http://www.ros.org/wiki/roscpp/Overview/Timers" target="_blank">http://www.ros.org/wiki/roscpp/Overview/Timers</a>) in rospy?<br>
<br>
Thanks,<br>
Advait<br>
_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
</blockquote></div><br></div></div>