QT通过界面运行rosrun,roslaunch,roscore等
- [QT 运行roslaunch](#QT 运行roslaunch)
- 加入ui界面
- 使用qt界面运行rosrun,roscore,roslaunch等
QT 运行roslaunch
首先需要使用QT安装好ROS插件,并且配置好环境,这个在之前的文章已经说过了,不再进行赘述
加入ui界面
右键src选择添加新文件->Qt设计器界面类->main mainwindow
选择下一步,就会生成这些文件
然后添加一个main.cpp
cpp
#include "mainwindow.h"
#include "QMainWindow"
#include "QApplication"
int main(int argc, char **argv)
{
// ros::init(argc, argv, "tutorial_pkg1_pubnode1");
// ros::NodeHandle nh;
QApplication a(argc,argv);
MainWindow w;
w.show();
return a.exec();
}
打开mainwidow.ui 手动添加一个按钮并保存
修改cmakelist
接下来是比较重要的一部,修改cmakelist才能使我们做的工作被正确的编译运行
首先要把QT链接到工程中来
clike
set(CMAKE_AUTOMOC ON) # Meta-Object Compiler
set(CMAKE_AUTORCC ON) # Resource Compiler
set(CMAKE_AUTOUIC ON) # User Interface Compiler
cpp
find_package(Qt5 COMPONENTS
Core
Gui
Widgets
REQUIRED)
clike
catkin_package(
INCLUDE_DIRS include
# LIBRARIES test
CATKIN_DEPENDS roscpp rospy std_msgs
# DEPENDS system_lib
)
c
add_executable(main src/main.cpp
src/mainwindow.cpp
src/mainwindow.h
src/mainwindow.ui)
cpp
target_link_libraries(main
${catkin_LIBRARIES}
Qt5::Core
Qt5::Gui
Qt5::Widgets)
可以根据自己的情况进行修改
运行
左上角构建->重新构建,构建完成之后配置一下项目->运行
执行档这里选择一下,其他的不用管
然后切回到编辑页面点击右下角三角进行运行,可以看到我们刚才做好的界面
现在我们关闭它,接下来使用这个界面来代替命令行的操作。
使用qt界面运行rosrun,roscore,roslaunch等
页面切到mainwindow.ui
右键控件之后选择槽函数,转到槽函数
方法一
例:启动rviz
c
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QProcess"
#include "QDebug"
#include <iostream>
QProcess *process = new QProcess(this);
process->start("rosrun", QStringList() << "rviz" << "rviz");
// 等待rosrun命令执行完成,监测执行状态
if (!process->waitForStarted()) {
qDebug() << "Failed to start rosrun command:" << process->errorString();
}
if (!process->waitForFinished()) {
qDebug() << "Failed to finish rosrun command:" << process->errorString();
} else {
qDebug() << "rosrun command output:";
qDebug() << process->readAllStandardOutput();
}
delete process;
使用的时候要将ros运行起来,可以手动在终端打开使用roscore打开rosmaster
方法二
也可以直接在界面中运行roscore,方法如如下
cpp
QString command = "roscore";
QProcess *tprocess = new QProcess(this);
tprocess->start("/bin/bash", QStringList() << "-c" << command);
方法三
以上两种方法会直接运行,如果我们想在终端终端中打开,查看终端里面输出的日志信息等,可以用下面这种方法
cpp
system("gnome-terminal -x bash -c 'rosrun rviz rviz' ");//打开一个终端并执行内容
运行之后就会发现在打开rviz的同时也会打开一个终端显示日志消息