1 前言

本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Qt“新建项目”和“新建文件”选项中出现ROS的相关选项,让我们可以直接在Qt下创建、编译、调试ROS项目,也可以直接在Qt项目中添加ROS的package、urdf、launch,感谢Levi-Armstrong。目前这个插件还在不断完善,有问题或者其他功能建议可以在ros_qtc_plugin的项目主页的讨论区提出。

本文是用的操作系统是ubuntu 14.04 LTS,ROS版本是indigo,Qt版本是Qt5.9。

2 安装Qt和插件ros_qtc_plugin

插件要求Qt 5.5.0以上的版本,下载Qt 5.7.0可以使用apt-get方式安装,Ubuntu14.04 安装指令如下:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo add-apt-repository ppa:levi-armstrong/qt-libraries-trusty
$ sudo add-apt-repository ppa:levi-armstrong/ppa
$ sudo apt-get update
$ sudo apt-get install qt57creator-plugin-ros libqtermwidget57-0-dev

出现错误

下列软件包有未满足的依赖关系: qt57creator-plugin-ros : 依赖: libqtermwidget59-0 (>=0.6.1) 但是它将不会被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

解决办法

$ sudo apt-get update
$ sudo apt install qt59creator
$ sudo apt-get install qt57creator-plugin-ro

然后可以通过win键搜素安装的qt。

之后可以使用qt进行ROS的程序编写与编译。

3 使用ros_qtc_plugin插件新建项目

使用插件的"新建项目"中的"Import ROS Workspace"选项不仅可以新建工作空间还可以导入现有的工作空间,而"新建文件"中的"ROS"下面的"Package"、"Basic Node"等选项可以创建package和和节点、launch文件、urdf文件等。现在创建一个新的catkin工作空间,并且在里面创建一个package。

(1) 新建项目

1) "File"—"New File or Project",选择"Import Project"—"Import ROS Workspace"—"choose"

2) Name和catkin工作空间文件夹名字相同(也可以不同)名为catkin_new,然后选择"Browse"——"创建文件夹"(点击右上角带"+"文件夹),创建一个名为catkin_new的文件夹,如下图,按回车,再选择"Choose"。

3)出现一个对话框,询问新建的工作空间未被初始化,是否执行初始化,选择"yes"

这里相当于执行一次catkin_init_workspace命令,使工作空间初始化。

4) 点击下方的"Generate Project File",再点击"Next" 。

5) 在"Project Management"步骤可以配置版本控制系统,将"Add to version control"中的"Git"修改为"",然后执行"Finish"。

6) 建好的工作空间catkin_new是空的,如下图所示:

(2) 创建package

1) 在catkin_new下面的src上右键单击,选择"Add New...",如下图所示:

2) 然后选择"ROS"——"package"——"choose"

3) 填写package的名字,如test1

填写作者(Authors)和维护者(Maintainers),如果你的Qt环境部没有配置中文支持请不要用中文,否则无法新建package,或者新建的package里面的package.xml会是空文件。

在"Dependencies"下的"Catkin"一栏填写依赖,通常用C++写节点需要添加对roscpp的依赖。

4) 在"Project Management"步骤可以配置版本控制系统,将"Add to version control"中的"Git"修改为"",然后执行"Finish"。

(3) 添加新的节点

1)目前这个package还是空的,没有任何节点。在test1的src文件夹上右键单击,选择"Add New..."。

2) 选择"ROS"——"Basic Node"——"choose",创建一个节点,也就是新建一个.cpp文件。

3) 节点名称写为"node1",则生成一个名为node1.cpp的源文件。

4) 在"Project Management"步骤可以配置版本控制系统,将"Add to version control"中的"Git"修改为"<None>",然后执行"Finish"。

5) 用ROS模板新建的node1.cpp的源文件如下图,是自动生成的一个Hello World程序。

4 编译节点

1) 修改CMakeLists.txt

