• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

人工智能 越来越胖了_mengleijin 2944次浏览 0个评论

文章目录

 

  • ① 背景
    • Ⅰ什么手机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++ [ros2学习]-Client Libraries - 创建第一个自己的ROS 2 包

 

  • 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

 



开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明[ros2学习]-Client Libraries – 创建第一个自己的ROS 2 包
喜欢 (0)

您必须 登录 才能发表评论!

加载中……