A-A+

如何使用Qt插件在Qt中进行ROS开发

2016年08月15日 ROS 评论 2 条 阅读 4,315 次

一、前言

本文介绍一种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 kylin 14.04中文版,ROS版本是indigo,Qt版本是Qt5.5.1(Qt Creator 4.0.3)

本文地址:http://blog.csdn.net/u013453604/article/details/52186375
视频教程:ros_qtc_plugin插件作者Levi-Armstrong录制的插件使用教程
参考:
ROS wiki IDEs
1. Setup ROS Qt Creator Plug in
2. Setup Qt Creator for ROS
3. Debugging Catkin Workspace
4. Where to find Qt Creator Plug in Support
github ros-industrial/ros_qtc_plugin项目主页
插件使用问题

二、安装插件ros_qtc_plugin

插件要求Qt 5.5.0以上的版本,下载Qt 5.7.0请到
Qt Offline Installers
Qt 5.7.0 for Linux 64-bit (715 MB) (info)
国内可以从以下源高速下载:
中国科学技术大学
清华大学
北京理工大学
下载下来的qt-opensource-linux-x64-5.7.0.run 记得右键“属性”——“权限”勾选“允许作为程序执行文件”,再双击就能安装了

1、修改系统配置文件让Qt启动器选择新版的Qt Creator

首先需要修改下面的文件目的是让Qt的启动器选择新版的Qt Creator,我原本安装的Qt是Qt5.5.1(Qt Creator 3.0.1),然后后面安装插件的脚本帮我下载了最新版的Qt Creator 4.0.3,花了好长时间下载

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

打开文件看到的是下面两行

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

我们需要把它们替换成如下两个路径

/home/zjl/Qt5.5.1/5.5/gcc_64/bin
/home/zjl/Qt5.5.1/5.5/gcc_64/lib

注意/home/zjl是我的主文件夹绝对路径
后面的路径是从Qt安装目录下面进入5.5/gcc_64/找到binlib文件夹,用这两个文件夹路径替换掉default.conf文件原来的两行就是了,我安装Qt的时候选择安装在主文件夹的Qt5.5.1下,并且我的Qt版本是5.5,所以路径如上所示,安装到其他地方或者其他版本的类似


遇到报错请看下面:
这个插件对Qt的版本要求是最低Qt 5.5.0,如果你的Qt版本过低请安装新版本。
如果多个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 了,博主有台电脑曾经是Qt5.2.0,然后卸载,重装了Qt5.7.0,结果上述脚本里面的cd $QTC_BUILD && qmake $QTC_SOURCE/qtcreator.pro -r 这行一直过不了,原因是qtcreator.pro 里面设置了版本检查,而Qt选择器选择的一直是Qt5.2.0,上述修改没有起到作用,我到/usr/lib/x86_64-linux-gnu/ 下面查看发现两个地方有qtchooser

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

于是我把另一个qtchooser 下面的default.conf 也做了上述修改,即

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

把里面的内容修改为

/home/zjl/Qt5.7.0/5.7/gcc_64/bin
/home/zjl/Qt5.7.0/5.7/gcc_64/lib

2、运行Qt Creator配置脚本

下载这个脚本setup.sh (你可以右键“另存为”来下载它),我把它放在了主目录/home/zjl下,那么cd到该位置执行以下命令来运行它

$ cd ~
$ bash setup.sh -u

这里$ bash setup.sh -u 命令前面不需要加sudo 否则编译过程中新建的文件夹和桌面的Qt快捷方式都属于root用户,不用命令行你是无法修改和删除的。。。。
期间脚本从github下载一个新版的Qt Creator源码并重新编译花了好长时间,下载速度只有10kb/s,只好让它下载一晚上。。。期间如果网络断开导致下载中断你还得再运行一次,再等好久,可以从官网下载最新的Qt Creator 4.0.3源码,具体请看下面的说明


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

rm -f $HOME/Desktop/QtCreator.desktop
ln -s $DESKTOP_FILE $HOME/Desktop/QtCreator.desktop

改成

rm -f $HOME/桌面/QtCreator.desktop
ln -s $DESKTOP_FILE $HOME/桌面/QtCreator.desktop

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


