fake_driver.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 #
3 # Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 
18 import rospy
19 from std_srvs.srv import Trigger, TriggerResponse
20 from diagnostic_msgs.msg import DiagnosticArray, DiagnosticStatus, KeyValue
21 
22 class FakeDriver():
23 
24  def __init__(self):
25  self.init_srv = rospy.Service('driver/init', Trigger, self.init_cb)
26  self.recover_srv = rospy.Service('driver/recover', Trigger, self.recover_cb)
27  self.halt_srv = rospy.Service('driver/halt', Trigger, self.halt_cb)
28  self.shutdown_srv = rospy.Service('driver/shutdown', Trigger, self.shutdown_cb)
29 
30  self.initialized = False
31  self.active = False
32 
33  self._fake_diag_pub = rospy.Publisher('/diagnostics', DiagnosticArray, queue_size=1)
34  rospy.Timer(rospy.Duration(1.0), self.publish_diagnostics)
35 
36  def publish_diagnostics(self, event):
37  msg = DiagnosticArray()
38  msg.header.stamp = rospy.get_rostime()
39 
40  status = DiagnosticStatus()
41  status.name = rospy.get_name()
42  if self.initialized:
43  if self.active:
44  status.level = DiagnosticStatus.OK
45  status.message = "active"
46  else:
47  status.level = DiagnosticStatus.WARN
48  status.message = "not active"
49  else:
50  status.level = DiagnosticStatus.WARN
51  status.message = "not initialized"
52  status.hardware_id = rospy.get_name()
53  status.values.append(KeyValue(key="initialized", value=str(self.initialized)))
54  status.values.append(KeyValue(key="active", value=str(self.active)))
55  msg.status.append(status)
56 
57  self._fake_diag_pub.publish(msg)
58 
59  def init_cb(self, req):
60  rospy.loginfo("init_cb")
61  self.initialized = True
62  self.active = True
63  return TriggerResponse(success=True)
64 
65  def recover_cb(self, req):
66  rospy.loginfo("recover_cb")
67  self.active = True
68  return TriggerResponse(success=True)
69 
70  def halt_cb(self, req):
71  rospy.loginfo("halt_cb")
72  self.active = False
73  return TriggerResponse(success=True)
74 
75  def shutdown_cb(self, req):
76  rospy.loginfo("shutdown_cb")
77  self.initialized = False
78  self.active = False
79  return TriggerResponse(success=True)
80 
81 
82 if __name__ == "__main__":
83  rospy.init_node('fake_driver')
84  FakeDriver()
85  rospy.loginfo("fake_driver running")
86  rospy.spin()
87 
fake_driver.FakeDriver.__init__
def __init__(self)
Definition: fake_driver.py:24
fake_driver.FakeDriver.halt_cb
def halt_cb(self, req)
Definition: fake_driver.py:70
fake_driver.FakeDriver.active
active
Definition: fake_driver.py:31
fake_driver.FakeDriver.recover_srv
recover_srv
Definition: fake_driver.py:26
fake_driver.FakeDriver.init_cb
def init_cb(self, req)
Definition: fake_driver.py:59
fake_driver.FakeDriver.publish_diagnostics
def publish_diagnostics(self, event)
Definition: fake_driver.py:36
fake_driver.FakeDriver._fake_diag_pub
_fake_diag_pub
Definition: fake_driver.py:33
fake_driver.FakeDriver.shutdown_srv
shutdown_srv
Definition: fake_driver.py:28
fake_driver.FakeDriver.init_srv
init_srv
Definition: fake_driver.py:25
fake_driver.FakeDriver.initialized
initialized
Definition: fake_driver.py:30
fake_driver.FakeDriver.shutdown_cb
def shutdown_cb(self, req)
Definition: fake_driver.py:75
fake_driver.FakeDriver
Definition: fake_driver.py:22
fake_driver.FakeDriver.halt_srv
halt_srv
Definition: fake_driver.py:27
fake_driver.FakeDriver.recover_cb
def recover_cb(self, req)
Definition: fake_driver.py:65


cob_helper_tools
Author(s): Felix Messmer
autogenerated on Fri Aug 2 2024 09:45:50