参考的博客:

http://blog.csdn.net/u013453604/article/details/52186375

http://blog.csdn.net/dxuehui/article/details/44647861

 

1. Qt插件ros_qtc_plugin安装

使用ros-industrial的Levi-Armstrong在2015年12月开发的一个 Qt插件ros_qtc_plugin,这个插件使得Qt"新建项目"和"新建文件"选项中出现ROS的相关选项,可以直接在Qt下创建、编译、调
试ROS项目,也可以直接在Qt项目中添加ROS的package、urdf、launch。

 

apt-get方式安装:(Levi-Armstrong更新了插件安装方式,现在可以添加他的源直接用apt-get方式安装,Ubuntu 14.04)

sudo add-apt-repository ppa:beineri/opt-qt57-trusty

sudo add-apt-repository ppa:levi-armstrong/ppa

sudo apt-get update && sudo apt-get install qt57creator-plugin-ros

若上述安装运行正常,可略过下面步骤。

(1)下载安装Qt5.7.0

1)打开链接http://blog.csdn.net/u013453604/article/details/52186375,选择国内的高速源下载。

2)下载下来的qt-opensource-linux-x64-5.7.0.run ,右键"属性"——"权限"勾选"允许作为程序执行文件",再双击安装。安装路径选择/home/ubuntu/Qt5.7.0(其中ubuntu为系统名,根据实际情况更改),安装后出现Qt5.7.0文件夹。

(2)修改系统配置文件让Qt启动器选择新版的Qt Creator

sudo gedit /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

 

原始:

/usr/lib/x86_64-linux-gnu/qt5/bin

/usr/lib/x86_64-linux-gnu

更改为:

/home/ubuntu/Qt5.7.0/5.7/gcc_64/bin

/home/ubuntu/Qt5.7.0/5.7/gcc_64/lib

注意:/home/ubuntu为主文件夹绝对路径,需根据实际系统名称更改。

 

如果多个Qt版本共存,而你修改上述文件仍无法进行编译,报错有类似下面的

make: *** 没有规则可以创建目标"clean"。
停止。

Project MESSAGE: Cannot build Qt Creator with Qt version 5.2.1.

Project ERROR: Use at least Qt 5.5.0.

make: *** 没有指明目标并且找不到 makefile。
停止。

那么要到/usr/lib/x86_64-linux-gnu/ 下看看到底有几个qtchooser,并修改所有的qtchooser/default.conf

 

(3)运行Qt Creator配置脚本

下载脚本setup.sh (打开上述博客链接,并下载),把它放在主目录/home/ubuntu下。

 

1)运行前需修改

 

Setup.sh中的 QMAKE_PATH需要修改:

原始:

 

QMAKE_PATH=/opt/qt57/bin/qmake

 

修改为:

 

QMAKE_PATH=/home/ubuntu/Qt5.7.0/5.7/gcc_64/bin/qmake

注意:/home/ubuntu为主文件夹绝对路径,需根据实际系统名称更改。

 

Setup.sh脚本中有个路径需要根据实际情况修改,如果ubuntu是英文版可以不用管,如果是中文版的系统,桌面文件夹名字不是Desktop而是"桌面",就要修改setup.sh文件中的第84行,原文是

rm -f $HOME/Desktop/QtCreator.desktop

ln -s $DESKTOP_FILE $HOME/Desktop/QtCreator.desktop12

改成

rm -f $HOME/桌面/QtCreator.desktop

ln -s $DESKTOP_FILE $HOME/桌面/QtCreator.desktop12

在桌面生成一个名为QtCreator.desktop的快捷方式,用这个快捷方式打开Qt就可以正常使用ros_qtc_plugin插件。

2)打开终端运行

 

cd ~

bash setup.sh -u

运行完成无错误则安装成功。

注意:

1)从github下载一个新版的Qt Creator源码并重新编译时间很长,建议运行FQ软件Lantern,以加快下载速度。

2)bash setup.sh -u 命令前面不需要加sudo 否则编译过程中新建的文件夹和桌面的Qt快捷方式都属于root用户,不用命令行你是无法修改和删除。

运行上述命令时在/home/ubuntu下生成qtc_plugins文件夹,其中包含下载的qt-creator和ros_qtc_plugin。

3)上述博客中"国内访问github网速太慢,从Qt官网下载Qt Creator 4.0.3的源码放在qtc_plugins文件夹下"运行的方式验证后发现问题,运行bash setup.sh -u后出现很多错误,不建议使用。

(4)出现错误

如果提示"fatal error: qtermwidget5/qtermwidget.h: No such file or directory",则需要到:http://github.com/lxde/qtermwidget 下载qtermwidget-master,并安装。

安装qtermwidget-master需要升级cmake,网络上升级cmake的方案主要3种:

1). (推荐)下载安装

sudo apt-get install build-essential

wget http://www.cmake.org/files/v3.7/cmake-3.7.1.tar.gz

tar xf cmake-3.7.1.tar.gz

cd cmake-3.7.1

./configure

make

sudo make install

2). 使用PPA

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:george-edison55/cmake-3.x

sudo apt-get update

•    若没有安装cmake,则

sudo apt-get instal cmake

•    若已经安装了cmake,则

sudo apt-get upgrade

这样做新版本cmake有些链接找不到导致无法安装。

3). 卸载

apt-get autoremove cmake

千万不能这样做,否则你的ROS中好多组件跟着一起卸载了。

 

