文章目录

 
  • ① 背景
    • Ⅰ什么手机ROS 2 包
    • Ⅱ ROS 2 包有什么组成
      • cmake 包
      • python 包
    • Ⅲ ROS 2 包和工作空间的关系
  • ② 前提
  • ③ 任务
    • Ⅰ 创建包
    • Ⅱ 编译包
    • Ⅲ 安装设置文件(setup.bash)
    • Ⅳ 运行包
    • Ⅴ 看看包里面都有啥子
    • Ⅵ 修改 package.xml
  • ④ 总结
 

① 背景

 

Ⅰ什么手机ROS 2 包

  可以将包视为ROS 2代码的容器。如果您希望能够安装代码或与他人共享代码,则需要将其组织在一个软件包中。使用软件包,您可以发布ROS 2的工作,并允许其他人轻松构建和使用它。   ROS 2中的软件包创建使用ament作为其构建系统,并使用colcon作为其构建工具。您可以使用官方支持的CMake或Python创建软件包,尽管确实存在其他构建类型  

Ⅱ 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
  在这里插入图片描述  

Ⅱ 编译包

  命令是 colcon build 也可以 选择只编译某一个包 colcon build --packages-select my_package_cpp   在这里插入图片描述   这里可能会报邮箱格式不正确的错误,把邮箱在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 在这里插入图片描述
 

Ⅴ 看看包里面都有啥子

 
  • C++ 在这里插入图片描述
 
  • python 在这里插入图片描述
 

Ⅵ 修改 package.xml

  description, license ,maintainer需要去改   在这里插入图片描述   这个样子   在这里插入图片描述   python要改的话,setup.py要一致和package.xml 在这里插入图片描述  

④ 总结

  通过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