参考的博客:

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插件新建项目
使用插件的"新建项目"中的"ImportROSWorkspace"选项不仅可以新建工作空间还可以导入现有的工作空间,而"新建文件"中的"ROS"下面的"Package"、"BasicNode"等选项可以创建package和和节点、launch文件、urdf文件等。现在创建一个新的catkin工作空间,并且在里面创建一个package.1)新建项目

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

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

3)出现一个对话框,询问新建的工作空间未被初始化,是否执行初始化,选择"yes" 
这里相当于执行一次catkin_init_workspace命令,使工作空间初始化.

4) 点击下方的"GenerateProject File",再点击"Next"

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

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

(2) 创建package
1) 在catkin_new下面的src上右键单击,选择"AddNew...",如下图
                                                          
2) 然后选择"ROS"——"package"——"choose"

3) 填写package的名字,如test1 
填写作者(Authors)和维护者(Maintainers),如果你的Qt环境部没有配置中文支持请不要用中文,否则无法新建package,或者新建的package里面的package.xml会是空文件 
在"Dependencies"下的"Catkin"一栏填写依赖,通常用C++写节点需要添加对roscpp的依赖

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

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

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

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

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

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

4. 编译节点

1) 修改CMakeLists.txt

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

add_executable(node1src/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",在"BuildSettings"页的"Editbuild configuration"一栏选择"Default";
2) 在下图所示光标处 点击切换到"Run"页,可以看到一个"AddRun Step"的选项,点击出现一个"ROSStep"配置项,可以通过下拉菜单选择package和target(就是该package下的节点),下拉菜单可以通过键入首字母初步定位到你要找的 package位置 "AddRun Step"的选项其实也是一个下拉菜单,可以选择"AddLaunch Step"的选项运行launch文件 .
3)点击Qt左下角的小电脑图标,选择"Default"的构建配置,再点击Qt左下角的绿色三角形即可运行"运行设置"页下面配置好的所有Step

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

6.头文件包含

用插件创建或导入ROSpackage之后还需要修改.workspace文件,如下图

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

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

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

7.修改QtCreator快捷方式

使从快捷方式启动QtCreator的同时加载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" inCMAKE_MODULE_PATH this project has asked CMake to find a packageconfiguration file provided by "catkin", but CMake did notfind 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是为了在通过快捷方式启动QtCreator的同时加载ROS环境变量(ROS环境变量加载脚本配置在~/.bashrc文件内)。

基于Qt搭建ROS开发环境相关推荐

  1. win10 + QT搭建OpenVC开发环境

    win10 + QT搭建OpenVC开发环境 //-- 1.软件下载 qt-opensource-windows-x86-5.14.2.exe [ 下载] opencv-4.3.0-vc14_vc15 ...

  2. QT搭建MQTT开发环境

    QT搭建MQTT开发环境 第一步.明确安装的QT版本 注意: 从QT5.15.0版本开始,官方不再提供离线版安装包,除非你充钱买商业版. 而在这里我使用的QT版本为5.15.2,在线安装了好久才弄好, ...

  3. mac搭建python开发环境_Mac中基于Homebrew搭建python开发环境

    转移到mac上了.这里是在lion中搭建python开发环境的简单记录.这份记录不是一份step by step.而是事后写的记录,可能有记忆遗漏.如果有错误,请指正. 1.安装homebrew的准备 ...

  4. 基于WSL搭建ESP8266开发环境

    目的 本文档用于记录 ESP8266 基于 WSL 的开发环境搭建.本人在最早接触 ESP8266 时使用的环境搭建方法是在 windows 下使用 MINGW32,这个环境下的编译非常慢,体验非常不 ...

  5. Ubuntu20.04如何搭建ROS开发环境

    背景 初学ROS,首先要面临的第一个问题就是环境搭建问题,面对众多的Ubuntu版本和ROS版本,且二者还存在兼容性问题,如何搭建一个灵活性高,易于切换的学习环境显得有为重要.通常有如下几种做法: 在 ...

  6. UEFI 基础教程 (一) - 基于QEMU搭建UEFI开发环境(win/linux)

    一.EDKII windows 环境搭建 1. 下载UEFI开源代码 cmd进入C盘根目录,git clone https://github.com/tianocore/edk2.git edkii ...

  7. ubuntu18.04中基于Docker搭建tensorflow-gpu开发环境

    前提条件就不多提啦,首先得装好nvidia驱动和Docker19以上版本,网上有很多教程. 尝试1:拉取现有的deepo镜像制作 deepo是一个囊括几乎所有深度学习框架的开源镜像,这里我们选择拉取一 ...

  8. 基于maven搭建spark开发环境

    1 背景 需要开发spark 项目,开发语言为java 2 步骤 2.1 创建工程 创建maven工程,这个不在这篇文档论述 2.2 引入pom <properties><maven ...

  9. 基于 Webpack4 搭建 Vue 开发环境

    查看全文 http://www.taodudu.cc/news/show-3248562.html 相关文章: 大端字节序码流中取出2字节_graalvm字节码到位码 XMlL MongoDB增删改查 ...

最新文章

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
  2. 这次是真的!波士顿动力Atlas机器人又进化了,自主导航get新技能
  3. SpringSecurity-eclipse
  4. linux 多线程条件变量,linux多线程之条件变量
  5. 不知因果,何以谈优化?
  6. 让LoadRunner再次走下神坛
  7. NLP 训练及推理一体化工具(TurboNLPExp)
  8. python删除指定天数前的文件_python 删除指定时间间隔之前的文件实例
  9. php正则替换p闭合标签,php正则替换标签的实现方法
  10. Oracle函数translate()的用法
  11. linux 内核系统优化,Linux系统内核优化(一)
  12. Linux技术学习路线图
  13. 关于CSS HACK
  14. python3第三方模块安装路径_查看python及其第三方库的版本和安装位置
  15. 洛谷2805 [NOI2009]植物大战僵尸 (拓扑排序+最小割)
  16. Microsoft Fakes
  17. 关于-最佳的业务连续性容灾架构设计
  18. media query学习笔记
  19. python爬虫自学笔记本(2015.12.14)
  20. 沧桑,何尝不是一种美丽 ----红尘一笑

热门文章

  1. Beyond Compare 4
  2. OpenCV-Mat笔记
  3. java applog_Java Web App: 选择与配置日志库
  4. python 打包exe_将python文件打包exe独立运行程序方法详解
  5. Leetcode 杂题
  6. 【模板】高精度 [高精度]
  7. JavaScript tip
  8. T-SQL备忘(2):聚合函数运算和NULL
  9. IE下单单只设置背景透明度的解决方案
  10. (收集)vim72 .vimrc的一个样本