ROS教程(四):编译ROS程序包

ROS教程(三):创建程序包及节点(图文) 文章目录前言一、创建功能包二、创建节点三、修改CMakeList.txt四、配置package.xml文件五、编译并执行1.编译2.执行六、rostopic工具总结 前言 根据前篇教程已经创建好了工作空间,并已经成功生效了环境变量,接下来创建一个功能包 一、创建功能包 功能包的名字根据我们这个功能包的作用来命名。比如我现在的功能包是用来学习ROS的C++编程,那么我的功能包名称就叫做learning_cplus。 打开终端,输入下面指令。 cd catkin_ws/src catkin_create_ 阅读详情

编译ROS程序包

Description:  本教程介绍ROS程序包的编译方法

Tutorial Level:  BEGINNER

Next Tutorial:   理解 ROS节点  

编译程序包

一旦安装了所需的系统依赖项,我们就可以开始编译刚才创建的程序包了。

注意: 如果你是通过apt或者其它软件包管理工具来安装ROS的,那么系统已经默认安装好所有依赖项。

记得事先source你的环境配置(setup)文件,在Ubuntu中的操作指令如下:

$ source /opt/ros/groovy/setup.bash

使用 catkin_make

catkin_make 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_make是在CMake标准工作流程中依次调用了cmake 和 make。

使用方法:

# 在catkin工作空间下
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

CMake标准工作流程主要可以分为以下几个步骤:

注意: 如果你运行以下命令是无效的,因为它只是一个演示CMake工作流程的例子。

# 在一个CMake项目里
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install  # (可选)

每个CMake工程在编译时都会执行这个操作过程。相反,多个catkin项目可以放在工作空间中一起编译,工作流程如下:

# In a catkin workspace
$ catkin_make
$ catkin_make install  # (可选)

上述命令会编译src文件夹下的所有catkin工程。想更深入了解请参考REP128。 如果你的源代码不在默认工作空间中(~/catkin_ws/src),比如说存放在了my_src中,那么你可以这样来使用catkin_make:

注意: 运行以下命令时无效的,因为my_src不存在。

# In a catkin workspace
$ catkin_make --source my_src
$ catkin_make install --source my_src  # (optionally)

对于catkin_make更高级的使用方法,请参考catkin/commands/catkin_make

开始编译你的程序包

对于正要马上编译自己代码的读者,请同时看一下后面的(C++)/(Python)教程,因为你可能需要修改CMakeLists.txt文件。

按照之前的创建一个ROS程序包教程,你应该已经创建好了一个catkin 工作空间 和一个名为beginner_tutorials的catkin 程序包。现在切换到catkin workspace 并查看src文件夹:

$ cd ~/catkin_ws/
$ ls src
  • beginner_tutorials/  CMakeLists.txt@  

你可以看到一个名为beginner_tutorials的文件夹,这就是你在之前的 catkin_create_pkg教程里创建的。现在我们可以使用catkin_make来编译它了:

$ catkin_make

你可以看到很多cmake 和 make 输出的信息:

  • Base path: /home/user/catkin_ws
    Source space: /home/user/catkin_ws/src
    Build space: /home/user/catkin_ws/build
    Devel space: /home/user/catkin_ws/devel
    Install space: /home/user/catkin_ws/install
    ####
    #### Running command: "cmake /home/user/catkin_ws/src
    -DCATKIN_DEVEL_PREFIX=/home/user/catkin_ws/devel
    -DCMAKE_INSTALL_PREFIX=/home/user/catkin_ws/install" in "/home/user/catkin_ws/build"
    ####
    -- The C compiler identification is GNU 4.2.1
    -- The CXX compiler identification is Clang 4.0.0
    -- Checking whether C compiler has -isysroot
    -- Checking whether C compiler has -isysroot - yes
    -- Checking whether C compiler supports OSX deployment target flag
    -- Checking whether C compiler supports OSX deployment target flag - yes
    -- Check for working C compiler: /usr/bin/gcc
    -- Check for working C compiler: /usr/bin/gcc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Using CATKIN_DEVEL_PREFIX: /tmp/catkin_ws/devel
    -- Using CMAKE_PREFIX_PATH: /opt/ros/groovy
    -- This workspace overlays: /opt/ros/groovy
    -- Found PythonInterp: /usr/bin/python (found version "2.7.1") 
    -- Found PY_em: /usr/lib/python2.7/dist-packages/em.pyc
    -- Found gtest: gtests will be built
    -- catkin 0.5.51
    -- BUILD_SHARED_LIBS is on
    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -- ~~  traversing packages in topological order:
    -- ~~  - beginner_tutorials
    -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    -- +++ add_subdirectory(beginner_tutorials)
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/user/catkin_ws/build
    ####
    #### Running command: "make -j4" in "/home/user/catkin_ws/build"
    ####

catkin_make首先输出它所使用到的每个空间所在的路径。更多关于空间的信息,请参考REP128和catkin/workspaces。需要注意的是由于这些空间存在默认配置的原因,有几个文件夹已经在catkin工作空间自动生成了,使用ls查看:

$ ls
  • build
    devel
    src

