phm_robot_task_completion_node.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 """
5 
6  PHM Robot Task Completion Node
7 
8 """
9 
10 
11 import rospy
12 from std_msgs.msg import String
13 from phm_msgs.msg import Potc
14 
15 
17  """
18  Robot Task Completion Node
19 
20  Subscriber:
21  Topic name = /gui_actual_potc
22  Message type = String
23 
24  Topic name = /gui_predict_potc
25  Message type = String
26 
27  Publishler:
28  Topic nane = /phm_potc
29  Message type = Potc
30 
31  Rate = 1
32  """
33 
34  def __init__(self):
35  self.phm_gui_control = False
38 
39 
40  def main_func(self):
41  """
42  Robot Task Completion Node Main Function
43  """
44  rospy.Subscriber('/gui_actual_potc', String, self.phm_gui_actual_potc_callback_func)
45  rospy.Subscriber('/gui_predict_potc', String, self.phm_gui_predict_potc_callback_func)
46  publisher_phm_potc = rospy.Publisher('/phm_potc', Potc, queue_size=10)
47 
48  rate = rospy.Rate(1)
49 
50  phm_potc = Potc()
51 
52  while not rospy.is_shutdown():
53  if self.phm_gui_control:
54  ros_time = rospy.get_rostime()
55  phm_potc = self.set_potc_func(self.phm_gui_actual_potc, self.phm_gui_predict_potc, ros_time)
56  publisher_phm_potc.publish(phm_potc)
57 
58  rate.sleep()
59 
61  """
62  Callback function of /gui_actual_potc
63  """
64  self.phm_gui_actual_potc = dict(eval(phm_msg.data))
65  self.phm_gui_control = True
66 
67 
69  """
70  Callback function of /gui_predict_potc
71  """
72  self.phm_gui_predict_potc = dict(eval(phm_msg.data))
73  self.phm_gui_control = True
74 
75  @classmethod
76  def set_potc_func(cls, phm_gui_actual_potc, phm_gui_predict_potc, ros_time):
77  """
78  Message function of the /phm_potc to be published
79  """
80  phm_potc = Potc()
81 
82  phm_potc.stamp = ros_time
83 
84  # Actual POTC
85  if phm_gui_actual_potc != "":
86  phm_potc.actual_potc.potc_nominal_value = float(phm_gui_actual_potc["Nominal"]["POTC"])
87  phm_potc.actual_potc.potc_sensor_based_value = float(phm_gui_actual_potc["Sensor Based"]["POTC"])
88  phm_potc.actual_potc.potc_time = float(phm_gui_actual_potc["Nominal"]["Time"])
89  phm_potc.actual_potc.potc_distance = float(phm_gui_actual_potc["Nominal"]["Distance"])
90 
91  else:
92  phm_potc.actual_potc.potc_nominal_value = float(1.0)
93  phm_potc.actual_potc.potc_sensor_based_value = float(1.0)
94  phm_potc.actual_potc.potc_time = float(0.0)
95  phm_potc.actual_potc.potc_distance = float(0.0)
96 
97  # Predict POTC
98  if phm_gui_predict_potc != "":
99  phm_potc.predict_potc.potc_nominal_value = float(phm_gui_predict_potc["Nominal"]["POTC"])
100  phm_potc.predict_potc.potc_sensor_based_value = float(phm_gui_predict_potc["Sensor Based"]["POTC"])
101  phm_potc.predict_potc.potc_time = float(phm_gui_predict_potc["Nominal"]["Time"])
102  phm_potc.predict_potc.potc_distance = float(phm_gui_predict_potc["Nominal"]["Distance"])
103 
104  else:
105  phm_potc.predict_potc.potc_nominal_value = float(1.0)
106  phm_potc.predict_potc.potc_sensor_based_value = float(1.0)
107  phm_potc.predict_potc.potc_time = float(0.0)
108  phm_potc.predict_potc.potc_distance = float(0.0)
109 
110  return phm_potc
111 
112 
113 if __name__ == '__main__':
114  rospy.init_node('phm_robot_task_completion_node')
115  POTC_CLASS = RobotTaskCompletionNode()
116  POTC_CLASS.main_func()
def set_potc_func(cls, phm_gui_actual_potc, phm_gui_predict_potc, ros_time)


phm_robot_task_completion
Author(s):
autogenerated on Thu Aug 13 2020 16:41:49