6 from rosservice
import get_service_headers
7 import roslib.scriptutil
8 from .workspace
import workspace
10 master = roslib.scriptutil.get_master()
13 specific_platform_methods = {
14 'Linux': platform.libc_ver,
15 'Windows': platform.win32_ver,
16 'Darwin': platform.mac_ver,
31 state =
_succeed(master.getSystemState(ID))
37 d[
'architecture'] =
'/'.join(platform.architecture())
38 for key
in [
'machine',
'node',
'platform',
'processor',
'python_version',
'release',
'system',
'version']:
39 d[key] = getattr(platform, key)()
41 if d[
'system']
in specific_platform_methods:
42 d[
'info'] =
'/'.join(specific_platform_methods[d[
'system']]())
44 if d[
'system'] ==
'Linux':
47 for line
in open(
'/etc/os-release').readlines():
48 a, _, b = line.strip().partition(
'=')
50 d[
'linux_codename'] = linux[
'PRETTY_NAME']
54 now = datetime.datetime.now()
55 d[
'timestamp'] = now.timestamp()
63 for k, v
in os.environ.items():
64 for prefix
in [
'ROS_']:
65 if k.startswith(prefix):
71 return rospy.get_param(
'/')
79 for name, info
in zip([
'pubs',
'subs',
'srvs'], state):
80 for topic, nodes
in sorted(info):
84 if name
not in d[node]:
86 if topic
not in d[node][name]:
87 d[node][name].append(topic)
93 pub_topics =
_succeed(master.getPublishedTopics(ID,
'/'))
97 return {a: b
for (a, b)
in pub_topics}
105 for service_name, nodes
in state[2]:
106 _, _, service_uri = master.lookupService(
'/rosservice', service_name)
107 headers = get_service_headers(service_name, service_uri)
108 d[service_name] = headers[
'type']
112 modules = [system, environmental_variables, parameters, nodes, topics, services, workspace]