欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

程序员文章站 2022-07-14 22:17:42
...

① 背景

Ⅰ什么手机ROS 2 包

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

ROS 2中的软件包创建使用ament作为其构建系统,并使用colcon作为其构建工具。您可以使用官方支持的CMakePython创建软件包,尽管确实存在其他构建类型

Ⅱ ROS 2 包有什么组成

cmake 包

  • package.xml 文件包含这个包里的元信息
  • CMakeLists.txt 怎么去编译这个包
    最简单的长这个样子
my_package/
     CMakeLists.txt
     package.xml

python 包

  • package.xml 文件包含这个包里的元信息
  • setup.py 如何按爪个软件包
  • setup.cfg 保证ros2 可以找到这个包
  • your_package_name - ROS 工具能找到这个包

大概这个样子

my_package/
      setup.py
      package.xml
      resource/my_package

Ⅲ ROS 2 包和工作空间的关系

一个工作空间可以包含n个包,但是不推荐放很多个,不然每次rebuild 的时候,就是该出去遛弯的时候了
大概长这个样子

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

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

② 前提

准备号工作空间dev_ws

③ 任务

==下面每个都会有C++ 和 python 两种方式 ==

Ⅰ 创建包

确保到dev_ws/src路径下

一般我们创建包的命令这个样子就行:

  • C++ ros2 pkg create --build-type ament_cmake <package_name>
  • python ros2 pkg create --build-type ament_python <package_name>

我们现在加选项 --node-name 可以创建hello world 的包

  • C++ ros2 pkg create --build-type ament_cmake --node-name my_node_cpp my_package_cpp
  • python ros2 pkg create --build-type ament_python --node-name my_node_py my_package_py

[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

Ⅱ 编译包

命令是 colcon build 也可以 选择只编译某一个包 colcon build --packages-select my_package_cpp
[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包
这里可能会报邮箱格式不正确的错误,把邮箱在xml里改一下,还是不行,就删除build/文件夹重新来

Ⅲ 安装设置文件(setup.bash)

cd ~/dev_ws
. install/setup.bash

Ⅳ 运行包

因为用的–node_name 创建的,会有hello world出来

  • C++ ros2 run my_package_cpp my_node_cpp
  • python ros2 run my_package_py my_node_py
    [ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

Ⅴ 看看包里面都有啥子

  • C++
    [ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

  • python
    [ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

Ⅵ 修改 package.xml

description, license ,maintainer需要去改
[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包
这个样子
[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

python要改的话,setup.py要一致和package.xml
[ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

④ 总结

通过pkg来创建包,通过 colcon 来编译,成功之后可以执行

命令的说明

usage: ros2 pkg create [-h] [--package-format {2,3}]
                       [--description DESCRIPTION] [--license LICENSE]
                       [--destination-directory DESTINATION_DIRECTORY]
                       [--build-type {cmake,ament_cmake,ament_python}]
                       [--dependencies DEPENDENCIES [DEPENDENCIES ...]]
                       [--maintainer-email MAINTAINER_EMAIL]
                       [--maintainer-name MAINTAINER_NAME]
                       [--node-name NODE_NAME] [--library-name LIBRARY_NAME]
                       package_name

Create a new ROS2 package

positional arguments:
  package_name          The package name

optional arguments:
  -h, --help            show this help message and exit
  --package-format {2,3}, --package_format {2,3}
                        The package.xml format.
  --description DESCRIPTION
                        The description given in the package.xml
  --license LICENSE     The license attached to this package
  --destination-directory DESTINATION_DIRECTORY
                        Directory where to create the package directory
  --build-type {cmake,ament_cmake,ament_python}
                        The build type to process the package with
  --dependencies DEPENDENCIES [DEPENDENCIES ...]
                        list of dependencies
  --maintainer-email MAINTAINER_EMAIL
                        email address of the maintainer of this package
  --maintainer-name MAINTAINER_NAME
                        name of the maintainer of this package
  --node-name NODE_NAME
                        name of the empty executable
  --library-name LIBRARY_NAME
                        name of the empty library

相关标签: # ros2 学习