4 from ros_monitoring.msg
import NodesInformation, Info_node, TopicInfo
7 import rospy, bson, rosnode, rosgraph, re
8 from tcppinglib
import tcpping
9 from datetime
import datetime
15 rospy.init_node(
'getROSNodes', anonymous=
False)
16 rospy.loginfo(
"Get signal topic started")
19 self.
message_pub = rospy.Publisher(
"nodesStatus", NodesInformation, queue_size=10)
20 except Exception
as e:
21 rospy.logerr(
"Failure to create publisher")
22 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
24 while not rospy.is_shutdown():
27 node_list = rosnode.get_node_names()
28 except Exception
as e:
29 rospy.logerr(
"Error on get ROS nodes")
30 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
33 for node
in node_list:
35 nodes.append(self.
parsecNodeInfo(msg=rosnode.get_node_info_description(node)))
36 except Exception
as e:
37 rospy.logerr(
"Error in the node parsec info:" + str(node))
38 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
43 msg = NodesInformation()
46 except Exception
as e:
47 rospy.logerr(
"Error on create the message")
48 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
61 node_name = re.search(
r"Node \[(.*)\]", msg).group(1)
63 pubs = re.findall(
r"\* (.*) \[(.*)\]", re.search(
r"Publications:(.*)Subscriptions", msg, re.DOTALL).group(1))
65 publications = [self.
topic2msg({
"topic": topic,
"type": msg_type})
for topic, msg_type
in pubs]
67 subs = re.findall(
r"\* (.*) \[(.*)\]", re.search(
r"Subscriptions:(.*)Services", msg, re.DOTALL).group(1))
69 subscriptions = [self.
topic2msg({
"topic": topic,
"type": msg_type})
for topic, msg_type
in subs]
71 services = re.findall(
r"\* (.*)", re.search(
r"Services:(.*)", msg, re.DOTALL).group(1))
72 except Exception
as e:
73 rospy.logerr(
"Error on node parsec: " + str(msg))
74 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
80 _msg.node = str(node_name)
81 _msg.publications = publications
82 _msg.subscriptions = subscriptions
83 _msg.services = services
86 except Exception
as e:
87 rospy.logerr(
"Error on convert node to message: " + str(msg))
88 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
96 _msg.topic = str(msg[
'topic'])
97 _msg.msg_type = str(msg[
'type'])
100 except Exception
as e:
101 rospy.logerr(
"Error on convert topic to message: " + str(msg))
102 rospy.logerr(
"An exception occurred:", type(e).__name__,e.args)
105 if __name__ ==
'__main__':
108 except rospy.ROSInterruptException: