一、ROS的工程结构(文件系统级)

1.1 catkin工作空间

Catkin是ROS定制的编译构建系统,对CMake的扩展,编写原则和CMake很像。

--》Catkin是用来编译ROS程序的

--》Catkin就是一个文件夹,用来组织和管理ROS功能包。对它的创建,修改,克隆都在这里面。

Catkin_make命令

---帮助初始化catkin工作空间(catkin workspace)

#创建工作空间
mkdir -p ~/catkin_ws/src
cd ./catkin_ws
catkin_make

---编译--》一般编写好代码需要进行catkin_make,系统帮我们自动构建,生成我们的目标文件。

cd ./catkin_ws
catkin_make   #编译
source ~/catkin_ws/devel/setup.bash #编译完成后要source刷新环境

初学者一定要注意的地方:

1.catkin_make之前一定要回到catkin_workspace,在其他目录下进行catkin_make会失败的。

2.在catkin_make后应source一下工作空间里面的setup.bash(将刚刚编译完的workspace刷新到环境变量里面去,这样系统才会知道我们生成的ROS可执行文件放在哪里,然后才能运行)

初始化catkin工作空间后,会多出两个文件夹(build和devel),其中build里面放的是cmake&catkin缓存信息和中间文件、devel放的是生成的目标文件(头文件,动态链接库,静态链接库,可执行文件)。

src文件夹里是真正写代码的地方

Rosbuild是ROS早期采用的编译系统,目前主流的ROS项目已不采用;catkin是为了取代rosbuild。

package是catkin编译的基本单元,catkin编译的对象就是一个又一个的package。catkin编译系统在编译的时候会在src目录下递归地查找每一个package,可以将几个package放到一个文件夹下。

package

package是ROS软件的基本组织形式(ROS就是由一个个package组成的,package就是ROS的细胞)

package是catkin编译的基本单元,catkin编译的对象就是一个又一个的package。编译系统会一个个寻找package,然后生成目标文件。

多个可执行文件

一个package可以包含多个可执行文件(节点)

一个软件包如果想被catkin编译系统认定为是一个package,至少包含CMakeLists.txt,package.xml文件。

CMakeLists.txt:规定了catkin编译规则(告诉编译系统怎样编译package里面的代码,要编译哪些文件,需要哪些依赖,生成哪些可执行目标,怎样链接等);编译出现了什么问题,就与CMakeList.txt有关

package.xml:定义了package的属性(包名,版本号,作者,依赖项等)

manifest.xml:比较老的package.xml写法,是rosbuild编译系统采用的包信息清单。

有了CMakeList.txt和manifest.xml文件就构成了一个精简的package:

note:

* 实现节点的语言可以不同

代码文件:

ROS里面可执行程序有两种来源,一种是可执行脚本(Linux的shell脚本,python脚本),二种是C++文件(头文件,源文件)。

在package下:

(1)建一个scripts路径用来放可执行脚本*.py和*.sh脚本

(2)建一个include和src路径分别放C++头文和源文件

(3)src里面也可以放置Python源文件

package下还可以放一些我们自定义的通信格式,如:消息(message),服务(service),动作(action)

package里面还可以放置launch以及配置文件config:launch文件(*.launch)和配置文件(*.yaml)

如果有多个可执行文件要同时 运行,直接把他们组织到一个launch文件里就可以的。

Launch文件就是启动文件

launch作用就是可以一次性运行多个可执行文件。

