Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 import rospy
00033
00034 import sys
00035
00036 from actionlib_msgs.msg import GoalID
00037 import threading
00038
00039 global s_goalcount_lock
00040 global s_goalcount
00041 s_goalcount_lock = threading.Lock();
00042 s_goalcount = 0
00043
00044
00045 class GoalIDGenerator:
00046
00047
00048 def __init__(self,name=None):
00049 """
00050 * Create a generator that prepends the fully qualified node name to the Goal ID
00051 * \param name Unique name to prepend to the goal id. This will
00052 * generally be a fully qualified node name.
00053 """
00054 if name is not None:
00055 self.set_name(name)
00056 else:
00057 self.set_name(rospy.get_name());
00058
00059
00060 def set_name(self,name):
00061 """
00062 * \param name Set the name to prepend to the goal id. This will
00063 * generally be a fully qualified node name.
00064 """
00065 self.name=name;
00066
00067
00068
00069 def generate_ID(self):
00070 """
00071 * \brief Generates a unique ID
00072 * \return A unique GoalID for this action
00073 """
00074 id = GoalID();
00075 cur_time = rospy.Time.now();
00076 ss = self.name + "-";
00077 global s_goalcount_lock
00078 global s_goalcount
00079 with s_goalcount_lock:
00080 s_goalcount += 1
00081 ss += str(s_goalcount) + "-";
00082 ss += str(cur_time.secs) + "." + str(cur_time.nsecs);
00083
00084 id.id = ss;
00085 id.stamp = cur_time;
00086 return id;