def __init__(self, goal_id=None, status=None, goal=None): """ @brief create status tracker. Either pass goal_id and status OR goal """ self.goal = None self.handle_tracker = None self.status = actionlib_msgs.msg.GoalStatus() self.handle_destruction_time = rospy.Time() self.id_generator = goal_id_generator.GoalIDGenerator() if goal_id: #set the goal id and status appropriately self.status.goal_id = goal_id self.status.status = status else: self.goal = goal self.status.goal_id = goal.goal_id #initialize the status of the goal to pending self.status.status = actionlib_msgs.msg.GoalStatus.PENDING #if the goal id is zero, then we need to make up an id for the goal if self.status.goal_id.id == "": self.status.goal_id = self.id_generator.generate_ID() #if the timestamp of the goal is zero, then we'll set it to now() if self.status.goal_id.stamp == rospy.Time(): self.status.goal_id.stamp = rospy.Time.now()
def test_generator(self): gen1 = goal_id_generator.GoalIDGenerator(); id1 = gen1.generate_ID() id2 = gen1.generate_ID() id3 = gen1.generate_ID() nn1,s1,ts1 = id1.id.split('-'); nn2,s2,ts2 = id2.id.split('-'); nn3,s3,ts3 = id3.id.split('-'); self.assertEquals(nn1, "/test_goal_id_generator","node names are different") self.assertEquals(nn1, nn2, "node names are different") self.assertEquals(nn1, nn3, "node names are different") self.assertEquals(s1, "1", "Sequence numbers mismatch") self.assertEquals(s2, "2", "Sequence numbers mismatch") self.assertEquals(s3, "3", "Sequence numbers mismatch")
def gen_ids(tID=1,num_ids=1000): gen = goal_id_generator.GoalIDGenerator(); for i in range(0,num_ids): id=gen.generate_ID(); ids_lists[tID].append(id);