【ROS】详解ROS文件系统

news2024/11/26 16:28:49

参考:ROS入门笔记(七):详解ROS文件系统 - 少云清的文章 - 知乎
https://zhuanlan.zhihu.com/p/338042120

ROS文件目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的软件包指的是src下的文件夹,因为在ROS下创建软件包的流程如下:
在这里插入图片描述
把软件包名字定下来后,还需要添加依赖,最后才能成一个软件包,然后再编写代码文件。
在这里插入图片描述

CMake、CMakeLists.txt 和 make、Makefile
在这里插入图片描述

Catkin

Catkin 是 ROS(Robot Operating System)中用于构建和管理软件包的构建系统,它在 ROS 的工作空间中负责处理项目的编译、安装和依赖关系管理。以下是关于 Catkin 编译系统的详细介绍:

### 1. 定义
Catkin 是 ROS 1.x 和 ROS 2.x 的默认构建系统,基于 CMake,并提供了一些 ROS 特有的功能。它允许用户以模块化的方式组织和管理 ROS 软件包。

### 2. 主要特点
- **基于 CMake**:Catkin 使用 CMake 作为基础,可以利用 CMake 的强大功能,同时为 ROS 开发提供了一些方便的扩展。
- **工作空间概念**:Catkin 采用工作空间(workspace)的概念,允许用户将多个软件包组织在一个目录下,便于管理和编译。
- **依赖管理**:Catkin 可以自动处理包之间的依赖关系,确保在编译时按照正确的顺序构建软件包。
- **支持多种语言**:尽管主要用于 C++ 和 Python,但 Catkin 也支持其他语言的集成。

### 3. 工作流程
使用 Catkin 编译系统的基本工作流程如下:

1. **创建工作空间**:
   ```bash
   mkdir -p ~/catkin_ws/src
   cd ~/catkin_ws/src


2. **创建软件包**:
   使用 `catkin_create_pkg` 命令创建新软件包。例如:
   ```bash
   catkin_create_pkg my_package std_msgs rospy roscpp


3. **编写 CMakeLists.txt 和 package.xml**- `CMakeLists.txt`:定义包的构建规则、依赖和目标。
   - `package.xml`:描述包的信息(如名称、版本、依赖关系等)。

4. **编译工作空间**:
   使用 `catkin_make` 或 `catkin build` 命令编译工作空间:
   ```bash
   cd ~/catkin_ws
   catkin_make


5. **源环境设置**:
   编译完成后,需要源环境,以便使用新编译的软件包:
   ```bash
   source devel/setup.bash


### 4. Catkin 的命令
- `catkin_make`:这是 Catkin 的默认编译命令,适用于较简单的工作空间。
- `catkin build`:这是更灵活的命令,支持并行编译和更多选项,适用于更复杂的工作空间。

### 5. 优缺点
- **优点**- 便于管理大型项目和模块化代码。
  - 自动处理依赖关系。
  - 与 CMake 集成,提供强大的构建功能。
  - 提供良好的社区支持和文档。

- **缺点**- 对于小型项目来说,可能显得过于复杂。
  - 学习曲线相对较陡,特别是对 CMake 不熟悉的用户。

### 6. 适用场景
Catkin 适用于 ROS 软件包的开发和管理,尤其是需要多个软件包相互依赖的复杂项目。无论是开发机器人应用、传感器驱动,还是实现算法,Catkin 都提供了良好的支持。

### 总结
Catkin 编译系统是 ROS 开发中的一个核心组成部分,帮助开发者高效地构建和管理 ROS 软件包。它通过 CMake 提供强大的构建能力,同时简化了包的依赖管理,是 ROS 项目开发中不可或缺的工具。

catkin_make 和 catkin的区别:

关系:Catkin 是一个构建系统,而 catkin_make 是使用 Catkin 进行构建的一个命令行工具。
可以将 Catkin 看作是整个构建框架,而 catkin_make 是在这个框架内执行构建操作的工具。

使用场景:在开发 ROS 软件包时,
开发者通常会使用 catkin_make 来构建工作空间中的所有软件包,
借助 Catkin 提供的功能来管理依赖和构建过程。

CMake 的全称是 “Cross Platform Make”
CMake 是一个跨平台的构建系统,用于管理软件的编译过程。它通过平台无关的配置文件(CMakeLists.txt)生成特定于平台的构建文件(如 Unix 系统上的 Makefile 或 Windows 系统上的 Visual Studio 项目文件)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity游戏上传微信小游戏步骤

准备一个小程序账号,在首页设置服务类目为小游戏(需要新创建的小程序才能设置,之前设置过的不能更改为小游戏) AppID(小程序ID) 在网页左下角点击进入账号设置-基本设置 下拉找到小程序Id(后面用到) 点击进入下载微信开发者…

SAP 根据不同生产版本创建销售预测简介

SAP 根据不同生产版本创建销售预测简介 业务场景前台操作1、创建BOM2、创建工艺路线3、创建生产版本4、创建销售预测5、调整销售预测6、查看物料需求业务场景 很多工厂一个物料可能会存在多个BOM,当有多个BOM存在的情况下就会存在多个生产版本,当创建计划独立需求的时候,系…

【java batik_使用BATIK解析SVG生成PNG图片】

矢量图的介绍及应用场景 矢量图是什么意思? 矢量图,也称为向量图,英文名字是Vector graphics。 矢量图是一种基于矢量的图形,由一系列的线段和曲线组成。由数学公式和算法生成的。这意味着矢量图可以在任何分辨率下清晰地显示&…

浅谈钓鱼攻防之道-制作免杀excel文件钓鱼

