How can I run a node from Code?
Hi all,
I'm trying to start a node from other by code using Python but I don't know how. I use Ros kinetic.
Thanks!!
ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
Hi all,
I'm trying to start a node from other by code using Python but I don't know how. I use Ros kinetic.
Thanks!!
This is possible, but I'm going to ask why you want to do this? It's quite rare for this to be necessary. Can you use a launch file to achieve the same thing, if so then I'd highly recommend you to use that option.
Any operating system command can be executed from python using the os.system("your system command") function. So you can use this to start a node the same way that you do manually from the command line:
os.system("rosrun <package_name> <node_name> <arguments. . .>")
Importantly though this command will block until the node has completed and shut down which is probably not what you want to happen. I'm guessing you want to start a node up, and then continue with the rest of your python code while this new node is also running.
To start a node in the background you'll need to use os.spawnv() to start the node and store it's process id so that your python code can kill this sub-process before it closes:
node_pid = os.spawnv(P_NOWAIT, "rosrun", ["<package_name>", "node_name>", "<arguments. . .>"])
# Some python code to execute while the new node is running
so.kill(node_pid, signal.SIGINT)
There is a danger that if your python node crashes then the node you started in the background will keep running and will still need to be killed manually. So I'd just emphasise if you can use launch files instead then use them and only manage the processes like this yourself if you can't possibly avoid it.
Hope this helps.
Any idea how to do this in c++? Icouldnt find a solution to the non_blocking version. Help would be appreciated.
The roslaunch API is in python and you can wrap it yourself to call from code natively. https://docs.ros.org/api/roslaunch/ht...
Asked: 2018-11-03 19:01:29 -0500
Seen: 1,635 times
Last updated: Nov 05 '18
publish list of lists with Python
Import .obj .mtl and .png into Gazebo [closed]
Apt Install Ros Kinetic Problem after recent update
Ackermann Steering and Arduino Servo Control
difference between execute_cb and goalcb?
gps waypoints are not shown in mapviz
Moveit planning methods failing issue
Timestamps of static transforms