采用方案1安装完成后运行

cmake --version

可能出现CMake Error: Could not find CMAKE_ROOT !!!

这是因为cmake的文件夹会变化,变为:/usr/local/share/,所以需要输入

export CMAKE_ROOT=/usr/local/share/

查看:echo $CMAKE_ROOT

这时就可以编译qtermwidget

解压qtermwidget-master.zip之后,首先修改CMakeLists.txt,找到

include_directories(

"${CMAKE_SOURCE_DIR}/lib"

"${CMAKE_BINARY_DIR}/lib"

"${CMAKE_BINARY_DIR}"

)

add_definitions(-Wall)在其下面添加:

set(CMAKE_PREFIX_PATH "/home/leon/Qt5.7.0/5.7/gcc_64/"),注意修改路径。保存,并运行

cmake .

make

sudo make install

如果不添加会出现错误

CMake Warning at CMakeLists.txt:5 (FIND_PACKAGE):

By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project

has asked CMake to find a package configuration file provided by

"Qt5Widgets", but CMake did not find one.

Could not find a package configuration file provided by "Qt5Widgets" with

any of the following names:

Qt5WidgetsConfig.cmake

qt5widgets-config.cmake

Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set

"Qt5Widgets_DIR" to a directory containing one of the above files. If

"Qt5Widgets" provides a separate development package or SDK, be sure it has

been installed.

运行完成后,在运行:

cd ~

bash setup.sh -u

运行无错误后,双击桌面qt图标,如果出现libqtermwidget5.so.0: cannot open shared object file: No such file or directory。这个文件在/usr/local/lib/文件下,所以输入

export LD_LIBRARY_PATH=/where/you/install/lib:$LD_LIBRARY_PATH

sudo ldconfig

可以解决。

 

 

 

2. 使用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"修改为"<None>",然后执行"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"修改为"<None>",然后执行"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"。

用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
文件内)。

基于Qt搭建ROS开发环境的更多相关文章

  1. ROS学习笔记八:基于Qt搭建ROS开发环境

    1 前言 本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Q ...

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

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

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

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

  4. 基于Eclipse搭建hadoop开发环境

    一.基础环境准备 1.Eclipse 下载地址:http://pan.baidu.com/s/1slArxAP 2.JDK1.8  下载地址:http://pan.baidu.com/s/1i5iNy ...

  5. 基于Window10搭建android开发环境

    一.安装JDK 1.下载(网页链接) 2.双击安装文件进行安装,安装在合适目录,例如:D:\Java\jdk1.8.0_201与D:\Java\jre1.8.0_201 3.设置环境变量 3.1.JA ...

  6. 基于 Webpack 4 搭建 Vue 开发环境

    自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...

  7. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  8. 基于ionic4、cordova搭建android开发环境

    前颜(yan)最近公司有一个项目需求是利用h5进行跨平台开发,这里所说的跨平台开发指的是:将h5代码利用某种方式或工具环境进行打包,最后生成android的apk以及ios的ipa. 本文只讲解and ...

  9. 搭建基于MyEclipse的Hadoop开发环境

    不多说,直接上干货! 前面我们已经搭建了一个伪分布模式的Hadoop运行环境.请移步, hadoop-2.2.0.tar.gz的伪分布集群环境搭建(单节点) 我们绝大多数都习惯在Eclipse或MyE ...

随机推荐

  1. pjsip与QT进行适配

    pjsip是纯C语言写的一个sip协议库,整个代码写得还是比较模块化的,得益于此的设计,只要理解了pjsip的设计,就可以对其网络层进行扩展. 我们项目是QT作为主要开发工具,而PJSIP的库默认是利 ...

  2. C#DataTable与Model互转

    /// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where ...

  3. Linux Tomcat 80端口 Port 80 required by Tomcat v8.5 Server at localhost is already in use.

    Port 80 required by Tomcat v8.5 Server at localhost is already in use. The server may already be run ...

  4. [转]浅谈微信小程序

    本文转自:http://www.cnblogs.com/liziyou/p/6340159.html 微信小程序 1.什么是小程序 小程序是指微信公众号平台小程序,小程序可以在微信内被便捷的获取和转播 ...

  5. div内容溢出

    前几天遇到一个问题,代码是这样一个层次: <div class="province"> <ul> <li>1</li> <li ...

  6. (转)vs2010 vs2013等vs中如何统计整个项目的代码行数

    在一个大工程中有很多的源文件和头文件,我如何快速统计总行数? ------解决方案-------------------- b*[^:b#/]+.*$ ^b*[^:b#/]+.*$ ctrl + sh ...

  7. !function()是干什么的?

    叹号后面跟函数!function和加号后面跟函数+function都是跟(function(){})();这个函数是一个意思,都是告诉浏览器自动运行这个匿名函数的,因为!+()这些符号的运算符是最高的 ...

  8. 2.storm的安装

    1.前提是linux系统已经安装了上一篇讲的Zookeeper和jdk[1.7及以上版本]还有python[centos已经自带,2.6及以上版本] 2.解压storm压缩包 sudo tar -zx ...

  9. 微服务学习笔记二:Eureka服务注册发现

    Eureka服务注册发现 服务发现:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移. 1. Service Discovery: Eureka S ...

  10. Jupyter Notebook(iPython)

    一.Jupyter Notebook介绍 1.什么是Jupyter Notebook Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过编码开发.文档编写.运行代码和 ...