Ask Your Question
0

How to launch a roslaunch in Qt with a terminal (GUI) ?

asked 2015-05-12 11:04:04 -0600

waffaw69 gravatar image

I have created a GUI with Qt and now I want to link the GUI with my ROS program by launching the launch file. To launch my launch file I have found a solution : in my GUI (Qt C++) open a terminal and execute my roslaunch. But it's not as easy as it seems...

I have found 2 possible solutions in Qt:

  • stdlib.h : system("gnome-terminal -e roslaunch my_package file.launch");

I get this error : (gnome-terminal:386): GLib-GIO-CRITICAL **: g_settings_get: the format string may not contain '&' (key 'host' from schema 'org.gnome.system.proxy.ftp'). This call will probably stop working with a future version of glib.

It seems that the spaces in "roslaunch my_package file.launch" don't work.

  • QProcess builder;

    builder.start("gnome-terminal", QStringList() << "roslaunch my_package file.launch");

In these two cases, a terminal opens but nothing append... I have tried with a simple exemple (mkdir file) and the command works, It seems that the roslaunch is not recognized as a command.

Do you have a solution ? Any ideas ?

edit retag flag offensive close merge delete

Comments

Roslaunch provides Python API (Example). One possible solution is to call roslaunch Python API from cpp(call Python from cpp).

Craig gravatar image Craig  ( 2017-04-10 22:31:32 -0600 )edit

2 Answers

Sort by » oldest newest most voted
0

answered 2016-08-03 03:59:57 -0600

basti35 gravatar image

I encountered a similar behaviour, and to me the reason was that I had not loaded the ros environment parameters. That is what is loaded through "source ~/catkin_ws/devel/setup.bash".

You could add it to your command, for QProcess this become:

builder.start("gnome-terminal", QStringList() << "source ~/catkin_ws/devel/setup.bash; roslaunch my_package file.launch");

I hope you had already solved your problem, but the same solution could be helpful for others.

edit flag offensive delete link more

Comments

I tried this and it seems that it only opens the terminal but not run the roslaunch command... is there a way to do it?

Nicky0201 gravatar image Nicky0201  ( 2016-11-22 19:41:43 -0600 )edit

You probably want to add bash -c at the front of the command and put the rest of the command as an argument to bash.

tfoote gravatar image tfoote  ( 2017-04-10 20:05:56 -0600 )edit

Hi! i try both gnome-terminal comand and bash -c and both didnt work. Is it because i need to configure my cmake file or someting like that?

FábioBarbosa gravatar image FábioBarbosa  ( 2017-09-28 17:36:43 -0600 )edit
0

answered 2018-04-26 09:34:43 -0600

dlc gravatar image

try system("gnome-terminal -x sh -c \" roslaunch xxx xxx; bash\"");

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2015-05-12 11:04:04 -0600

Seen: 3,064 times

Last updated: May 12 '15