zoukankan      html  css  js  c++  java
  • ros结合catkin_make和qtcreator

    首先是ros官网关于IDE的教程:

    http://wiki.ros.org/IDEs#QtCreator

    1、qtcreator安装

    从官网上下载.run文件,

    https://info.qt.io/download-qt-for-application-development

    只选择qt工具进行安装,没有加sudo,所以.desktop文件在~/.local/share/applications

    打开gedit DigiaQt-qtcreator-community.desktop 添

    加Exec=bash -i -c

    [Desktop Entry]
    Type=Application
    Exec=bash -i -c /home/ubuntu/Tools/qt/Tools/QtCreator/bin/qtcreator
    Name=Qt Creator (Community)
    GenericName=The IDE of choice for Qt development.
    Icon=QtProject-qtcreator
    StartupWMClass=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;
    

      

    为了让qt能够在启动时候添加ros环境

    2、选择ros编译工具

    官网上有rosbuild是老版本,在indigo之后就没有使用了

    还有catkin_make 是目前用的编译工具

    还有catkin tool 但是去网站上看了还是beta版本就没用

    于是选择catkin_make

    按照官网上一步步做下来

    新建工作空间

    mkdir -p ~/catkin_ws/src
    
    cd ~/catkin_ws/src
    
    catkin_init_workspace
    
    cd ~/catkin_ws/
    
    catkin_make

    从网上下载一个ros包放在src文件夹下

    更改src/CmakeList.txt

    project(RosWorkSpace)
    #Add custom (non compiling) targets so launch scripts and python files show up in QT Creator's project view. file(GLOB_RECURSE EXTRA_FILES */*) add_custom_target(${PROJECT_NAME}_OTHER_FILES ALL WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} SOURCES ${EXTRA_FILES})

    cmake  -DCMAKE_BUILD_TYPE=Debug -DCATKIN_DEVEL_PREFIX=../devel -DCMAKE_INSTALL_PREFIX=../install ../src/

    然后到命令行里进入到工作空间进行catkin_make

    之后启动Qt

    打开qt->open project->点击src/CmakeList.txt->到project下更改build directory为catKin build文件夹

    就可以run cmake 了

    不这么做就会出现找不到catkin

    然后之后会一直出现提示cmake configuration更改了,就算选择overwrite changes in cmakelist.txt,还是没用,原因在于ros的cmakelist.txt是只读的

    删了原来的cmakelist.txt.user再进入打开一遍工程就好了

    最后效果

    当往src里添加新的包时(已经写好CmakeList.txt),点击run cmake后这个工作空间里会出现那个包

    不过都需要先进行catkin_make之后才能够直接在qt里build

     下面是一个正确CMakeList.txt

    cmake_minimum_required(VERSION 2.8.3)
    project(pioneer_zed)
    
    
    set(tf_broadcaster_build 0)
    set(tf_listner_build 0)
    set(base_control_build 1)
    
    
    find_package(catkin REQUIRED COMPONENTS tf roscpp rospy turtlesim geometry_msgs nav_msgs)
    
    #需要这个包是catkin包,可执行程序才会按照ros规则去安装,要不可执行程序会安装在build文件夹下而且也无法用rosrun + tab找出来 catkin_package() include_directories( ${catkin_INCLUDE_DIRS} )
    if(tf_broadcaster_build) add_executable(tf_broadcaster src/tf_broadcaster.cpp) target_link_libraries(tf_broadcaster ${catkin_LIBRARIES}) endif()
    if(tf_listner_build) add_executable(tf_listner src/tf_listner.cpp) target_link_libraries(tf_listner ${catkin_LIBRARIES}) endif()
    if(base_control_build) add_executable(base_control src/base_control.cpp) target_link_libraries(base_control ${catkin_LIBRARIES}) endif()

     今天qt突然不好用了,一些ros头文件找不到,我查看那些找得到ros头文件,发现那些ros头文件位于usr/include下面,而不是ros正常路径opt/ros/kinetic/include下面,应该是之前为了安装opencv nonfree模块,添加了一个repositoory,安装nonfree之后发现不好用将那个repository和nonfree包都删除了之后,还有一些关联包没有删除,而且我将opencv全删除了,再通过libopencv-dev文件来重新安装opencv,然后删除libopencv-dev(不让系统找到旧版本opencv,但是又得要下载,因为一些包依赖于这些opencv库)可能这个样子连带这删除了一些ros包,update之后就发现有些包依赖无法解决,于是用soft ware center查看服务器情况,发现之前设定的aliyun服务器又被重置了,于是更换服务器,但是系统跳出提示要sudo apt-get -f,然后用soft ware center update之后修复了,但是这个样子虽然修复了必要的库,但是没有按照ros原先安装顺序去安装ros,于是多出了在usr/include里一些ros文件,所以将这些包删除之后qt还是找不到相关头文件,原来能够在usr/include里找到的也找不到了,但是catkin_make可以编译过,而且我重新新建了一个工作空间还是没有用,反而使得kinect环境无法加载了,可能是因为没有initial catkin workspace。我仔细回忆ros安装过程,发现qt跟ros安装没有关系,ros安装全过程apt也没有改动什么系统变量,也没有改动过CmakeLists.txt,所以应该是qt出问题了,我重装qt没用,再重装qt新版本就好了。

    如何删除同一个repository下所有包:

    https://askubuntu.com/questions/37531/how-do-i-remove-all-packages-from-a-certain-repository

    在使用社区版本QT忍无可忍之后卸载了下载apt版本的qtcreator

    但是存在一个问题就是header如果没有add_exacuable进来就无法代码自动补全

    下面是解决办法:

    http://www.cnblogs.com/coderfenghc/archive/2012/07/08/2581734.html

    https://stackoverflow.com/questions/34846706/ros-with-qtcreator-autocompletion/34914661#34914661

     还存在一个问题就是加入bash -i -c 之后还是会出现无法找到catkin,连terminal里都tab不出来catkin_make了

    解决办法:

    一、先将build和devl清空

    二、手动source /opt/ros/kinetic/setup.bash

    三、按照http://www.cnblogs.com/hong2016/p/7550537.html

    刷新以下catkin缓存

    测试:

    新建一个terminal

    看看能不能catkin_make了

  • 相关阅读:
    JS解析JSON 注意事项总结
    Jquery 绑定标签事件
    System.Globalization.CultureInfo.InvariantCulture 解决不同地域字符串格式不同问题
    c# HttpWebRequest 模拟HTTP post 传递JSON参数
    Django REST framework (DRF) 不能用property或method排序
    django filters TypeError __init__() got an unexpected keyword argument 'lookup_type'
    DRF(Django Rest Framework)备忘
    测试服务器
    还款计算-复式记账
    Django 相关内容blog备忘
  • 原文地址:https://www.cnblogs.com/hong2016/p/6737582.html
Copyright © 2011-2022 走看看