Как запустить и закрыть roslaunch с помощью кнопки в Qt 5 (C )

#c #qt #qt5 #ros

#c #qt #qt5 #ros

Вопрос:

Я хочу создать пользовательский интерфейс с несколькими кнопками для запуска файла ros и закрытия файла запуска. Я застрял с QProcess, как говорили другие. Я следил за несколькими обсуждениями:

ни один из них не увенчался успехом. вот последний код, который я пробовал (в результате ничего не запускается, когда я нажимаю кнопку).

 QString program = "roslaunch jackal_gazebo jackal_world.launch";
QProcess *myProcess = new QProcess(this);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("launch","/opt/ros/melodic/share/jackal_gazebo");
myProcess->setProcessEnvironment(env);
myProcess->start(program);
myProcess->waitForStarted(-1);
  

Комментарии:

1. Что именно не так с предлагаемым решением для отправки SIGINT сигнала вашему процессу?

2. Это просто не сработает. Я попытался вызвать roslaunch в первый раз с помощью приведенного ниже кода, и ничего не произошло.

3. Когда я нажимаю кнопку, пользовательский интерфейс внезапно завершает работу

Ответ №1:

Если вы можете успешно запустить свои узлы с помощью кнопки, то одним из способов закрыть их нажатием кнопки было бы отправить сообщение этим узлам по специальной теме, например: «/ system / shutdown» с типом Bool, и узлы прослушивают эту тему, когда приходит сообщение, узлы сами отключаются

Комментарии:

1. hii спасибо за ваш ответ, я думаю, у меня просто какая-то ошибка в синтаксисе. Но то, что я выяснил, — это использование gnome ternimal для запуска какого-либо roslaunch, я попробую это позже по вашему предложению