build 目录是build space的默认所在位置,同时cmake 和 make也是在这里被调用来配置并编译你的程序包。devel 目录是devel space的默认所在位置, 同时也是在你安装程序包之前存放可执行文件和库文件的地方。

现在我们已成功编译了一个ROS程序包,接下来我们将介绍ROS节点.

ROS教程(四):RVIZ使用教程(详细图文) 前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ 阅读详情

相关推荐

ROS入门级教程

本文讲述ROS的入门级教程,介绍ROS的安装,ROS程序的主体架构、核心概念、已有程序的编译与使用、常用的调试工具和一些指令。

weixin_50431732的博客 1万+

Makefile:140: recipe for target ‘all‘ failed make: *** [all] Error 2 Invoking “make -j4 -l4“ failed

Makefile:140: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j4 -l4" failed

weixin_59229164的博客 1043

ROS教程(一):ROS安装教程(详细图文)

前言 关于ROS(Robot OS 机器人操作系统),估计看这个教程的人已经大概知道是啥了,我在这就不废话了。 首先对于ROS的安装,在它的官方网站: http://wiki.ros.org/ROS/Installation 中有详细说明。但是。。。上面的教程都是英文的,如果感觉略有压力(本人就是)。所以 文章目录 前言一、版本选择二、开始安装2.1 软件中心配置2.2 添加源2.3 安装2.4 配置ROS环境到系统三、验证ROS

Leslie的博客 27万+

ROS入门_1.7 编译ROS程序包

编译程序包 一旦安装了所需的系统依赖项,我们就可以开始编译刚才创建的程序包了。 注意: 如果你是通过apt或者其它软件包管理工具来安装ROS的,那么系统已经默认安装好所有依赖项。 记得事先source你的环境配置(setup)文件,在Ubuntu中的操作指令如下: $ source /opt/ros/groovy/setup.bash 使用

ShuaiWang优快云的博客 1371

深入了解ROS的细节,ROS文件系统、创建ROS程序包、编译ROS程序包、理解ROS节点、理解ROS话题(topic)

深入了解ROS的细节 这篇博客旨在深入地了解ROS平台,详细解析多个命令的功能以及利用场景,这里要用到一个模拟器产生一个小乌龟的节点来演示各个命令的使用 这篇文章讲的是关于ROS平台的细节信息,建立在安装好ROS的前提下,安装过程和创建工作空间参考 ROS文件系统介绍 文件系统概念 Packages:软件包是ROS应用层程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动...

习惯积淀的博客 1483

ROS学习笔记(2):在ROS中使用OpenCV进行简单的图像处理---代码实现篇

再上一篇blog中,笔者总结了ROS系统中使用OpenCV库的进行简单图像处理的原理、系统相关的设置和程序包的下载。在这篇博客中,笔者将从代码层面介绍如何实现在ROS系统中读取图片,并使用OpenCV进行图像处理,在返回结果。

Robogreen的博客 2万+

ROS qt gui catkin_make错误 make -j4 -l4

The steps: sudo gedit /usr/include/boost/type_traits/detail/has_binary_operator.hpp Modify “namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {…}” to " #ifndef Q_MOC_RUN namespace BOOST_JOIN(BOOST_TT_T...

wenhui0870的博客 2561

Rust练手:从零手撸RISC-V架构虚拟机(一)(附完整代码)

使用Rust实现一个简单的RISC-V架构的CPU雏形,支持add,sub,addi三个指令。

qq_45983373的博客 2571

完美安装Ubuntu18.04+melodic+gmapping(解决Invoking “make -j4 -l4“ failed等错误)

本人在安装gmapping时,使用了网上各种教程,之后在catkin_make时出现了各种bug,包括Invoking “make -j4 -l4” failed,‘tf2_ros::TransformListener::TransformListener(tf2::BufferCore&, ros::NodeHandle const&, bool)’未定义,ERROR: cannot launch node of type [gmapping/slam_gmapping]: Can’t locate no

weixin_43398590的博客 3057

从PSDK到ROS节点:实战GPS数据发布与CMake配置

本文详细介绍了如何从大疆PSDK获取GPS数据并封装为ROS节点的实战过程,包括PSDK编译、GPS数据订阅、ROS节点实现及CMake配置优化。通过具体代码示例和调试技巧,帮助开发者快速实现无人机传感器数据与ROS系统的集成,提升开发效率。

weixin_30843605的博客 458

Diffix3D+复现

上下载模型,将其放在一个目录中,并将目录名填在demo代码中from_pretrained的cache_dir参数里。目录结构应该是"<PATH>/nvidia/difix/…给的requirements文件中pytorch和xformers的版本没有指定,这里测试过以下版本,可以成功运行。将readme中的demo代码新建一个python脚本复制进去,然后将脚本放在src目录中运行。如果遇到网络问题无法加载huggingface上的预训练模型,可以手动从。如果出现,以下错误重新。

NeverMakeIt的博客 1087

3D激光SLAM--LOAM编译与运行