为了编译成可执行文件,还需要编辑test1的makefile。为test1的CMakeLists.txt加上下面几行,意思是把node1.cpp编译成名为node1的节点。

add_executable(node1 src/node1.cpp)

target_link_libraries(node1

${catkin_LIBRARIES}

)

注意:

上面几行需要放在include_directories后面,在构建项目的时候才会在catkin_new/devel/lib/test1里面生成可执行文件node1.exe,这样后面进行"运行配置"的时候test1包下面才会出现node1节点;如果把上面几行放在include_directories前面会使得构建过程直接在catkin_new/build/test1下面生成可执行文件node1.exe,而devel文件夹下找不到可执行文件,导致后面选择运行节点的时候不会出现这个节点。

2) 编译

修改完CMakeLists.txt之后点击Qt左下角的锤子图标"构建项目catkin_new",点击底边栏的"4 编译输出"可以看到编译结果,如下图:

5 运行节点

1) 运行节点需要修改运行配置,点击左侧栏的"Projects",在"Build Settings"页的"Edit build configuration"一栏选择"Default"。

2) 在下图所示光标处 点击切换到"Run"页,可以看到一个"Add Run Step"的选项,点击出现一个"ROS Step"配置项,可以通过下拉菜单选择package和target(就是该package下的节点),下拉菜单可以通过键入首字母初步定位到你要找的 package位置 。"Add Run Step"的选项其实也是一个下拉菜单,可以选择"Add Launch Step"的选项运行launch文件。

3)点击Qt左下角的小电脑图标,选择"Default"的构建配置,再点击Qt左下角的绿色三角形即可运行"运行设置"页下面配置好的所有Step。

4) 运行结果可以点开底边栏的"ROS Terminals"查看,如下图, 打印了一句 [ INFO] [1470932511.713873863]: Hello world! 如果没有"ROS Terminals",可以在下图鼠标所在位置底边栏有两个上下三角形的地方打开"ROS Terminals"窗口。

6 头文件包含

用插件创建或导入ROS package之后还需要修改.workspace文件,如下图所示:

在<IncludePaths>标签下加入下面这行:

<Directory>/opt/ros/indigo/include</Directory>

这样就可以使得Qt找到ros头文件,比如<ros/ros.h> ,头文件包含语句不再提示找不到文件,输入ros相关函数可以自动补全。

7 修改Qt Creator快捷方式

使从快捷方式启动Qt Creator的同时加载ROS环境变量,否则通过Cmakelists.txt导入的ROS工程运行时出现CMAKE_PREFIT_PATH找不到的错误,如下:

/home/ubuntu/catkin_new/src/ros_tutorials/roscpp_tutorials/CMakeLists.txt:5: error: By not providing "Findcatkin.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "catkin", but CMake did not find one.

打开terminal,输入下面的命令:

$ gedit /home/leon/.local/share/applications/Qt-Creator-ros.desktop

修改 Exec 变量一行,在中间添加 bash -i -c 即改为 Exec=bash -i -c /home/leon/qtc_plugins/qt-creator-build/bin/qtcreator ,注意修改路径,保存并退出。添加 bash -i -c 是为了在通过快捷方式启动Qt Creator的同时加载ROS环境变量(ROS环境变量加载脚本配置在 ~/.bashrc 文件内)。

参考:

SLAM学习笔记-知乎

LeonHuo

张京林要加油

Setup Qt Creator for ROS

github ros-industrial/ros_qtc_plugin项目主页

插件使用问题

