使用QT界面运行roslaunch,roslaunch,roscore等

QT通过界面运行rosrun,roslaunch,roscore等

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的同时也会打开一个终端显示日志消息

相关推荐
AI-小柒7 分钟前
OpenClaw技术深度解析:从智能助手到自动化引擎的范式革命(附DataEyes实战)
大数据·运维·开发语言·人工智能·python·http·自动化
梦游钓鱼10 分钟前
Timestamp.cc和Timestamp.h文件分析
开发语言·c++
所谓伊人,在水一方33312 分钟前
【Python数据可视化精通】第1讲 | 数据可视化的本质与认知心理学基础
开发语言·python·信息可视化·matplotlib
所谓伊人,在水一方33314 分钟前
【Python数据科学实战之路】第18章 | 大模型与数据科学:LLM赋能数据分析新时代
开发语言·python·深度学习·神经网络·数据分析·tensorflow
赵谨言21 分钟前
摘要本研究旨在构建一套基于OpenCV与CNN融合技术的银行卡号自动识别系统,重点解决不同银行卡号字体格式差异、倾斜污损等复杂场景下的识别难题
大数据·开发语言·经验分享·python
147API25 分钟前
Claude JSON 稳定输出:Schema 校验与修复回路(Kotlin)
开发语言·kotlin·json·claude
于先生吖26 分钟前
Java 打车小程序 APP 源码 顺风车滴滴跑腿系统完整实现
java·开发语言·打车系统
zh路西法40 分钟前
【C语言简明教程】(一):数据类型,表达式与控制结构
c语言·开发语言
他们都不看好你,偏偏你最不争气40 分钟前
【iOS】block
开发语言·ios·objective-c·block·闭包
工业甲酰苯胺41 分钟前
PHP闭包中static关键字的核心作用与底层原理解析
android·开发语言·php