注意本文的安装日期 2018/10/08,如果距离该时间较远,仅作为参考. 前提:安装好必要的依赖库,功能包. 编译: $ cd /LOAM/catkin_ws/src $ git clone https://github.com/laboshinl/loam_velodyne.git  在catkin_make工作目录下编译 $ catkin_make -DCMAKE_BUILD_TYPE=Re...

weixin_40717346的博客 5049

基于MySQL的京东用户行为分析

对京东用户行为的分析,利用AARRR模型进行分析。

SelenaSelena的博客 1911

ROS入门(四)编译ROS程序包

描述 :本教程介筛ROS程序包的编译方法 1编译程序包 一旦安装的所需的系统依赖项,我们就可以开始编译刚才创建的程序包了。 注意: 如果你是通过apt或者其它软件包管理工具来安装ROS的,那么系统已经默认安装好所有依赖项。 记得事先source你的环境配置(setup)文件,在Ubuntu中的操作指令如下: $ source /opt/ros/groovy/setup.bash 使用cat...

小鱼儿飞丫飞 2402

【JCR一区级】鱼鹰算法OOA-CNN-LSTM-Attention故障诊断分类预测【含Matlab源码 5711期】

鱼鹰算法OOA-CNN-LSTM-Attention故障诊断分类预测 完整代码和数据,方可运行;数据可直接替换,适合小白!可提供运行操作视频!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 3601

DaVinci配置DID之二:工具链配置

本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。1,CDD准备2,工具链配置3,代码实现4,验证结果本文讲述流程2话不多说,走你~博主也是AutoSar小白,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在下章关于代码具体实现的博文再相会哈~

weixin_48498880的博客 5743

ROS入坑 创建与编译ROS程序包

创建ROS程序包一个catkin程序包packages由什么组成?在catkin工作空间中的程序包创建一个catkin程序包程序包依赖关系一级依赖间接依赖自定义你的程序包自定义 package.xml描述标签维护者标签许可标签依赖项标签最后完成简单清爽的package.xml自定义 CMakeLists.txt编译ROS程序包使用 catkin_make开始编译你的程序包 一个catkin程序包packages由什么组成? 一个程序包要想称为catkin程序包必须符合以下要求: 程序包必须包含catki

GungnirsPledge的博客 1613

PyTorch实战(21)——扩散模型(Diffusion Model)

扩散模型通过简单的噪声扩散过程,就能创造出高质量的超现实图像。在本节中,我们首先学习了扩散如何用于图像生成,了解了扩散模型的内部运作机制。随后基于动漫图像数据集,使用 PyTorch 和 Hugging Face 框架训练和运行自定义扩散模型,生成逼真动漫图像。

盼小辉丶的博客 3387

ROS教程4: 编译ROS程序包

文章目录catkin_make命令说明开始编译程序包附录:如何用C++ 和Python写一个简单的订阅器和发布器 catkin_make命令说明 安装所需的系统依赖项之后,就可以编译刚才创建的程序包。反之,如果缺少对应的依赖包,编译将不能成功。 幸运的是:如果我们通过apt或者其他软件包管理工具来安装ROS,那么系统就会默认安装好所有的依赖项。 编译之前一般需要运行setup.bash将当前工作空...

weixin_41621736的博客 813

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ROS总结——ROS程序包(二)

编译ROS程序包本博客是对http://wiki.ros.org/上ROS教程的学习总结,欢迎大家交流学习。在创建ROS程序包讲解了ROS程序包的创建,本部分讲解如何使用catkin_make对ROS程序包的编译。 1.使用 catkin_make catkin_make 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_make是在CMake标准工作流程中依次调用了

YongqiangGao的专栏 1237

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

编译ROS程序包

编译ROS程序包catkin & rosbuild使用 catkin_make开始编译 catkin & rosbuild 一旦安装了所需的系统依赖项,我们就可以开始编译刚才创建的程序包了。 记得事先source你的环境配置(setup)文件。 使用 catkin_make catkin_make 是一个命令行工具,它简化了catkin的标准工作流程。你可以认为catkin_...

強雲的博客 491

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ROS教程3:创建ROS程序包

创建ROS程序包1 catkin程序包组成和文件结构2 创建catkin程序包3 解析程序包依赖关系3.1 查看程序包的一级依赖3.2 间接依赖:查看一级依赖包的依赖3.3 查看程序包的所有依赖包4 package.xml和CmakeLists.txt的解读和自定义 1 catkin程序包组成和文件结构 catkin程序包必须满足以下条件: 每个目录下只有一个程序包 包含package.xml ...

吉大秦少游 1084

ros回炉3-编译ros程序包

编译ros程序包 *基于indigo 1.使用catkin_make catkin_make是一个命令行工具,可以将其理解为在CMake标准工作流程中依次调用了camke和make。 使用方法:   # 在catkin工作空间下 $ catkin_make [make_targets] [-DCMAKE_VARIABLES=...] 通常我们会同时编译src文件夹下的所有catk...

Jiali Zhang的博客 1567
上一篇: ROS教程(三):创建ROS程序包
下一篇: ROS教程(五):理解 ROS节点
沫尘雪痕
博客等级 码龄16年 166粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值