背景:
通过qt creator来编写,编译,运行ros程序包。ros程序包也可以带有界面。其工程是一个ros工程(不是.pro,而是cmakelist.txt),使用cmake编译方式。
步骤:
(1)安装QT(最新版本):
见 https://blog.csdn.net/ipfpm/article/details/80698659
(2)设置快捷方式:这一步将要修改Qt Creator快捷方式,使从快捷方式启动Qt Creator的同时加载ROS环境变量。
这条命令将打开DigiaQtOpenSource-qtcreator.desktop快捷方式文件,可以看到文件内容如下:
[Desktop Entry]
Type=Application
Exec=/home/ubu/Qt5.8.0/Tools/QtCreator/bin/qtcreator
Name=Qt Creator (Community)
GenericName=The IDE of choice for Qt development.
Icon=QtProject-qtcreator
Terminal=false
Categories=Development;IDE;Qt;
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs;
-
修改 Exec 变量一行,中间添加 bash -i -c 即改为 Exec=bash -i -c /home/ubu/Qt5.8.0/Tools/QtCreator/bin/qtcreator ,保存并退出。
-
添加 bash -i -c 是为了在通过快捷方式启动Qt Creator的同时加载ROS环境变量
-
如果打开的文件是空,则表示没有找到DigiaQtOpenSource-qtcreator.desktop文件
-
可能是安装路径不在本地用户目录下,或者版本不同导致的文件名不一致。
-
可以在 ~/.local/share/applications/ 和 /usr/share/applications/ 两个路径下用 ls qt 命令找找看。
-
如果没有上述快捷方式文件,自己新建一个,只要文件内容类似上面的类容,路径正确即可。
-
快捷方式可以放在 ~/.local/share/applications/ 和 /usr/share/applications/ 两个位置。
-
当然也可以放在任意其他位置,功能跟放在上面两个位置一样,但左边的任务栏不会正确显示图标
-
注意:如果不加入上面的话,加载编译带有ros的程序会报错 :-1: warning: librosconsole_backend_interface.so, needed by /opt/ros/kinetic/lib/librosconsole.so, not found:-1: error: collect2: error: :-1: warning: libcpp_common.so, needed by /opt/ros/kinetic/lib/libroscpp.so, not found (try using -rpath or -rpath-link) ld returned 1 exit status
(3)安装ros_qtc_plugin插件(用时很长)
sudo add-apt-repository ppa:levi-armstrong/qt-libraries-xenial
sudo add-apt-repository ppa:levi-armstrong/ppa
sudo apt-get update && sudo apt install qt59creator
sudo apt-get install qt57creator-plugin-ros
安装该插件会自带有一个qtcreator,版本是qt5.9
因此,需要修改系统配置文件让Qt启动器选择最新版的Qt.
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
换成自己安装的最新的qt的gcc文件
/home/XXX/Qt5.10/5.10/gcc_64/bin
/home/XXX/Qt5.10/5.10/gcc_64/lib
如果自己安装了多个QT,可修改
/usr/lib/x86_64-linux-gnu/qtchooser/default.conf
和
/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
注:如果不执行第一个步骤安装Qt,直接使用安装该插件带的qt也可以.
(4)安装ros,配置ROS环境:
见: https://mp.csdn.net/postedit/83504391
截止到这基本上大功告成.
可以有两种方式创建ROS项目:一种是直接使用qt还有一种是先通过命令行然后在使用qt进行编译分别见4跟5
(4)ros_qtc_plugin插件新建ROS项目(使用qt creator创建ros工程)
(4.1)新建项目:
“文件”——“新建文件或项目”,选择”Import ROS Workspace”——“choose”
(4.2)填写名称地址:其中在选择地址的时候,新建一个文件夹,文件夹的名称跟刚刚填写的工作区间的名称一样:
(4.3)点击完成:
(4.4)在右上角有个filter tree,打开后,将勾选去掉,会显示隐藏的文件,下一步会用到.
(4.5)创建package:在catkin_test下面的src上右键单击,选择“添加新文件”
(4.6)填写如下:
(4.7)添加节点:如果没有出现src以及include文件夹说明:第4步骤的filter tree没有去掉勾选.在对应packageexample下的src右键-->add new
(4.8)节点名字为node1,生成如下nodecpp文件,是一个hello word的程序.然后编译节点:
-
编译节点,为example的CMakeLists.txt加上下面几行,意思是把node1.cpp编译成名为node1的节点
-
再后面include_directories,添加
-
add_executable(node1 src/node1.cpp) target_link_libraries(node1 ${catkin_LIBRARIES} )
如下:
修改完CMakeLists.txt之后点击Qt左下角的锤子图标,即对其进行编译,点击底边栏的“4 编译输出”可以看到编译结果,如下图:
(4.9)运行节点:
- ctrl + alt + T,新终端:rescore
- 在qt的Build&Run”页,设置: add run step ----> ros run step
- 点击底栏的带有上下三角的按钮,点击ros terminate
- 点击绿色运行箭头运行节点:出来hello word
(5)ros_qtc_plugin插件进行ros工程的gui界面开发(用命令行创建带有界面的ros后,使用qt creator打开编辑ros工程)
(5.1)命令行安装ros的某个包
sudo apt-get install ros-kinetic-qt-ros
sudo apt-get install ros-kinetic-qt-create
sudo apt-get install ros-kinetic-qt-build
(5.2)手动命令行创建对应的文件以及工作空间:
mkdir catkin_test
cd catkin_test
mkdir src
cs src
catkin_create_qt_pkg gui1 roscpp
(5.3)打开qt,新建文档--工作区间的名称跟
catkin_test一样,路径选择成对应新建的文件夹catkin_test
打开后如下:
对其进行编译,编译后设置运行目录:项目-->运行-->add run step:
新开终端:roscore
在qt上运行就会出现界面.
说明:
通过上面的方法进行开发界面的时候得到的cmakelist中包含的qt库是qt4的库,因为安装得到的qtcreator是qt4,如何创建一个qt 5库呢?可以自行百度,也可以查看链接:
https://blog.csdn.net/ipfpm/article/details/88573199
参考:
https://www.ncnynl.com/archives/201701/1277.html
https://blog.csdn.net/u013453604/article/details/52186375
http://www.cnblogs.com/fuhang/p/9783050.html
https://blog.csdn.net/u013453604/article/details/52167213
https://blog.csdn.net/softimite_zifeng/article/details/78632211