Qt+ROS+ubuntu18.04配置教程(带界面)

Qt+ROS+ubuntu18.04配置教程(带界面)

1. 安装ROS Qt Creator Plug-in

首先安装ROS Qt Creator Plug-in,这其实是一个带有ROS插件的Qt Creator:去下面的网址https://ros-qtc-plugin.readthedocs.io/en/latest/_source/How-to-Install-Users.html#qt-installer-procedure,根据自己的ubuntu版本选择对应的下载版本,有在线安装和离线安装两种安装方式,以18.04为例:
在这里插入图片描述
选择在线安装,会下载一个名叫eator-ros-bionic-latest-online-installer.run的run文件,对其鼠标右键->属性->权限->允许作为程序执行文件,然后双击安装,组件全选,等待安装完成。

2. 在Qt Creator创建ROS节点

然后打开Qt Creator,新建项目->其他项目->ROS Workspace->选择->输入name(tutorial_ws),Build System选catkin_make,路径自己选择->完成,此时的文件结构如下图:
在这里插入图片描述
如果src没显示,则点上面的图标在这里插入图片描述
,选项全都取消勾选。这个时候就已经创建好了一个工作空间,然后右键src->Add New->ROS->Package->choose->输入name(tutorial_pkg1),路径选择该项目下的src文件夹,Dependencies_Catkin根据需要填依赖,一般需要roscpp、std_msgs等->下一步、完成。

此时已经在项目下创建了一个包,这时如果左边文件没有显示,则把项目关闭再打开
在这里插入图片描述
这时创建了一个包,但是并没有节点和代码,对包点击鼠标右键->Add New->ROS、Basic Publisher Node->输入name(tutorial_tutorial_pkg1_pubnode1),路径放在包下面的src文件夹->完成,这时就创建了一个基本的ros发布节点,里面有自己生成的代码。

同样,如果左边文件没有显示,则把项目关闭再打开。

然后修改CMakeLists.txt至合适,示例:

cmake_minimum_required(VERSION 3.0.2)
project(tutorial_pkg1)
find_package(catkin REQUIRED COMPONENTS
    roscpp )
catkin_package(
    INCLUDE_DIRS include
    CATKIN_DEPENDS roscpp
)
include_directories(
    include ${catkin_INCLUDE_DIRS}
)
add_executable(node src/tutorial_pkg1_pubnode1.cpp)
add_dependencies(node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(node ${catkin_LIBRARIES})

然后点左下角的构建,构建完成后,节点就已经编译好了,可以直接在终端运行rosrun tutorial node。

也可以点Qt界面里的运行按钮运行,但是需要先配置:点左边的项目,
在这里插入图片描述
ROS Manager下的Build System选择CatkinMake,然后点左边Build下面的Run,在这里插入图片描述
对右边“运行”下的添加里添加一个ROS Run Config,下面的Add Run Step选择ROS Run Step,在新的step里面选择包的名字(tutorial_pkg1)和节点的名字(node)。

此时,点击运行按钮即可运行刚刚编译好的节点(终端运行rostopic list可以看到有我们刚刚写好的topic:/chatter)。

3. 在上述基础上加界面

上述就是在Qt Creator里面编写ros节点的方法,如果想要在此基础上加界面,方法如下:对包下面的src文件右键,选择Add New->选Qt设计师界面类->根据需要选界面类型(以MainWindow为例)->填写类名,路径是包下面的src文件夹->完成,此时在src文件夹下出现了三个跟界面有关的文件。
在这里插入图片描述
但是现在这几个文件跟ros还没有联系起来,通过更改CMakeLists文件,可以将其联系起来,样例:

cmake_minimum_required(VERSION 3.0.2)#最低版本要求
project(tutorial_pkg1)#包名

find_package(catkin REQUIRED COMPONENTS
    roscpp )

find_package(Qt5  REQUIRED COMPONENTS  Widgets  )#寻找Qt的包

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)#上面这三行是在把Qt代码交给CMake之前必要的操作,具体作用我也不清楚

catkin_package(
    INCLUDE_DIRS include
    CATKIN_DEPENDS roscpp
)

include_directories(
    include/turorial_pkg1
    include ${catkin_INCLUDE_DIRS}
)#头文件地址

add_executable(node 
	src/tutorial_pkg1_pubnode1.cpp
  	src/mainwindow.cpp
 	src/mainwindow.ui 
)#所有的cpp文件和ui文件
target_link_libraries(node
   ${catkin_LIBRARIES}
)
target_link_libraries(node  Qt5::Widgets )#链接Qt库

然后把tutorial_pkg1_pubnode1.cpp里面的内容更换为:

#include "ros/ros.h"
#include "std_msgs/String.h"
#include"mainwindow.h"
#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();
}

点击构建、运行,可以看到,运行出了一个空的界面。为了验证,在ui里面随便加一个button,转到clicked槽,在槽函数里面加一个ROS_INFO(“ok”);语句,运行,然后打开Qt界面下面的ROS Terminals
在这里插入图片描述
然后点击运行窗口里面的按钮,可以看到有“ok”输出。

至此,Qt+ROS的环境就搭建完毕了。

2023.02.16更新:
有人反应文中的下载网址资源失效了(Cannot retrieve remote tree),经测试,在线版本确实已下架,但是离线版本仍可以下载。若都不行,则可以采用源码编译的方式安装,整个过程稍微比本文复杂,但是仍然比较简单,参考我的另一篇文章https://blog.csdn.net/qq_38222947/article/details/122056314

猜你喜欢

转载自blog.csdn.net/qq_38222947/article/details/114655401