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

NC数据预处理避坑指南:从MATLAB读取到GeoTIFF导出,解决坐标翻转与值域异常

本文详细解析了NC数据预处理中的常见问题,包括MATLAB读取时的坐标翻转与GeoTIFF导出时的值域异常。通过实战案例,介绍了如何解决矩阵方向错乱、处理FillValue与scale_factor、精准移植空间参考等关键问题,帮助研究者高效完成气象数据的批量处理与GIS兼容性验证。

weixin_30788619的博客 654

完美安装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

2025东方财富笔试考什么?cata能力测评攻略|答题技巧真题分享

4月10日-4月20日 专业笔试(行测+金融知识混合双打) 4月25日-5月10日 面试车轮战(AI面+半结构化+压力面) 5月15日起 Offer发放(谈薪必杀技:对标同花顺/雪球)这里不仅是金融极客的乐园,更是**“年薪30万管培生计划”**的主战场——你将用代码重构K线,用算法预判市场,成为资本市场的“数字先知”。东方财富,中国金融信息服务领域的“隐形冠军”,以**“金融数据+互联网”双擎驱动**,打造了覆盖证券、基金、期货的全生态交易平台。:• “我总坚持自己的方案”(HR:团队毒药!

Dgntsj的博客 3262

1 硬件工程师笔面试高频知识考点真题及解析——电阻

本文系统介绍了电阻的基础知识、选型要点及各类特殊电阻的应用。主要内容包括:1. 电阻选型需考虑阻值、封装、功率、精度、耐压等参数;2. 高频信号优先选用小封装电阻以减小寄生参数;3. 采样电阻需高精度、低温漂以保证测量准确性;4. 详细解析了上拉/下拉电阻、0欧电阻、磁珠等元件的特性与区别;5. 介绍了压敏电阻、热敏电阻等特殊电阻的工作原理及应用场景;6. 阐述了阻抗匹配的重要性及常见匹配方法。文章为电子工程师提供了全面的电阻选型与应用指南。

XU157303764的博客 2868

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

AutosarMCAL开发——基于TC3x系列时钟系统浅析

本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 889

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

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

小鱼儿飞丫飞 2402

YOLOv8 交通流量监测详解

本文介绍了一个基于YOLOv8的交通流量监测系统,该系统通过深度学习技术实现车辆实时检测、跟踪和分类。系统核心功能包括:1)使用YOLOv8模型检测道路车辆并进行持续跟踪;2)按方向和车型统计车流量;3)支持多区域流量监测和数据可视化。文章提供了完整的代码实现示例,涵盖基础车辆检测、视频流处理和高级数据分析功能。系统还可进一步优化性能,如使用轻量级模型、GPU加速等,并建议扩展车速估算、密度分析等功能。该方案为交通管理提供了有效的实时监测和决策支持工具。

u010117029的博客 346

使用VNA(Vector Network Analyzer)对S参数进行去嵌(一)

传统上,RF和微波组件被设计成具有同轴接口的封装。通过连接一系列这些单独的同轴设备,可以容易地制造复杂的系统。使用使用类似同轴接口的标准测试设备可以很容易地测量这些部件和系统的性能。然而,现代系统需要更高水平的组件集成、更低的功耗和更低的制造成本。射频组件正在迅速从使用昂贵同轴接口的设计转向使用印刷电路板和表面贴装技术(SMT)的设计。传统的同轴接口甚至可以从最终产品中取消。这就给设计者留下了用需要同轴接口的测试设备测量这些射频和微波组件性能的问题。解决方案是使用连接同轴和非同轴传输线的测试夹具。

小孟同学的博客 1万+

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

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

GungnirsPledge的博客 1613

我装了10个ClawHub技能,这些最好用!

ClawHub就是Clawdbot的"应用商店"。Clawdbot是手机ClawHub是App Store技能就是各种App装了技能,Clawdbot才能干更多事。这个技能解决了我的信息过载问题。为什么装我订阅了很多Newsletter。每天收到一堆长文章,根本看不完。怎么用“总结这篇文章的核心观点”“把这个Newsletter提炼成3个要点”“这篇技术博客有哪些可以实践的建议?安装命令真实体验现在我收到长文章,直接转发给Clawdbot。它会提炼出核心要点和行动清单。

Maynor的博客 6102

ROS教程4: 编译ROS程序包

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

weixin_41621736的博客 813

西安交通大学软件学院——分布式系统练习题(综合题)

摘要:本文探讨了分布式系统的核心特性与关键问题。首先阐述了分布式系统的8种透明性特性,包括访问、定位、迁移等。然后通过具体案例分析了分布式事务的回滚机制、域名解析的迭代与递归过程、不同分布式系统的异同比较。重点讨论了RPC通信中客户端/服务器崩溃的处理方法,包括消灭、再生和到期三种策略。最后介绍了Lamport时间戳算法在进程通信中的应用及问题解决方案。全文涵盖了分布式系统设计中的透明性、可靠性、一致性等核心问题。

qq_73044452的博客 204

霍尼韦尔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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

编译ROS程序包

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

強雲的博客 491

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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、付费专栏及课程。

余额充值