ros2 工作区介绍 、ros2 包介绍及实操

发布时间:2024年01月05日

工作区介绍

? ??ROS工作空间是具有特定结构的目录。通常有一个src子目录。该子目录内是 ROS 包的源代码所在的位置。通常该目录一开始是空的。其工作区在src同级目录下。

colcon 不进行源代码构建。默认情况下,它将创建以下目录作为该src目录的同级目录:

  • build目录将是存储中间文件的位置。对于每个包,将创建一个子文件夹,例如在其中调用 CMake。

  • install目录是每个包将安装到的位置。默认情况下,每个包将安装到单独的子目录中。

  • log目录包含有关每个 colcon 调用的各种日志记录信息。

在工作区的根目录中,运行.?由于诸如 之类的构建类型不支持空间的概念并且需要安装包,所以 colcon 支持选项。这允许通过更改空间中的文件(例如Python文件或其他未编译的资源)来更改已安装的文件,以实现更快的迭代.

Linux
colcon build --symlink-install

?构建完成后,我们应该看到buildinstalllog目录

ros2包(package)

背景?

1 什么是 ROS 2 包??

包可以被视为 ROS 2 代码的容器。如果您希望能够安装代码或与其他人共享代码,那么您需要将其组织在包中。通过包,您可以发布您的 ROS 2 作品并允许其他人轻松构建和使用它。

ROS 2 中的包创建使用 ament 作为其构建系统,并使用 colcon 作为其构建工具。您可以使用官方支持的 CMake 或 Python 创建包,但也存在其他构建类型。

2 ROS 2 包由哪些部分组成??

ROS 2 CMake 有自己的最低要求内容:

CMake
  • package.xml包含有关包的元信息的文件

  • CMakeLists.txt描述如何在包中构建代码的文件

最简单的包可能具有如下所示的文件结构:

CMake
my_package/
     CMakeLists.txt
     package.xml

3 工作区中的包?

一个工作区可以包含任意数量的包,每个包都在自己的文件夹中。您还可以在一个工作区中包含不同构建类型的包(CMake等)。您不能有嵌套的包。

最佳实践是在工作区中拥有一个src文件夹,并在其中创建包。这可以保持工作空间的顶层“干净”。

一个简单的工作空间可能看起来像:

workspace_folder/
    src/
      package_1/
          CMakeLists.txt
          package.xml

      package_2/
          setup.py
          package.xml
          resource/package_2
      ...
      package_n/
          CMakeLists.txt
          package.xml

任务

1 创建包

src在运行包创建命令之前,请确保您位于该文件夹中。

Linux
cd ~/ros2_ws/src

在 ROS 2 中创建新包的命令语法是:

CMake
ros2 pkg create --build-type ament_cmake <package_name>

在本教程中,您将使用可选参数--node-name在包中创建一个简单的 Hello World 类型可执行文件。

在终端中输入以下命令:

CMake
ros2 pkg create --build-type ament_cmake --node-name my_node my_package

现在,您的工作区src目录中将有一个名为 的新文件夹my_package

运行命令后,您的终端将返回消息:

CMake
going to create a new package
package name: my_package
destination directory: /home/user/ros2_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['<name> <email>']
licenses: ['TODO: License declaration']
build type: ament_cmake
dependencies: []
node_name: my_node
creating folder ./my_package
creating ./my_package/package.xml
creating source and include folder
creating folder ./my_package/src
creating folder ./my_package/include/my_package
creating ./my_package/CMakeLists.txt
creating ./my_package/src/my_node.cpp

您可以看到新包自动生成的文件。

2 构建一个包?

将包放入工作区尤其有价值,因为您可以通过在工作区根目录中运行来一次构建许多包。否则,您将必须单独构建每个包。

返回工作区的根目录:

Linux
cd ~/ros2_ws

现在您可以构建您的包:

Linux
colcon build

当工作区中只有几个包时,这很好,但当有很多包时,可能需要很长时间。

my_package下次仅构建包,您可以运行:

colcon build --packages-select my_package

3 获取安装文件?

要使用新的软件包和可执行文件,请首先打开一个新终端并获取主 ROS 2 安装。

然后,从ros2_ws目录内部运行以下命令来获取工作空间:

Linux
. install/local_setup.bash

现在您的工作区已添加到您的路径中,您将能够使用新包的可执行文件。

4 使用包?

要运行您在包创建期间使用参数创建的可执行文件--node-name,请输入以下命令:

ros2 run my_package my_node

这将向您的终端返回一条消息:

CMake
hello world my_package package

文章来源:https://blog.csdn.net/weixin_43841155/article/details/135403744
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。