下载QtCreator太慢请看下面:
脚本中是从github下载90MB的QtCreator最新版源码,国内访问github网速太慢,可以从
Qt官网下载Qt Creator 4.0.3的源码压缩包qt-creator-opensource-src-4.0.3.tar.gz (21 MB)(还有其他
下载下来之后解压得到101MB的qt-creator-opensource-src-4.0.3 文件夹,将其改名为qt-creator,放在qtc_plugins文件夹下(qtc_plugins与脚本setup.sh处于同一级目录),重新执行脚本即可


“文件”——“新建文件或项目”你会看到如下界面

1471205732-9191-

三、使用ros_qtc_plugin插件新建项目

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

1、新建项目

“文件”——“新建文件或项目”,选择”Import ROS Workspace”——“choose”如上图

然后填写catkin工作空间的名字和位置,如下图

1471205732-1872-

我这里的Name和catkin工作空间文件夹名字相同(也可以不同)名为catkin_new,然后选择“浏览”——“创建文件夹”,创建一个名为catkin_new的文件夹,如下图,按回车,再选择“打开”

1471205731-8592-

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

1471205731-8039-

然后点击下方的“Generate Project File”,再点击“下一步”
在“项目管理”步骤可以配置版本控制系统,我们选择“完成”,如下图

1471205731-1365-

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

1471205732-1672-

2、创建package

接下来我们在这个工作空间创建一个新的package
catkin_new下面的src上右键单击,选择“添加新文件”,如下图

1471205735-2138-

然后选择“ROS”——“package”——“choose”

1471205736-6418-

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

1471205736-4447-

点击“完成”

3、添加新的节点

目前这个package还是空的,没有任何节点
我们在test1的src文件夹上右键单击,选择“添加新文件”

1471205737-5545-

选择“ROS”——“Basic Node”——“choose”,创建一个节点,也就是新建一个.cpp文件

1471205737-3538-

节点名称写为“node1”,则生成一个名为node1.cpp的源文件

1471205740-7586-

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

1471205741-1771-

4、编译节点

为了让它编译成可执行文件我们还需要编辑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文件夹下找不到可执行文件,导致后面选择运行节点的时候不会出现这个节点

1471205757-9629-

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

1471205743-5656-

5、运行节点

如果你想运行某个节点还需要修改运行配置,点击左侧兰的“项目”,在“构建设置”页的“编辑构建配置”一栏选择“Default”,然后在下图所示光标处点击切换到“运行设置”页,可以看到一个“Add Run Step”的选项,点击出现一个“ROS Step”配置项,可以通过下拉菜单选择package和target(就是该package下的节点),下拉菜单可以通过键入首字母初步定位到你要找的package位置
“Add Run Step”的选项其实也是一个下拉菜单,可以选择“Add Launch Step”的选项运行launch文件
配置好如图,点击Qt左下角的小电脑图标,选择“Default”的构建配置,再点击Qt左下角的绿色三角形即可运行“运行设置”页下面配置好的所有Step

1471205747-7825-

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

1471205748-3539-

四、ROS界面开发

结合我另一篇博客的内容在ROS中使用QT界面
我们可以使用catkin_create_qt_pkg 命令在工作空间创建好一个带GUI的ROS package,然后用ros_qtc_plugin插件的“Import ROS Workspace”功能导入这个这个package所在的工作空间,然后可以看到如下图所示

1471205749-3223-

我用 catkin_create_qt_pkg 命令创建的package名为testgui,它包含一个自动生成的界面文件和相应的节点,你可以在左侧栏双击main_window.ui 文件然后在“设计”页面编辑UI界面,我在自动生成的页面上添加了一个空的按钮名为“PushButton”,然后配置“运行设置”运行testguitestgui 节点,可以看到如下图界面,点击界面上的“connect”按钮,节点就会在/chatter 话题上不断发送字符串,然后在界面上显示出来

1471205753-3046-

标签:

2 条留言  访客:2 条  博主:0 条

  1. tony

    fatal: Not a git repository (or any of the parent directories): .git
    make: *** 没有规则可以创建目标“clean”。 停止。
    setup.sh: 行 42: /opt/qt57/bin/qmake: 没有那个文件或目录
    make: *** 没有指明目标并且找不到 makefile。 停止。
    正克隆到 'ros_qtc_plugin'...
    remote: Counting objects: 718, done.
    error: RPC failed; result=56, HTTP code = 200
    fatal: The remote end hung up unexpectedly
    fatal: protocol error: bad pack header
    setup.sh: 第 56 行: cd: /home/tony/qtc_plugins/ros_qtc_plugin: 没有那个文件或目录
    setup.sh: 第 57 行: cd: /home/tony/qtc_plugins/ros_qtc_plugin: 没有那个文件或目录
    setup.sh: 第 58 行: cd: /home/tony/qtc_plugins/ros_qtc_plugin: 没有那个文件或目录
    make: *** 没有规则可以创建目标“clean”。 停止。
    setup.sh: 行 62: /opt/qt57/bin/qmake: 没有那个文件或目录
    make: *** 没有指明目标并且找不到 makefile。 停止。

  2. zhangrelay

    点赞

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: