I have a large system with
many nodes for specific purposes. At any given time, many nodes do not
need to be running. I would like to be able to start a node from my
master rospy code when it determines it needs that node up. I think
actually launching the node is as easy as an os.system call. However, I would
like to interface with the newly started node, and would like it if I did not
have to list every package in the master’s manifest. Basically, I
would like to take a string names for a package / node / etc., then at runtime
load it into my manifest, then be able to set up a publisher and subscriber to
it.
Here are some questions.
1.
Has anyone done
this type of thing before?
2.
Do you have any
input on best practices?
3.
It seems like
part of the answer is some sort of standard interface (or a standard interface
to determine what the actual interface to that node is). Any ideas on
this?
4.
Is there anything
more elegant that a bunch of eval() statements (to turn string names into
message types)?
5.
What would I need
to do to load a package into my manifest at runtime? Do the dependencies
in a manifest simply get turned into paths in the PYTHONPATH?
Thanks,
-Ben
Ben Axelrod
Research Scientist
iRobot Corporation
8 Crosby Drive, Mail Stop 8-1
Bedford, MA 01730
(781) 430-3315 (Tel)
(781) 960-2628 (Fax)