我想构建一个带有多个按钮的UI来启动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);
如果您可以用按钮成功启动节点,那么用按钮关闭它们的一种方法是向这些节点发送一条关于特定主题的消息,例如:"系统/关闭";对于Bool类型,并且节点正在侦听该主题,当消息到达时,节点会关闭自己的