<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>