Hello there!

I don't know if I'm in time to help, but I'll still try!

The only way of doing it that comes to mind right now is using the system call from C (I guess there must be a similar function in python too, sorry I'm not much of a python guy as of now :p)

So I think you can do what you say with something like:

if(condition)
   system("rosrun package node");

Then the node itself should do the work it has to do, then finish. From your message I don't know if what you want is that the program that ran the system call should also be the one that kills that new node.

As for a particular ROS function that runs a node itself, I've been looking for one too but I can't seem to find it. If there's one I would very much like to hear from it :D

Hope to have helped you. Cheers!