#c #qt #qt5 #ros
#c #qt #qt5 #ros
Вопрос:
Я хочу создать пользовательский интерфейс с несколькими кнопками для запуска файла ros и закрытия файла запуска. Я застрял с QProcess, как говорили другие. Я следил за несколькими обсуждениями:
- https://answers.ros.org/question/324076/kill-nodes-started-with-launch-file-properly-in-qt-how/
- https://answers.ros.org/question/360808/qt-creator-ui-to-run-roslaunch-by-clicking-a-button/
- https://answers.ros.org/question/209090/how-to-launch-a-roslaunch-in-qt-with-a-terminal-gui/
ни один из них не увенчался успехом. вот последний код, который я пробовал (в результате ничего не запускается, когда я нажимаю кнопку).
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, я попробую это позже по вашему предложению