求助,虚拟了如何用光盘启动电脑还是不能进入游戏

作者最近研究移动移动机器人,由于有QT开发的经验,所有想要在QT中使用ros库。因为配置环境问题最后编译一直通不过。所以花掉了很多时间处理。如果对于读者有所帮助,本人倍感荣幸。
本人的环境是 ubuntu14.04 + qt 5.7 + ros(indigo)
1.首先分别安装好qt和ros,ros按照官网完成安装和配置。qt安装也很简单,我不再赘述。
2.重点在于需要配置qt的启动文件。需要在qt启动时加载ros的环境变量,否则无法编译通过。我参考了许多博主的文章。不同的qt版本配置也有所不同。有的版本可以为:sudo
gedit ~/.local/share/applications/DigiaQtOpenSource-qtcreator.desktop
不保存退出。如果你看到下面的代码说明对了。[Desktop Entry]
Type=Application
Exec=/home/cyy/Qt5.6.0/Tools/QtCreator/bin/qtcreatorName=Qt Creator (Community)GenericName=The IDE of choice for Qt development.Icon=QtProject-qtcreatorTerminal=falseCategories=DIDE;Qt;MimeType=text/x-c++text/x-c++text/x-application/x-application/vnd.qt.application/vnd.qt.xml.text/x-text/x-qt.text/x-qt.
假如读者打上面的这条命令发现打开的是个空文件,我很抱歉的告诉你,你文件的位置不对。网上有很多版本的路径,我觉得不要去试了,直接打下面的命令找吧。虽然有很多很多,耐心点找有关于qt的.desktop的文档。
locate .desktop
3.接下来就是修改上面的文档了。只需要在Exec=。。。这一行等号的后面加入bash -i -c。变成为:Exec=bash -i -c /home/cyy/Qt5.6.0/Tools/QtCreator/bin/qtcreator
4.保存退出。重启qt。
5.在qt的.pro中加入下面的代码。路径根据自己的修改。INCLUDEPATH += /opt/ros/indigo/include
DEPENDPATH +=
/opt/ros/indigo/include
LIBS += -L/opt/ros/indigo/lib -lroscpp -lrospack -lpthread -lrosconsole -lrosconsole_log4cxx -lrosconsole_backend_interface -lxmlrpcpp -lroscpp_serialization -lrostime
-lcpp_common
-lroslib -ltf
-lyaml-cpp -lkdl_conversions
LIBS += -l:/opt/ros/indigo/lib/libroslib.so
6.加入头文件,这样就可以使用ros库了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:915次
排名:千里之外4707人阅读
本文详细介绍了利用CMakeLists.txt文件把ROS项目导入到QtCreator进行代码编写和调试的过程,文末还介绍了ROS中使用Qt界面的方法
这种导入ROS项目到Qt的方法也适用于其他CMake创建的项目,这种方案缺点是导入项目后无法直接在Qt下面新建文件和package到项目,只能用命令行在Qt外面创建之后重新导入到Qt,最近得益于Levi-Armstrong等人的工作,他们开发了一个名为ros_qtc_plugin 的Qt插件可以方便的导入、创建、编译、调试ROS项目,博主认为这是一个目前为止最完美的解决方案,详细请看博主的另一篇文章介绍:。
本文所用操作系统为Ubuntu 14.04 64位,Qt版本为Qt5.5.1(Qt Creator3.5.1)
本文地址:
二、创建Qt-ROS快捷方式
因为Qt本身支持CMake项目,所以从终端启动QtCreator是可以直接加载运行ROS相关项目的,如果你不想从终端启动,那么需要做一些设置来确保启动QtCreator的同时加载ROS环境变量
这里我们来创建一个启动器(即桌面快捷方式):
点击左上角Ubuntu标志(或者按下Win键)搜索一个叫“启动应用程序”的软件,然后选择“添加”创建一个启动程序,如下图
(1) 我将这个启动器命名为“Qt-ROS”,然后点击“浏览”,选中Qt5.5.1/Tools/QtCreator/bin/下的qtcreator可执行文件,然后“命令”栏会出现qtcreator可执行文件的绝对路径
(2) 我们还需要在这行绝对路径前面加一句bash -i -c,用空格和后面的路径隔开
(3) 然后点击“添加”,这样“额外的启动程序”栏下就出现了名为“Qt-ROS”的启动器,用鼠标把它拖到桌面变成了一个桌面快捷方式,把它重命名为“Qt-ROS”
(4) 右键选中它,“属性”,在“基本”页点击名称左边的图标可以设置自定义图标,我将其设为原来qtcreator的图标,图标地址在
/Qt5.5.1/Tools/QtCreator/share/qtcreator/welcomescreen/widgets/images/qtcreator.png
(5) 再到“权限”页选中“允许作为程序执行文件”
这样qtcreator快捷方式方式就建好了,如下图
用这个快捷方式打开ROS项目之后只需要在终端运行一个roscore,就能开始运行或者调试代码,并且在Debug模式下可以看到程序内部的许多变量,ROS调试再也不是问题啦
如果你不想那么麻烦可以直接在桌面新建一个Qt-ROS.desktop文件,然后把下面代码复制进去
[Desktop Entry]
Exec=bash -i -c qtcreator %F
Icon=QtProject-qtcreator
Type=Application
Terminal=false
Name=Qt-ROS
GenericName=Integrated Development Environment
MimeType=text/x-c++text/x-c++text/x-application/x-application/vnd.nokia.qt.application/vnd.nokia.xml.qt.
Categories=Qt;DIDE;
InitialPreference=9
其中的Exec Icon Name不需要再修改,这个配置可以直接用
三、导入ROS项目到Qt
现在我们用前面创建的Qt-ROS.desktop快捷方式打开Qt,开始导入ROS项目
1、导入单个package
如果你只想导入单个package进行调试请看这里:
(1) 双击前面创建的Qt-ROS快捷方式打开Qt
(2) “open project”或者“文件”——“打开文件或项目”,选择catkin工作空间里package包的CMakeLists.txt,如下图
我的catkin工作空间是catkin_qtwstest,里面有一个package叫test,test的CMakeLists.txt在catkin_qtwstest\src\test下面
(3) 构建路径中的“构建目录”选择catkin_qtwstest/build,进入“下一步”
(4) “执行CMake”的步骤如下图
如果需要Debug,填入参数-DCMAKE_BUILD_TYPE=Debug;
如果不需要Debug,你想直接运行,填入参数-DCMAKE_BUILD_TYPE=Release
然后点击“执行CMake”——“完成”,package成功导入到Qt
(5) 导入之后如下图,可以看到src下面有三个.cpp文件,这是我写的三个节点,在CMakeLists.txt里我把它们分别编译成三个可执行文件,名字不变
如果想运行这些节点需要在终端运行一个master,节点才能正常运行,执行命令:
Qt界面左下角有个小的电脑图标“project all”,点击它可以选择运行的节点,如图我选择名为“talker”的节点
点击左下角绿色三角形可以运行,点击带爬虫的绿色三角形可以进行调试
(6) 如下图是运行时的情况
(7) 如果需要更改项目配置可以点击Qt界面左侧的“项目”,如下图
在“构建”页的“重新装配项目”后面有一个“Run CMake…”点击它可以如(4)更改编译参数
(8) 在“项目”的“运行”页可以修改一些环境变量,如下图
(9) 如果想重新导入这个项目需要删除catkin_qtwstest\src\test下的CMakeLists.txt.user文件,然后按照上述操作重新导入
2、导入工作空间所有package
如果你想把一个catkin工作空间里的所有package导入到Qt请看这里:
(1) 我们要导入的工作空间名字叫catkin_qtws,它里面有许多其他的package,进入工作空间根目录catkin_qtws\src我们可以看到工作空间的CMakeLists.txt是一个符号链接,如下图
我们需要把它变成一个真正的CMakeLists.txt,执行如下命令
cd ~/catkin_qtws/src
sed -i '' CMakeLists.txt
然后你会发现catkin_qtws\src下的CMakeLists.txt图标变得和package里面的一样了
(2) 双击前面创建的Qt-ROS快捷方式打开Qt
(3) “open project”或者“文件”——“打开文件或项目”,选择catkin工作空间里的CMakeLists.txt,如下图
(4) 构建路径中的“构建目录”选择catkin_qtws/build,进入“下一步”
(5) “执行CMake”步骤如下图
如果需要Debug,填入参数-DCMAKE_BUILD_TYPE=Debug;
如果不需要Debug,你想直接运行,填入参数-DCMAKE_BUILD_TYPE=Release
然后点击“执行CMake”——“完成”,package成功导入到Qt
(6) 导入之后如下图,这里面有很多我写的package,这里有一个叫odomframe_test.cpp的文件是ROS wiki上的一个示例代码,我们以这个odomframe_test节点为例
如果想运行odomframe_test节点需要先在终端运行一个master,节点才能正常运行,执行命令:
Qt界面左下角有个小的电脑图标“project all”,点击它可以选择运行的节点,如图我选择名为“odomframe_test”的节点
点击左下角绿色三角形可以运行,点击带爬虫的绿色三角形可以进行调试
(7) 如下图是调试odomframe_test节点的情况
(8) 如果想重新导入这个项目需要删除catkin_qtws\src下的CMakeLists.txt.user文件,然后按照上述操作重新导入
3、在ROS中使用QT界面
在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可
这里参考的是
(1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令:
$ sudo apt-get install ros-indigo-qt-ros
这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgui的package
$ cd catkin_qtwstest/src/
$ catkin_create_qt_pkg testgui
(2) 按照上述方式重新把catkin_qtwstest工作空间导入到Qt中,如下图
在左侧的树状图可以看到testgui下的目录结构,自动生成的main.cpp、main_window.cpp、qnode.cpp和main_window.ui包含Qt界面的基本元素
(3) 要运行testgui节点先启动一个roscore,如图
然后点击Qt左下角的绿色三角形运行testgui节点,如下图
根据roscore的ROS_MASTER_URI填写UI界面上的ROS_MASTER_URI,然后点击“connect”,testgui节点开始在名为/chatter的topic上发送字符串如图
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:105946次
积分:1576
积分:1576
排名:千里之外
原创:38篇
评论:96条
(2)(1)(1)(2)(1)(1)(2)(3)(5)(1)(11)(1)(4)(5)(1)(1)(1)在ROS中使用QT界面在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS ,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Templates &(1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令:$&sudo&apt-get&install&ros-indigo-qt-ros11这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgui的package$&cd&catkin_qtwstest/src/$&catkin_create_qt_pkg&testgui1212如下图650) this.width=650;" src="///upload/images//531.png" alt="这里写图片描述" title="" />(2) 按照上述方式重新把catkin_qtwstest工作导入到Qt中,如下图650) this.width=650;" src="http://img.blog.csdn.net/12099" alt="这里写图片描述" title="" />在左侧的树状图可以看到testgui下的目录结构,自动生成的main.cpp、main_window.cpp、qnode.cpp和main_window.ui包含Qt界面的基本 (3) 要运行testgui节点先启动一个roscore,如图$&roscore11650) this.width=650;" src="http://img.blog.csdn.net/40745" alt="这里写图片描述" title="" />然后点击Qt左下角的绿色三角形运行testgui节点,如下图650) this.width=650;" src="http://img.blog.csdn.net/12105" alt="这里写图片描述" title="" />根据roscore的ROS_MASTER_URI填写UI界面上的ROS_MASTER_URI,然后点击“connect”,testgui节点开始在名为/chatter的topic上发送如图建立新的多层级窗口这里首先叙述一下qt中QWidget,QMainWindow,QDialog的区别。 QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。&&&
&QMainWindow
类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围
菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工具条按钮时,槽会被调用。&&
&QDialog类是窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。&&&
是最普通的顶级窗口。一个不会被嵌入到父窗口部件的窗口部件叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。&& &如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。&& &当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。添加窗体(在同一级目录中)由于ros的特性,不同package之间是可以利用ros本身的机制进行通信,所以数个窗体是可以放到同一级package中的。实际工程使用中必定使用多个窗体来对实施工程,所以需要增加图形窗口,这里直接使用QT自带的窗口class类来进行添加。这里在ros2opencv中添加类facedialog,1.将.h文件改为.hpp文件,通过系统的文件管理器将各个文件放到相应的目录中,如图2.在ros2opencv下的CMakeList.txt中add_executable()中添加src/facedialog.cpp变为add_executable(ros2opencv& src/main.cpp src/main_window.cpp src/qnode.cpp src/facedialog.cpp &&&&&&&&${QT_FORMS_HPP} ${QT_MOC_HPP}) 3.在main_window.hpp中添加#include "../include/ros2opencv/facedialog.hpp"因为这里想通过main_window.ui中的按钮来调出faceDialog窗口,所以在main_window.hpp中的public中还要添加faceDialog faceDialogF4.在facedialog.hpp中添加#include "ui_facedialog.h"5.将facedialog.cpp中的#include "ui_facedialog.h"去除6.因为文件进行了改动,所以要把build中所有的东西删除,之后再进行构建。7.之后的对窗体的操作和qt使用窗体的方式一样。添加窗体(在不同级目录添加,互相调用,这块想实现的功能未实现)工程中需要图形窗口处在不同的目录中进行互相调用,如下,在body_detect中添加窗口类bodydialog,1.同样要先将.h改名为.hpp,之后放到对应的目录中。2.之后编译会出现如下的报错QDialog: No such file or directory这里需要在body_detect中的CMakeList.txt的catkin_package()之后添加rosbuild_prepare_qt4(QtCore QtGui)3.编译时出现这样的错误ui_bodydialog.h: No such file or directoryqt使用ros库
qt使用ros库
作者最近研究移动移动机器人,由于有QT开发的经验,所有想要在QT中使用ros库。因为配置环境问题最后编译一直通不过。所以花掉了很多时间处理。如果对于读者有所帮助,本人倍感荣幸。
本人的环境是 ubuntu14.04 + qt 5.7 + ros(indigo)
1.首先分别安装好qt和ros,ros按照官网完成安装和配置。qt安装也很简单,我不再赘述。
2.重点在于需要配置qt的启动文件。需要在qt启动时加载ros的环境变量,否则无法编译通过。我参考了许多博主的文章。不同的qt版本配置也有所不同。有的版本可以为:sudo
gedit ~/.local/share/applications/DigiaQtOpenSource-qtcreator.desktop
不保存退出。如果你看到下面的代码说明对了。[Desktop Entry]
Type=Application
Exec=/home/cyy/Qt5.6.0/Tools/QtCreator/bin/qtcreatorName=Qt Creator (Community)GenericName=The IDE of choice for Qt development.Icon=QtProject-qtcreatorTerminal=falseCategories=DIDE;Qt;MimeType=text/x-c++text/x-c++text/x-application/x-application/vnd.qt.application/vnd.qt.xml.text/x-text/x-qt.text/x-qt.
假如读者打上面的这条命令发现打开的是个空文件,我很抱歉的告诉你,你文件的位置不对。网上有很多版本的路径,我觉得不要去试了,直接打下面的命令找吧。虽然有很多很多,耐心点找有关于qt的.desktop的文档。
locate .desktop
3.接下来就是修改上面的文档了。只需要在Exec=。。。这一行等号的后面加入bash -i -c。变成为:Exec=bash -i -c /home/cyy/Qt5.6.0/Tools/QtCreator/bin/qtcreator
4.保存退出。重启qt。
5.在qt的.pro中加入下面的代码。路径根据自己的修改。INCLUDEPATH += /opt/ros/indigo/include
DEPENDPATH +=
/opt/ros/indigo/include
LIBS += -L/opt/ros/indigo/lib -lroscpp -lrospack -lpthread -lrosconsole -lrosconsole_log4cxx -lrosconsole_backend_interface -lxmlrpcpp -lroscpp_serialization -lrostime
-lcpp_common
-lroslib -ltf
-lyaml-cpp -lkdl_conversions
LIBS += -l:/opt/ros/indigo/lib/libroslib.so
6.加入头文件,这样就可以使用ros库了。
我的热门文章
即使是一小步也想与你分享

我要回帖

更多关于 如何用光盘启动电脑 的文章

 

随机推荐