02-ROS的工程结构相关推荐

  1. ROS入门 工程结构

    这部分对应MOOC里面的第二课-工程结构,主要是讲解了一些ROS的文件路径和控制台创建ROS工程的一些基本操作. 一.catkin工作空间与编译系统 所谓catkin操作空间,实际上就是ros里面最高 ...

  2. ROS入门笔记(七):详解ROS文件系统

    ROS入门笔记(七):详解ROS文件系统 文章目录 01 Catkin编译系统 1.1 Catkin特点 1.2 Catkin工作原理 1.3 使用`catkin_make`进行编译 02 Catki ...

  3. ROS通信架构(上)

    ROS通信架构(上) 徐凯_xp 2019.04.30 14:23:54字数 1,821阅读 105 Node&Master 在ROS的世界里,最小的进程单元就是节点(node).一个软件包里 ...

  4. 终于有人把ROS机器人操作系统讲明白了

    导读:机器人是多专业知识交叉的学科,通常涉及传感器.驱动程序.多机通信.机械结构.算法等,为了更高效地进行机器人的研究和开发,选择一个通用的开发框架非常必要,ROS(Robot Operating S ...

  5. 第十五届全国大学生智能车竞赛线下比赛成绩和奖项

    作者:卓晴博士,清华大学自动化系 更新时间:2020-08-30 Sunday 01百度深度学习创意组 1.现场比赛成绩和奖项 学校 队伍 深度学习 如影随形 总时间 获奖等级 华中科技大学 华中科技 ...

  6. 史上最全slam从零开始-总目录

    讲解关于slam一系列文章主要分为以下几个板块,其中的序列号代表其学习难度,入门学员建议从01开始学习,相同序列号表示其难度相当 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{ ...

  7. 【Addicted TO ROS】ROS工程结构

    ROS工程结构 ROS工程结构 `catkin_ws`工作空间 概述 catkin workspace初始化后的目录结构 src 功能包 `package` `CMakeLists.txt`文件 `p ...

  8. (02)Cartographer源码无死角解析-(01) 环境搭建,demo运行,ROS一键安装_清除各种疑难杂症

    讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析链接如下: (02)Cartographer源码无死角解析-(00)目录_最 ...

  9. ROS学习笔记02:ROS架构与基础

    文章目录 一.ROS架构 二.第一个ROS例程 (一)turtlesim功能包 1.话题与服务 2.背景色参数 (二)控制乌龟运动 1.启动节点管理器 2.启动乌龟仿真器节点 3.启动键盘控制节点 三 ...

最新文章

  1. Linux性能监测工具Nmon介绍及其使用
  2. 云端大数据实战记录-大数据推荐
  3. 使用Hibernate加载或保存图像-MySQL
  4. android 同根动画_android 动画系列 (1) - tween 动画(view动画)
  5. oracle有sysdata,Oracle基础
  6. LeetCode Length of Longest Fibonacci Subsequence
  7. android自定义透明圆形,Android progressdialog自定义背景透明的圆形进度条类似于Dialog...
  8. python执行命令不阻塞_通过python 执行 nohup 不生效的解决
  9. js调用数科阅读器_pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
  10. YOLOv5图像识别显示中文标签
  11. Android jobb 工具使用详解
  12. python基础ppt_Python入门之你必须了解的基础知识
  13. 营业增加值公式简要解析
  14. coap 返回版本信息_CoAP协议学习笔记
  15. 【互联网人的英语】把技能当知识,是学英语最大的坑
  16. PreferenceActivity 分屏显示 分析
  17. VC6.0修改工程名字方法
  18. 输入年份和天数计算出几月几号
  19. 若依微服务版登录流程源码分析1
  20. 骑行中央公园,探索纽约“后花园”别样的美

热门文章

  1. 消费者怎么看待 then, catch, finally
  2. alter user mysql_危险的Alter User权限
  3. 使用Springboot StringRedisTemplate 在单位时间内对发送手机号验证码次数做限制,半小时最多发送5次验证码
  4. 2015年7月29日工作总结
  5. 计算机硬件检测使用的工具是什么,电脑硬件检测工具hwinfo32使用教程
  6. 2020年Java工程师就业前景分析
  7. 【解决方案】ValueError: Some of types cannot be determined by the first 100 rows
  8. c++ 按值传递(Byval) 和 按地址传递(ByRef)
  9. 一款通过人工智能AI计算无损放大图像软件
  10. ADC时钟与采样周期的作用