1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 import rosgraph.masterapi
36
37 import rosh.plugin
38 from rosh.impl.launch import launch_symbols
39 from rosh.impl.namespace import Namespace
40 from rosh.impl.node import Nodes
41 from rosh.impl.param import Parameters
42 from rosh.impl.service import Services
43 from rosh.impl.topic import Topics, LATEST, subscribe
44 from rosh.impl.top_tools import topic_tools_symbols
45
46 from rosh.impl.msg import Msgs
47 from rosh.impl.msg import Srvs
48
49 import rospy
50
51
53 master = rosgraph.masterapi.Master('rosh')
54 plugin_context.ctx.master = master
55 return master.is_online()
56
59
61 return not rospy.is_shutdown()
62
64 """
65 Equivalent to rospy.wait_for_service(), but also handles unboxing of ROSH objects..
66
67 @param service: Service
68 @type service: Namespace or str
69 @param timeout: (optional) wait_for_service timeout
70 @type timeout: float
71 """
72 if isinstance(service, Namespace):
73 rospy.wait_for_service(service._name, timeout=timeout)
74 else:
75 rospy.wait_for_service(service, timeout=timeout)
76
77
78 _loaded_symbols = None
80 global _loaded_symbols
81 if rosh.plugin.reentrant_load(_loaded_symbols, globals_):
82 return
83
84 ctx = plugin_context.ctx
85 rosh_lock = plugin_context.rosh_lock
86
87 if init_master(plugin_context):
88 rospy.init_node('rosh', anonymous=True, disable_signals=True)
89
90 _loaded_symbols = {
91
92 'now': rospy.get_rostime,
93 'Header': rospy.Header,
94 'Time': rospy.Time,
95 'Duration': rospy.Duration,
96 'Rate': rospy.Rate,
97 'sleep': rospy.sleep,
98 'logfatal': rospy.logfatal,
99 'logerr': rospy.logerr,
100 'loginfo': rospy.loginfo,
101 'logdebug': rospy.logdebug,
102
103
104 'rospy': rospy,
105
106
107 'nodes': Nodes(ctx, rosh_lock),
108 'topics': Topics(ctx, rosh_lock),
109 'services': Services(ctx, rosh_lock),
110 'parameters': Parameters(ctx, rosh_lock),
111 'srv': Srvs(ctx, rosh_lock),
112 'msg': Msgs(ctx, rosh_lock),
113 'serve_forever': serve_forever,
114
115
116 'LATEST': LATEST,
117
118
119 'wait_for_service': wait_for_service,
120 'subscribe': subscribe,
121 }
122
123
124
125
126
127 _loaded_symbols.update(topic_tools_symbols(ctx))
128
129 _loaded_symbols.update(launch_symbols(ctx))
130
131
132 ctx.msg = _loaded_symbols['msg']
133 ctx.srv = _loaded_symbols['srv']
134
135 ctx.nodes = _loaded_symbols['nodes']
136 ctx.topics = _loaded_symbols['topics']
137 ctx.services = _loaded_symbols['services']
138 ctx.parameters = _loaded_symbols['parameters']
139 rosh.plugin.globals_load(plugin_context, globals_, _loaded_symbols)
140