ROS学习笔记八:基于Qt搭建ROS开发环境的更多相关文章

  1. Java学习笔记一:三步搭建Java开发环境

    Java开发环境搭建 一:安装JDK: 1.下载地址:http://www.oracle.com/technetwork/java/javase/downloads 非常显眼的下载界面 2.点击下载后 ...

  2. OpenCV2学习笔记02:MSVC2013搭建OpenCV开发环境

    我这里编译的库是通过手动编译的.只是需要注意的是,手动编译一般会产生大量的文件,差不多7个多G的样子,实在是有点浪费硬盘存储呀,其实我们可以删除掉没有用的东西.因为我们在编译的时候指定了一个目录比如我 ...

  3. python之Django学习笔记(一)---搭建Django开发环境和一些基本命令

    1.Django下载 官方下载地址:https://www.djangoproject.com/download/ 2.Django安装 linux/windows安装方法相同,具体有以下俩种 pip ...

  4. 基于eclipse搭建android开发环境-win7 32bit

    基于eclipse搭建android开发环境-win7 32bit 前言:在使用朋友已搭建的Android开发环境时,发现朋友的开发环境版本较低且在update SDk时失败,便决定根据网上文章提示从 ...

  5. 基于Centos搭建 Mono 开发环境

    系统要求: CentOS 7.2 64 位操作系统 安装 Mono 安装前的准备 yum install yum-utils 执行命令添加安装包仓库 rpm --import "http:/ ...

  6. Python3笔记002 - 1.2 搭建python开发环境

    第1章 认识python 1.2 搭建python开发环境 1.2.1 python开发环境概述 python开发环境常见的操作系统: Windows Mac OS Linux 1.2.2 安装pyt ...

  7. 基于Qt搭建ROS开发环境

    参考的博客: http://blog.csdn.net/u013453604/article/details/52186375 http://blog.csdn.net/dxuehui/article ...

  8. OpenCV2学习笔记01:Linux下OpenCV开发环境的搭建

    个人已经厌倦了Windows下的开发方式,于是决定转到Linux平台上来,当然我也知道这个转变会很艰辛,但是我还是要坚持.所以,后面的所有开发我都会基于Linux和Qt,先从开发环境的搭建开始做起,当 ...

  9. Java 学习笔记 第一章:Java语言开发环境搭建

    第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...

随机推荐

  1. MySQL命令行自动补全表名

    注意:在命令行下只有切换到数据库之后,才能补全表名,对于命令是不能补全的. 1.my.conf增加如下配置: [mysql] #no-auto-rehash auto-rehash #添加auto-r ...

  2. Java中文件和I/O

    以下内容引用自http://wiki.jikexueyuan.com/project/java/files-and-io.html: 在Java中java.io包含的每一个类几乎都要进行输入和输出操作 ...

  3. Java基础教程:tutorialspoint-java

    来自turorialspoint的Java基础教程(英文),官网:https://www.tutorialspoint.com/java/index.htm 这个教程在国内已经被翻译成中文(不过是属于 ...

  4. Spring MVC静态资源实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-static-pages-example.html: 例子 ...

  5. 解决Coldfusion连接MySQL数据库的问题

    在连接MySQL时,出现了如下错误: Connections to MySQL Community Server are not supported. Please contact MySQL to ...

  6. CentOS系统如何设置服务开机自动运行

    centos安装好apache,mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了.例如要开机 ...

  7. CodeForces 404 Marathon ( 浮点数取模 -- 模拟 )

    B. Marathon time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  8. 【Android数据存储】- File

    个人学习整理.如有不足之处,请不吝不吝赐教. 转载请注明:@CSU-Max 读写本应用程序数据目录中的文件        此种方法读写的文件在/data/data/<应用程序包名>中   ...

  9. xcode7 怎样真机測试

    1. 下载xcode7 能够通过訪问 https://developer.apple.com/xcode/downloads/ 下载最新的xcode7的版本号 只是官网的下载速度太慢了,这个最好百度一 ...

  10. hibernate could not resolve property

    映射文件字段不匹配 这个异常一般是因为映射文件造成的: 1.hibernate.config.xml中添加的映射文件是否正确 2.映射文件中的类是否正确指定. 3.映射文件映射的属性名是否跟类中的属性 ...