精华内容
下载资源
问答
  • ROS系统编译cpp报错,如下。 /home/will/catkin_ws/src/gazebo_base20/src/odometry_publisher.cpp:1:10: fatal error: ros/ros.h: No such file or directory #include <ros/ros.h> ^~~~~~~~~~~ ...

    ROS系统编译cpp报错,如下。

    /home/will/catkin_ws/src/gazebo_base20/src/odometry_publisher.cpp:1:10: fatal error: ros/ros.h: No such file or directory
     #include <ros/ros.h>
              ^~~~~~~~~~~
    compilation terminated.
    gazebo_base20/CMakeFiles/odometry_publisher.dir/build.make:62: recipe for target 'gazebo_base20/CMakeFiles/odometry_publisher.dir/src/odometry_publisher.cpp.o' failed
    make[2]: *** [gazebo_base20/CMakeFiles/odometry_publisher.dir/src/odometry_publisher.cpp.o] Error 1
    CMakeFiles/Makefile2:500: recipe for target 'gazebo_base20/CMakeFiles/odometry_publisher.dir/all' failed
    make[1]: *** [gazebo_base20/CMakeFiles/odometry_publisher.dir/all] Error 2
    Makefile:140: recipe for target 'all' failed
    make: *** [all] Error 2
    Invoking "make -j8 -l8" failed
    

    没有成功添加ros的头文件。
    打开自己的package,打开CMakeLists.txt,添加:

    include_directories(${catkin_INCLUDE_DIRS})
    

    即可,完整的事例:

    cmake_minimum_required(VERSION 2.8.3)
    
    project(gazebo_base20)
    
    find_package(catkin REQUIRED COMPONENTS nav_msgs roscpp rospy tf)
    
    catkin_package()
    
    include_directories(${catkin_INCLUDE_DIRS})
    
    foreach(dir config launch meshes urdf)
    	install(DIRECTORY ${dir}/
    		DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
    endforeach(dir)
    
    add_executable(odometry_publisher src/odometry_publisher.cpp)
    if(nav_msgs_EXPORTED_TARGETS)
      add_dependencies(odometry_publisher ${nav_msgs_EXPORTED_TARGETS})
    endif()
    target_link_libraries(odometry_publisher ${catkin_LIBRARIES})
    
    

    遇到此类问题,显示缺什么头文件,而自己却又可以在系统中搜索到相应的头文件,这样就很好办,只要指明正确的路径即可。

    大致流程:
    如我要调用新版fcl的头文件,因为ros会自带一个版本,但是新版的用得更多,API不一样了。所以要调用新的fcl头文件,就需要重新指定路径。

    1) 先设定各种头文件所在的绝对路径
    如果不知道自己有没有对应的头文件,可以通过指令定位:
    locate xxx.h
    然后把对应的绝对路径输入CMakeLists.txt

    set(
      fcl_INCLUDE_DIRS
      "/home/will/Package/fcl/include"
      "/home/will/Package/fcl/build/include" 
      "/home/will/Package/fcl/test"
      "/home/will/Package/fcl/build/test"
    ) 
    

    其中fcl_INCLUDE_DIRS是指向它后面所有的路径的指针,这个名字可以自己取。

    2) 调用上面定义的名字,加到头文件调用的指令中

    include_directories(
     include_directories
     ${catkin_INCLUDE_DIRS}
     ${fcl_INCLUDE_DIRS}
    )
    

    3)此时再次编译,就可以发现,不会再报头文件缺失的错了
    特别注意的是,有些代码中,copy了别人的代码,别人可能指定头文件时,写的是相对路径,这时要注意修改,在写绝对路径时只需要写到对应相对路径的上一级即可,如下:
    假设要调用test.h 头文件,它保存在/home/will/fcl/test/中,一般各种包的头文件保存在/usr/include/中,别人调用时可能写的是

     #include <test/test.h>
    

    我们在添加自定义路径时,写成如下形式即可:

    set(
     fcl_INCLUDE_DIRS
     "/home/will/fcl/include"
    ) 
    

    不用写到test文件夹,这样反而搜索不到

    展开全文
  • 若直接点击.cpp文件,打开会出现如下图片 (针对还没有学习vim的使用的读者) 若想要再次修改该文件中代码,则鼠标右键选中想要打开的.cpp,打开方式选择用gedit打开即可。 注:在再次运行时,需要再次运用catkin_...

    若直接点击.cpp文件,打开会出现如下图片
    在这里插入图片描述
    (针对还没有学习vim的使用的读者)
    若想要再次修改该文件中代码,则鼠标右键选中想要打开的.cpp,打开方式选择用gedit打开即可。

    注:在再次运行时,需要再次运用catkin_make编译该文件,否则直接运行的话,运行结果与上次相同。

    展开全文
  • ros运行cpp文件

    2022-01-12 13:59:24
    1、 新建工作空间ws/src catkin_init_workspace ...在test文件夹中放入你的cpp文件 修改cmake文件 gedit ~/test_ws/src/test-cpp/CmakeLists.txt 更改:ws/src/pkg/cmakelist.txt cmake_minimum_requi

    1、

    新建工作空间ws/src
    catkin_init_workspace
    cd ~/ws
    catkin_make
    

    2、

    cd ~/ws/src
    catkin_create_pkg  test  roscpp  std_msgs  //test为文件夹,也是节点名字
    在test文件夹中放入你的cpp文件
    修改cmake文件
    gedit ~/test_ws/src/test-cpp/CmakeLists.txt
    

    更改:ws/src/pkg/cmakelist.txt

    cmake_minimum_required(VERSION 3.0.2)
    project(test)
    find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)
    catkin_package()
    include_directories( ${catkin_INCLUDE_DIRS})
    add_executable(exe_a src/a.cpp)    //exe_a是生成的可执行文件名字,在ws/devel/lib里
    add_executable(exe_b src/b.cpp)
    target_link_libraries(exe_a ${catkin_LIBRARIES})   
    target_link_libraries(exe_b ${catkin_LIBRARIES})
    

    3、

    在ws下编译catkin_make
    source devel/setup.bash
    

    $source devel/setup.bash 代码可以通过在.bashrc文件添加指令永久代替
    .bashrc为隐藏文件,ctrl+h可以显示出来

    启动roscore
    rosrun test my.cpp
    

    基础概念:
    Nodes:一个可以与其他Nodes通过ROS通信的可执行代码
    Messages:用来对着一个topic接收也叫订阅(subscribe)或者发布(publish)消息的数据结构
    Topics:Nodes可以订阅(subscribe)一个Topic以接收数据,也可以对着一个Topic发布(publish)消息来发送数据
    Master:Name service for ROS (i.e. helps nodes find each other)
    rosout:ROS equivalent of stdout/stderr
    roscore:Master + rosout + parameter server (parameter server will be introduced later)

    展开全文
  • ROS:创建、编译、运行流程

    千次阅读 2019-10-21 10:43:02
    在做高博的手写VIO课程的第二章作业,作为一个对ROS零基础的人来说,编译ros下的cpp、寻找可执行文件,都找了半天,记录一下流程,便于之后使用。 1.创建工作空间 mkdir -p ~/ROS_WORKSPACE/vio_imudata/src #...

          在做高博的手写VIO课程的第二章作业,作为一个对ROS零基础的人来说,编译ros下的cpp、寻找可执行文件,都找了半天,记录一下流程,便于之后使用。

    1.创建工作空间

    mkdir -p ~/ROS_WORKSPACE/vio_imudata/src  #创建一个工作空间
    cd ~/ROS_WORKSPACE/vio_imudata/src   #进入该目录
    catkin_init_workspace   #会产生一个Cmake.list文件在该目录下

    接着编译该空的工作空间

    cd ..  #回到与src同级别的路径下
    catkin_make

    这个时候会多了两个文件夹,一个devel和一个build。并且在devel下有几个setup.*sh,我们可以根据我们的终端类型来进行确定使用那个sh来激活环境变量,如我使用的是bash终端

    source devel/setup.bash #激活该工作空间的环境变量
    echo $ROS_PACKAGE_PATH #读取环境变量 /home/john/ROS_WORKSPACE/test/src:/opt/ros/melodic/share
    

    2.创建功能包(package)

    cd src #进入src空间
    
    catkin_create_pkg imu_data std_msgs roscpp rospy #创建功能包,imu_data为包名字,后面的为依赖

    这个命令会创建一个名字为imu_data的package,并在这个包下面生成了一系列的文件和文件夹:

    CMakeLists.txt  include  package.xml  src

    其中CMakeLists.txt是一个cmake的脚本文件,用来编译源文件的管理平台

    其中package.xml是配置文件,生产所需要的依赖

    src用来放置我们的源代码

    3.放置源代码

    我们把源代码放入到src文件中后,对CMakeList.txt和package.xml进行修改。

    4.源码的编译

    我使用的CMakeList.txt中的内容为:

    cmake_minimum_required(VERSION 2.8.3)
    project(vio_data_simulation)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      rosbag
    )
    
    
    catkin_package(
    
    )
    
    include_directories(
    # include
      ${catkin_INCLUDE_DIRS}
    )
    
    add_executable(${PROJECT_NAME}_node
        src/gener_alldata.cpp src/param.cpp src/utilities.cpp src/imu.cpp)
    target_link_libraries(${PROJECT_NAME}_node
      ${catkin_LIBRARIES}
    )
    
    add_executable(${PROJECT_NAME}_node_txt
        src/gener_alldata_txt.cpp src/param.cpp src/utilities.cpp src/imu.cpp)

    package.xml基本上不需要改动,会自动生成好。

    接着就是编译工作区:

    cd ~/ROS_WORKSPACE/test  #回到工作区中与src同一层的路径下
    catkin_make #进行编译

    5.程序的执行

    在完成编译之后,会生成一个可执行文件。我之前都是在工作空间中利用mkdir build, cmake  .. , make 这一系列操作进行编译的,一般都会在build中生成可执行文件,但是这次的不一样,没有在build中。刚开始以为没有生成来着,但是编译成功了,肯定是生成了,找了半天,发现在/home/john/ROS_WORKSPACE/vio_imudata/devel/lib/vio_data_simulation中,即在devel的文件夹下。

     

    展开全文
  • ROS学习:roscpp文件编写(初级)

    千次阅读 2019-10-24 14:32:13
    msg:msg文件是描述ros消息字段的简单文本文件。它用于为不同语言的消息生成源代码。 srv:srv文件描述了一个服务。它由两部分组成:请求和响应。 msg文件存储在包的msg目录中,srv文件存储在srv...
  • roscpp节点创建

    2021-04-10 16:53:09
    1.创建工作空间 mkdir -p ~/test_ws/src cd ~/test_ws/src catkin_init_workspace cd ~/test_ws catkin_make ...catkin_create_pkg test-cpp roscpp std_msgs ...3.在src中创建广播a.cpp ...在a.cpp
  • ROS 中 功能包 中将类的函数定义 与 声明 分开 文件写 用main.cpp 调用 如何配置 CmakeList.txt遇到问题的工程 这样搞了下一次工程实践 相关 记录那么还有个问题 ,要想用其它功能包的 类的 函数 怎么办?...
  • ros 编译 Python 文件

    千次阅读 2017-02-17 10:53:58
    参考自:....py并不是可编译的脚本文件,但是为了适应ros统一的编译体系,使ros识别出你写的Python node,所以也加入了Python的编译流程,主要目的就是让ros和系统找到你的Python程序在哪。 1.在工作区
  • 最近在学习ros节点编程,在工作空间下添加如下文件: message.h #ifndef MESSAGE_H #define MESSAGE_H extern int n; void init_ros(); void publisher(); void sublisher(); #endif message.cpp ...
  • ROS系统cpp创建节点node

    2021-08-25 21:00:01
    编译工作空间 cd ws catkin_make source devel/setup.bash 进入工作空间后使用catkin_make 编译 source可以多使用几次。 创建package cd src catkin_create_package {pkg_name} rospy roscpp rosmsg cd ../ ...
  • } 2、在test1目录下修改package.xml和CMakeLists.txt文件 package.xml不用修改,主要是修改CMakeLists.txt 找到下面这部分,去掉include前的注释 并在下面添加 add_executable(wrong src/wrong.cpp) target_link_...
  • ROS学习之cpp教程

    千次阅读 2016-07-16 18:20:12
    官方链接:  http://wiki.ros.org/roscpp_tutorials ... 节点(node)是ROS中值代连接到ros网络中的可执行文件。接下来,将会创建一个发布器节点(talker),  他将不断在ROS网络中广播消息。  转移到~目
  • ros-包下面新建c++文件

    千次阅读 2019-09-25 22:40:58
    当在包下面新建了一个c++文件后,需要修改CMakeLists.txt文件才能在终端运行这个文件 比如新建了一个test.cpp 要添加 ...我新建了一个cv_bridge_ros_to_opencv.cpp文件,因为用到了opencv库,所以...
  • ros 编译节点

    2020-05-26 18:52:30
    在编写简单的消息发布器和订阅...add_executable(talker src/talker.cpp) //第一个参数:节点名 第二个参数:文件位置 target_link_libraries(talker ${catkin_LIBRARIES}) add_executable(listener src/listener.c...
  • 1. 编译环境 目标:在VSCode写代码时,能够正常解析ROS相关头文件,并跳转。 流程 第一步:在执行 catkin_make 的时候指定参数 -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes 第二步:在 c_cpp_properties.json 中添加 ...
  • ROS学习--ROS编译系统

    2020-10-08 15:36:32
    ROS中我们直接编写cpp或py文件,而非可以直接执行的二进制文件,并且ROS的分布式架构使得交叉编译过程也是极为繁琐与困难,ROS最新提供了catkin编译系统,让开发者可以不用太考虑这些问题,它极大的简化了编译构建...
  • 看代码的时候遇到getParam和setParam等函数的应用,想自己编写一段程序运行一下,看看效果,于是转到了题目,作为小白要怎么在ROS下运行自己的程序呢,也是参照了几位博主的内容,在此表示感谢: ...
  • ROS不同于其他软件,需要在特定的工作区间下通过ros编译运行自己的程序。 假设电脑上已经安装好ROS,则 $ source /opt/ros/noetic/setup.bash //创建和编译一个 catkin workspace $ mkdir -p ~/catkin_ws/src $ cd ~...
  • 1.2 在文件夹.vscode中添加文件c_cpp_properties.json 将下面内容添加到文件c_cpp_properties.json中 { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**
  • 如果是因为不小心修改了catkin_ws/src的CMakeLists.txt文件的话,请参考我的上一篇博客 或许可解决您的问题: 网址:https://blog.csdn.net/weixin_44741023/article/details/91467907 然后,对于如何在ros上...
  • ROS多个头文件和多个源文件建立 初衷:想要将队里的自瞄代码加上ros跑,但是苦于自己研究多时,走了许多弯路,几经周折才学会头文件的添加,希望读者们能从我这篇文章学会点东西。 环境: ubuntu18.04+ROS melodic+...
  • ros系统中运行C++和.py文件--详细笔记

    千次阅读 2021-03-16 19:31:06
    说明:来自网络,自己做个笔记 第一:给.py文件访问权限 第二:在CMakeLists.txt中#install#中添加 install(PROGRAMS scripts/your_scripts.py DESTINATION ${CATKIN_PACKAGE_BIN_...然后:运行catkin_make进行编译
  • ROS编译之navigation包

    千次阅读 2020-05-23 11:14:41
    编译出现: exec:/home/xxx/catkin_ws/build/navigayion/amcl/cfg/AMCL.cfg:permission denied 字样时不要慌张。 ``解决方法:找到/home/xxx/catkin_ws/build/navigayion/amcl/cfg/AMCL.cfg 打开AMCL.cfg的权限...
  • 问题 解决方法 比如最上面一个“未定义的引用”,是对actionlib::xxx,原因就是找不到库,在cmake里加上依赖库就行。 在Cmakelist.txt中find_package下加 actionlib 如下:
  • 正常来说,按照ros教程(添加服务消息等等),添加类似依赖库,声明cpp文件即可: 1.如依赖这些包或者库 find_package(catkin REQUIRED COMPONENTS  cv_bridge  image_transport  roscpp  sensor_msgs...
  • 文章目录引言ROS系列文章ROS 工作空间创建工作空间编译工作空间导出环境变量创建功能包添加源代码修改构建规则编译功能包验证参考 引言 其实从前几篇文章中我也有提及过ROS 工作空间,而且代码也是在工作空间中编译...
  • CMakeList配置之编译多个.cpp文件

    千次阅读 2017-08-09 21:37:40
    上次提到AndroidStudio2.2...那么问题来了,通过该方式生成的配置文件默认是只native-lib.cpp一个cpp文件的,那么怎么配置编译多个.cpp文件呢? 以之前发布的 NDK下获取IEIM并且使用MD5算法加密 为例,我们另外
  • ROS编译成功 无法运行节点

    千次阅读 2020-09-30 10:18:42
    ROS编译成功 无法运行节点1.概述2.新建工作空间3.CMakeLists文件4.错误示例5.正确示例6.总结7.参考链接 1.概述 简单说一下ROS中其他项目可工作,但是ROS不能找到可执行文件时的处理办法,希望额给大家提供帮助,同时...
  • 有时候我们通过rosrun运行的.cpp文件中会打开或保存某个文件,而此时文件名如果直接写入程序里会有些不方便,每次更改文件名都需要再编译一次。。。 最近在对实验的点云数据进行处理时就遇到了这个问题,每个ros包中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,319
精华内容 2,927
关键字:

ros编译cpp文件

友情链接: JSPBOOKSHOP.zip