<pre class="python" name="code"> def _launch_core_nodes(self):
"""
launch any core services that are not already running. master must
be already running
@raise RLException: if core launches fail
"""
config = self.config
master = config.master.get()
tolaunch = []
for node in config.nodes_core:
node_name = rosgraph.names.ns_join(node.namespace, node.name)
code, msg, _ = master.lookupNode(_ID, node_name)
if code == -1:
tolaunch.append(node)
elif code == 1:
print("core service [%s] found" % node_name)
else:
print("WARN: master is not behaving well (unexpected return value when looking up node)", file=sys.stderr)
self.logger.error("ERROR: master return [%s][%s] on lookupNode call"%(code,msg))
for node in tolaunch:
node_name = rosgraph.names.ns_join(node.namespace, node.name)
name, success = self.launch_node(node, core=True)
if success:
print("started core service [%s]" % node_name)
else:
raise RLException("failed to start core service [%s]"%node_name)
../../roslaunch/nodeprocess.py(290)start()
self.popen = subprocess.Popen(self.args, cwd=cwd, stdout=logfileout, stderr=logfileerr, env=full_env, close_fds=True, preexec_fn=os.setsid)
self.args:
[u'/../../rosout/rosout', u'__name:=rosout', u'__log:=/../../.ros/log/845a5a02-69dc-11e6-8965-000c290414d4/rosout-1.log']