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了
ros结合catkin_make和qtcreator的更多相关文章
- ROS关于cv_brige的使用
最近想使用OpenCV 和ROS实现点云的拼接,实现三维重建,那么在学习了kinect的基本的使用方法以后我们知道,直接使用ROS 的包即可得到点云,深度图,rgb图等信息, roslaunch op ...
- 使用QtCreator作为ROS调试器
如果你用过QtCreator,你一定会喜欢上它. 流畅的速度,强大的功能,优雅的外观,友好的界面,一切让人如此舒服.而且它支持从命令行作为调试器启动,只需加上-debug exe即可. 因此我想如果能 ...
- ubuntu16.04运行ros的时候编译工作空间catkin_make出现的一个问题Could not find a package configuration file provided by
最近在进行ros里面的gazebo仿真之前需要对自己创建的工作空间进行编译,但是进行编译的时候输入catkin_make出现如下错误提示 查阅ROS问答社区之后发现两个比较有用的链接,如下 https ...
- 创建ROS 工作空间时出现:程序“catkin_init_workspace”尚未安装,程序“catkin_make”尚未安装。
问题:创建ROS 工作空间时出现:程序“catkin_init_workspace”尚未安装,程序“catkin_make”尚未安装. 解决方法: source /opt/ros/kinetic/se ...
- ROS catkin_make error Could not find a package configuration file provided by "actionlib_msgs"
在使用ROS catkin_make编译的时候,出现类似如下错误 CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cma ...
- Learning ROS: Ubuntu16.04下kinetic开发环境安装和初体验 Install + Configure + Navigating(look around) + Creating a Package(catkin_create_pkg) + Building a Package(catkin_make) + Understanding Nodes
本文主要部分来源于ROS官网的Tutorials. Ubuntu install of ROS Kinetic # Setup your sources.list sudo sh -c 'echo & ...
- 删除某个ros包之后catkin_make冒错
CMake Error at /home/ubuntu/Workspaces/rosProject/workspace1/devel/share/costmap_2d/cmake/costmap_2d ...
- ROS编译时(catkin_make)找不到bullet,Could NOT find Bullet (missing: BULLET_DYNAMICS_LIBRARY
sudo apt-get install libbullet-dev
- How to build a GUI in ROS with Qt / C++
p { margin-bottom: 0.1in; direction: ltr; line-height: 120%; text-align: left; widows: 2; orphans: 2 ...
随机推荐
- sprintf()函数使用异常
调试STM32F103,比如如下代码:使用springf函数,这个函数是把最后两个参数先格式化成字符串 ,输出到ERROR_STRING,如果他们合并的长度大于30会出现深情况? ] sprintf( ...
- centos7.3配置guacamole
目录 1 安装guacamole所需要的依赖库 2 安装配置tomcat,架设服务 2.1 下载tomcat 2.2 配置环境变量,使tomcat可以找到guacamole客户端配置 2.3 安装gu ...
- 嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(上)
随着课内的学习,我想把每节课所学记录下来,以作查阅.以饲读者.由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文. 本次所介绍内容是关于Cortex-M3的基础内容. - ...
- Python写的计算器程序(主要目的在于熟悉下正则表达式)
import res = '1-2*((60-30-(-40/5)*(9-2*5/3-7/3*99/4*2998-10*568/14.3))+(-4*3)/16-3)'s2 = 1-2*((60-30 ...
- 过滤器(Filter)和Nuget
一.过滤器 AOP(面向切面编程)是一种架构思想,用于把公共的逻辑放到一个单独的地方,这样就不用每个地方都写重复的代码,比如程序中发生异常,不用每个地方都try catch 只要在(golbal的Ap ...
- iptables的配置文件/etc/sysconfig/iptables不存在 linux防火墙开关命令
某linux服务器,使用 cat /etc/sysconfig/iptables命令时, 找不到文件. 1. service iptables status 使用该命令检查状态 如果之前找不到配置文件 ...
- STL之queue&stack使用简介
queue 队列也是一个线性存储表,与后进先出的堆栈不同,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出(First In First Out) 表.插入一端称为队尾,删除一 ...
- HDU 4750 Count The Pairs (离线并查集)
按边从小到大排序. 对于每条边(from, to, dist),如果from和to在同一个集合中,那么这条边无意义,因为之前肯定有比它更小的边连接了from和to. 如果from和to不属于同一个集合 ...
- NYOJ 42 一笔画
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- jQuery基础知识点(上)
jQuery是一个优秀的.轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),而jQuery2.0及后续版本将不再支 ...