ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

I've done this exact same thing in the past. Here's how I did it:

  1. Created all versions of the application using only ROS. I boiled each possible configuration down to a single launch file w/particular arguments. If you set nodes to be required in the launch file, then killing a single required node is sufficient for shutting down all nodes started by the launch file. At this point I could start my ROS application and use something like rospy.signal_shutdown to destroy a required node based on some condition.

  2. Then I wrote a simple Python GUI that allowed me to select options from dropdowns, checkboxes, etc.

  3. A button in the gui then had a callback that would start a single subprocess that was a call to roslaunch with the appropriate launch file and args (as set by the options in the gui).

  4. Then I created a .desktop file that would automatically start the GUI.

One thing to watch out for is that you need to make sure that your GUI has access to the correct ROS environment variables. For example, you could source a setup.bash file in your .desktop file.