设为首页 收藏本站
查看: 2639|回复: 0

[经验分享] 基于Qt搭建ROS开发环境

[复制链接]

尚未签到

发表于 2017-6-7 07:27:56 | 显示全部楼层 |阅读模式
  参考的博客:
  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"
DSC0000.png

DSC0001.png

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

DSC0003.png

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

  4) 点击下方的"Generate Project File",再点击"Next"
DSC0005.png
  5) 在"Project Management"步骤可以配置版本控制系统,将"Add to version control"中的"Git"修改为"<None>",然后执行"Finish"。
DSC0006.png

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

  (2) 创建package
  1) 在catkin_new下面的src上右键单击,选择"Add New...",如下图
DSC0008.png

  2) 然后选择"ROS"——"package"——"choose"
DSC0009.png

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

  4) 在"Project Management"步骤可以配置版本控制系统,将"Add to version control"中的"Git"修改为"<None>",然后执行"Finish"。
DSC00011.png

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

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

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

  4) 在"Project Management"步骤可以配置版本控制系统,将"Add to version control"中的"Git"修改为"<None>",然后执行"Finish"。
DSC00015.png

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

  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文件夹下找不到可执行文件,导致后面选择运行节点的时候不会出现这个节点
DSC00017.png

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

  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
DSC00019.png

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

  6. 头文件包含
  用插件创建或导入ROS package之后还需要修改.workspace文件,如下图
  在<IncludePaths>标签下加入下面这行
  <Directory>/opt/ros/indigo/include</Directory>
  这样就可以使得Qt找到ros头文件,比如<ros/ros.h> ,头文件包含语句不再提示找不到文件,输入ros相关函数可以自动补全.
DSC00021.png

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-384483-1-1.html 上篇帖子: Tensorflow使用环境配置 下篇帖子: Ubuntu14.04安装caffe指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表