如果我告诉你我很厉害,也许你会说我在吹牛。但是如果我告诉你我并不厉害,你肯定知道我在撒谎。 1、CSV注入之RCE CSV公式注入(CSV Injection)是一种会造成巨大影响的攻击向量,攻击这可以向Excel文件中注入可以输出或以CSV文件读取的恶意攻击…

Linux Shell 实现一键部署mariadb11.6

mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发…

在 Elasticsearch 中顺利管理季节性时间变化

作者:来自 Elastic Valeriy Khakhutskyy, James Gowdy 用于 Elasticsearch 异常检测的新夏令时日历。 每年春季和秋季两次,许多国家/地区都会调整时钟以更好地利用日光。这些时钟调整不仅会带来时差和 “困倦的星期一” 的感觉,还会带来来自…

开源一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码

大家好,我是一颗甜苞谷,今天分享一款基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码。 前言 在当今快速发展的商业环境中,库存管理对于企业来说至关重要。然而,许多企业仍然依赖于传统的、手动…

C++ | Leetcode C++题解之第509题斐波那契数

题目&#xff1a; 题解&#xff1a; class Solution { public:int fib(int n) {if (n < 2) {return n;}vector<vector<int>> q{{1, 1}, {1, 0}};vector<vector<int>> res matrix_pow(q, n - 1);return res[0][0];}vector<vector<int>>…

「Mac畅玩鸿蒙与硬件12」鸿蒙UI组件篇2 - Image组件的使用

在鸿蒙应用开发中,Image 组件用于加载和显示图片资源,并提供多种属性来控制图片的显示效果和适配方式。本篇将带你学习如何在鸿蒙应用中加载本地和远程图片、设置图片样式以及实现简单的图片轮播功能。 关键词 Image 组件图片加载本地资源远程图片图片轮播一、Image 组件基础…

【CSS3】css开篇基础(5)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

怎么将文件批量重命名001到100?6个超好用的方法汇总

怎么将文件批量重命名001到100&#xff1f;在日常工作和学习中&#xff0c;我们经常需要处理大量的文件。这些文件可能包括文档、图片、音频、视频等各种类型&#xff0c;而它们的命名往往各不相同&#xff0c;这给我们的查找工作带来了很大的困扰。为了提高查找效率&#xff0…

【运动的&足球】足球运动员球守门员裁判检测系统源码&数据集全套:改进yolo11-DBBNCSPELAN

改进yolo11-FocalModulation等200全套创新点大全&#xff1a;足球运动员球守门员裁判检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.28 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示…

Linux_02 Linux常用软件——vi、vim

vi编辑器有三种主要模式&#xff0c;每种模式的功能和用途不同&#xff1a; 一、命令模式 (Command Mode)&#xff1a; - 启动 vi 时默认进入此模式。 - 你可以在此模式下移动光标&#xff0c;输入各种命令&#xff08;如删除、复制、粘贴等&#xff09;。 yy&#xff1a;…

python 爬虫抓取百度热搜

实现思路&#xff1a; 第1步、在百度热搜页获取热搜元素 元素类名为category-wrap_iQLoo 即我们只需要获取类名category-wrap_为前缀的元素 第2步、编写python脚本实现爬虫 import requests from bs4 import BeautifulSoupurl https://top.baidu.com/board?tabrealtime he…

51单片机STC8G串口Uart配置

测试环境 单片机型号&#xff1a;STC8G1K08-38I-TSSOP20&#xff0c;其他型号请自行测试&#xff1b; IDE&#xff1a;KEIL C51&#xff1b; 寄存器配置及主要代码 STC8G系列单片机具有4个全双工异步串行通信接口&#xff1b;本文以串口1为例&#xff0c;串口1有4种工作方式…

电脑使用技巧:怎么清理C盘碎片?

在日常使用电脑的过程中&#xff0c;C盘作为系统盘&#xff0c;常常会因为各种文件、缓存、临时文件等的堆积而变得拥挤不堪。这不仅会降低电脑的运行速度&#xff0c;还可能导致系统不稳定。而磁盘碎片问题则是另一个影响电脑性能的重要因素。本文将详细介绍如何清理C盘碎片&a…

数据结构 ——— 二叉树的概念及结构

目录 二叉树的概念 特殊的二叉树 一、满二叉树 二、完全二叉树 二叉树的概念 二叉树树示意图&#xff1a; 从以上二叉树示意图可以看出&#xff1a; 二叉树每个节点的度不大于 2 &#xff0c;那么整个二叉树的度也不大于 2 &#xff0c;但是也不是每个节点都必须有 2 个…

什么样的职业适合参加TRIZ创新方法培训

当下&#xff0c;无论是科技巨头还是初创企业&#xff0c;甚至是传统行业&#xff0c;都在积极寻求创新的突破口&#xff0c;以期在激烈的市场竞争中脱颖而出。而在这场创新大潮中&#xff0c;TRIZ&#xff08;发明问题解决理论&#xff09;作为一种高效、系统的创新方法&#…

SQLark百灵连接——整合项目监控过程

关键词&#xff1a;SQL编写、数据查询、数据导入、达梦数据库、项目管理、信息透明 项目监控背景 作为新手项目经理的我&#xff0c;经常觉得哪儿哪儿都是问题&#xff0c;今天催这个&#xff0c;明天推那个&#xff0c;可就是什么事都推不动&#xff0c;谁都不配合。后来&…

Unity可视化Shader工具ASE介绍——自定义函数

阿赵的Unity可视化Shader工具ASE介绍目录   大家好&#xff0c;我是阿赵。   之前介绍过一些ASE的用法&#xff0c;发现漏了一个比较重要的&#xff0c;自定义函数的使用。这里补充一下。 一、 使用的场合 在使用ASE制作Shader的过程中&#xff0c;可能会遇到以下这些情况…