src
actionlib
goal_id_generator.py
Go to the documentation of this file.
1
#! /usr/bin/env python
2
# Copyright (c) 2009, Willow Garage, Inc.
3
# All rights reserved.
4
#
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions are met:
7
#
8
# * Redistributions of source code must retain the above copyright
9
# notice, this list of conditions and the following disclaimer.
10
# * Redistributions in binary form must reproduce the above copyright
11
# notice, this list of conditions and the following disclaimer in the
12
# documentation and/or other materials provided with the distribution.
13
# * Neither the name of the Willow Garage, Inc. nor the names of its
14
# contributors may be used to endorse or promote products derived from
15
# this software without specific prior written permission.
16
#
17
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
29
# Author: Alexander Sorokin.
30
# Based on C++ goal_id_generator.h/cpp
31
import
rospy
32
33
from
actionlib_msgs.msg
import
GoalID
34
import
threading
35
36
global
s_goalcount_lock
37
global
s_goalcount
38
s_goalcount_lock = threading.Lock()
39
s_goalcount = 0
40
41
42
class
GoalIDGenerator
:
43
44
def
__init__
(self, name=None):
45
"""
46
* Create a generator that prepends the fully qualified node name to the Goal ID
47
* \param name Unique name to prepend to the goal id. This will
48
* generally be a fully qualified node name.
49
"""
50
if
name
is
not
None
:
51
self.
set_name
(name)
52
else
:
53
self.
set_name
(rospy.get_name())
54
55
def
set_name
(self, name):
56
"""
57
* \param name Set the name to prepend to the goal id. This will
58
* generally be a fully qualified node name.
59
"""
60
self.
name
= name
61
62
def
generate_ID
(self):
63
"""
64
* \brief Generates a unique ID
65
* \return A unique GoalID for this action
66
"""
67
id = GoalID()
68
cur_time = rospy.Time.now()
69
ss = self.
name
+
"-"
70
global
s_goalcount_lock
71
global
s_goalcount
72
with s_goalcount_lock:
73
s_goalcount += 1
74
ss += str(s_goalcount) +
"-"
75
ss += str(cur_time.secs) +
"."
+ str(cur_time.nsecs)
76
77
id.id = ss
78
id.stamp = cur_time
79
return
id
actionlib.goal_id_generator.GoalIDGenerator.name
name
Definition:
goal_id_generator.py:60
actionlib.goal_id_generator.GoalIDGenerator
Definition:
goal_id_generator.py:42
actionlib.goal_id_generator.GoalIDGenerator.__init__
def __init__(self, name=None)
Definition:
goal_id_generator.py:44
actionlib.goal_id_generator.GoalIDGenerator.set_name
def set_name(self, name)
Definition:
goal_id_generator.py:55
actionlib.goal_id_generator.GoalIDGenerator.generate_ID
def generate_ID(self)
Definition:
goal_id_generator.py:62
actionlib
Author(s): Eitan Marder-Eppstein, Vijay Pradeep, Mikael Arguedas
autogenerated on Mon Feb 28 2022 21:34:38