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

QT 运行roslaunch

首先需要使用QT安装好ROS插件,并且配置好环境,这个在之前的文章已经说过了,不再进行赘述

加入ui界面

右键src选择添加新文件->Qt设计器界面类->main mainwindow
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择下一步,就会生成这些文件
然后添加一个main.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链接到工程中来

set(CMAKE_AUTOMOC ON) # Meta-Object Compiler
set(CMAKE_AUTORCC ON) # Resource Compiler
set(CMAKE_AUTOUIC ON) # User Interface Compiler
find_package(Qt5 COMPONENTS
        Core
        Gui
        Widgets
        REQUIRED)
catkin_package(
  INCLUDE_DIRS include
#  LIBRARIES test
  CATKIN_DEPENDS roscpp rospy std_msgs
#  DEPENDS system_lib
)
add_executable(main src/main.cpp
                src/mainwindow.cpp
                src/mainwindow.h
                src/mainwindow.ui)
target_link_libraries(main
    ${catkin_LIBRARIES}
    Qt5::Core
    Qt5::Gui
    Qt5::Widgets)

可以根据自己的情况进行修改

运行

左上角构建->重新构建,构建完成之后配置一下项目->运行
在这里插入图片描述执行档这里选择一下,其他的不用管
然后切回到编辑页面点击右下角三角进行运行,可以看到我们刚才做好的界面

在这里插入图片描述
现在我们关闭它,接下来使用这个界面来代替命令行的操作。

使用qt界面运行rosrun,roscore,roslaunch等

页面切到mainwindow.ui
在这里插入图片描述右键控件之后选择槽函数,转到槽函数

方法一

例:启动rviz

	#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,方法如如下

    QString command = "roscore";
    QProcess *tprocess = new QProcess(this);
    tprocess->start("/bin/bash", QStringList() << "-c" << command);

方法三

以上两种方法会直接运行,如果我们想在终端终端中打开,查看终端里面输出的日志信息等,可以用下面这种方法

system("gnome-terminal -x bash -c 'rosrun rviz rviz' ");//打开一个终端并执行内容

运行之后就会发现在打开rviz的同时也会打开一个终端显示日志消息

### 使用 Qt 开发 ROS Android 应用程序 #### 创建项目结构 为了创建一个基于 Qt 和 ROS 的 Android 应用程序,首先需要设置好开发环境。这涉及到安装必要的工具链以及配置交叉编译环境。 对于 Windows 用户来说,在下载并安装了适用于桌面平台的 Qt 后,还需要额外获取用于 Android 平台的支持包,并将其 `bin` 文件夹加入到系统的 PATH 变量中[^1]。Linux 用户可以利用诸如 APT 这样的包管理器来简化这一过程;而 Mac OS X 则建议直接从官方网站获得最新版本的 Qt 软件包,并同样确保将相应的二进制文件位置添加至 PATH 中。 接着要准备的是 ROS 系统本身及其支持库。由于目标设备运行的是 Android 操作系统而不是常见的 Linux 发行版,因此必须采用特定的方法来进行移植工作。一种常见的方式是从源码开始构建整个 ROS 工作空间,并针对 ARM 架构做出适当调整以便能够在移动平台上正常运作。 #### 配置 CMakeLists.txt 文件 当一切就绪之后,可以在项目的根目录下找到名为 `CMakeLists.txt` 的文本文件。这里定义了一系列指令用来指导编译流程。为了让我们的应用程序能够识别来自传感器的数据流或者其他形式的消息传递机制,应当在此处声明对外部资源(比如 ROS 消息类型)的需求: ```cmake find_package(catkin REQUIRED COMPONENTS roscpp std_msgs) include_directories(${catkin_INCLUDE_DIRS}) link_directories(${catkin_LIBRARY_DIRS}) add_executable(my_app src/main.cpp) target_link_libraries(my_app ${catkin_LIBRARIES}) ``` 上述片段展示了如何链接标准消息接口(`std_msgs`)和核心客户端库 (`roscpp`) 至最终可执行文件当中去。当然这只是冰山一角——实际情况下可能还会涉及更多复杂的依赖关系处理逻辑。 #### 编写主程序代码 下面给出了一段简单的例子,它实现了订阅 `/cmd_vel` 主题并将接收到的速度命令打印出来: ```cpp #include <ros/ros.h> #include <geometry_msgs/Twist.h> void cmdVelCallback(const geometry_msgs::Twist& msg){ ROS_INFO("Received linear velocity: %f, angular velocity:%f",msg.linear.x,msg.angular.z); } int main(int argc,char **argv){ ros::init(argc, argv,"listener"); ros::NodeHandle n; ros::Subscriber sub=n.subscribe("/cmd_vel",1000,cmdVelCallback); ros::spin(); return 0; } ``` 这段代码里包含了对 Twist 类型数据结构的操作方法说明[^3]。值得注意的是,尽管这里的实现方式看起来更像是传统的 PC 上的应用场景,但是只要经过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值