ROS学习笔记#基础篇#(二)——ROS文件系统与创建/编译软件包

一、文件系统的命令行操作

rosbash包中包含了一些有用的bash命令,可以有效提高开发效率。以下为常用的命令:

  • roscd - 更改目录(以软件包,堆栈或位置名称开头)
  • rospd - 相当于roscd
  • rosd - 列出目录堆栈中的目录
  • rosls - 列出ros软件包的文件
  • rosed - 编辑包中的文件
  • roscp - 从包中复制文件
  • rosrun - 运行ros包中的可执行文件(重要
  • rospack - 获取软件包的有关信息

详细说明见helpROS官方教程 | ROS文件系统介绍

二、创建ROS软件包

以下内容主要参考ROS官方教程 | 创建ROS程序包《机器人操作系统入门》课程讲义

2.1、catkin软件包的组成

首先你已经根据 搭建ROS开发环境教程 创建catkin_ws工作空间。
使用catkin_create_pkg命令来创建一个新的catkin软件包:

$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

安装tree并查看catkin_ws文件树结构,如下:

$ sudo apt-get install tree
$ tree -F ~/catkin_ws/

主要结构如下:

catkin_ws/
└── src/
    └── beginner_tutorials/
        ├── CMakeLists.txt
        ├── include/
        │   └── beginner_tutorials/
        ├── package.xml
        └── src/

可见src文件夹下生成了beginner_tutorials软件包,其中以下2个文件为不可缺少的基本文件:

  • package.xml — 包含对软件包的描述信息
  • CMakeLists.txt — 用于生成make所需要的makefile文件

一个简单的工作空间的文件结构如下:

workspace_folder/              -- WORKSPACE
└── src/                       -- SOURCE SPACE
    ├── CMakeLists.txt         -- 'Toplevel' CMake file, provided by catkin
    ├── package_1/
    │   ├── CMakeLists.txt     -- CMakeLists.txt file for package_1
    │   └── package.xml        -- Package manifest for package_1
    ...
    └── package_n/
        ├── CMakeLists.txt     -- CMakeLists.txt file for package_n
        └── package.xml        -- Package manifest for package_n

每个目录下只能有一个软件包,这意味着在同一个目录下不能有嵌套的或者多个软件包存在。

2.2、软件包依赖关系

上文中使用catkin_create_pkg创建了软件包beginner_tutorials,其语法为:

$ catkin_create_pkg package_name [dependencies [dependencies ...]]

其中dependencies即指定软件包package_name依赖的功能包。catkin_create_pkg 帮你完成了软件包的初始化,填充好了 CMakeLists.txtpackage.xml,并且将依赖项填进了这两个文件中。
由上文可知,创建软件包beginner_tutorials时已经指定其依赖的功能包有std_msgsrospyroscpp

2.2.1、一级依赖

现在我们可以使用rospack命令工具来查看软件包beginner_tutorials的一级依赖关系,如下:

$ rospack depends1 beginner_tutorials

终端返回beginner_tutorials的一级依赖包:

roscpp
rospy
std_msgs

这些依赖关系记录在package.xml文件中,查看package.xml文件:

$ roscd beginner_tutorials
$ cat package.xml

关键内容如下:

<package>
...
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  
### ROS 文件系统概述 ROS(Robot Operating System)文件系统是其核心组成部分之一,它定义了一套标准的目录结构和配置文件来管理机器人软件开发中的各种资源。以下是关于 ROS 文件系统的详细介绍。 #### 一、ROS 文件系统的核心概念 在 ROS 中,文件系统主要围绕以下几个关键组件展开: 1. **Package** - Package 是 ROS 的基本单元,用于封装功能模块。每个包都包含了实现特定功能所需的源代码、依赖项和其他资源[^1]。 2. **package.xml** - `package.xml` 文件描述了一个 ROS 包的相关元数据,包括版本号、作者信息以及该包所依赖的其他包列表。这是构建工具 catkin 使用的重要配置文件[^2]。 3. **CMakeLists.txt** - CMake 是一种跨平台的自动化构建系统工具,在 ROS 开发过程中通过编辑 `CMakeLists.txt` 来指定编译选项、链接库以及其他设置。此文件对于成功编译 ROS 软件至关重要。 #### 、工作流程实践指南 为了更好地理解如何操作这些文件,可以按照如下方式进行实际练习: - 创建一个新的 ROS 工作空间,并初始化一个 Catkin 工程; - 添加自定义 Packages 到工程里; - 编辑对应的 `package.xml` 和 `CMakeLists.txt` 配置文件完成必要的设定; 具体命令示例如下所示: ```bash mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/ catkin_make source devel/setup.bash roscd ``` 当所有准备工作完成后就可以启动 core server 并测试节点间通讯状况了: ```bash roscore ``` 或者如果需要更改默认监听端口则加上参数执行: ```bash roscore -p 11311 ``` 以上步骤展示了从零搭建至运行简单实例的整体过程[^3]。 ### 总结 综上所述,掌握 ROS 文件系统不仅有助于开发者高效组织项目资料还能促进团队协作效率提升。熟悉上述提到的各种构成要素及其相互关系将是迈向精通 ROS 技术道路上不可或缺的一环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值