• 创建ROS软件包


    本教程介绍如何使用roscreate-pkgcatkin创建新的ROS软件包,并使用rospack列出软件包的依赖关系。

    一个catkin软件包由什么组成?

    一个包要想称为catkin软件包,必须符合以下要求:

    • 这个包必须有一个符合catkin规范的package.xml文件

      • 这个package.xml文件提供有关该软件包的元信息

    • 这个包必须有一个catkin版本的CMakeLists.txt文件

      • 如果它是个Catkin元包的话,则需要有一个CMakeList.txt文件的相关样板

    • 每个包必须有自己的目录
      • 这意味着在同一个目录下不能有嵌套的或者多个软件包存在

    最简单的软件包看起来就像这样:

    my_package/
      CMakeLists.txt
      package.xml
    

    catkin工作空间中的软件包

    开发catkin软件包的推荐方法是使用catkin工作空间,但是你也可以单独开发catkin软件包。一个简单的工作空间如下所示:

    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
    

    在继续本教程之前请先按照创建catkin工作空间教程创建一个空白的catkin工作空间。

    创建catkin软件包

    下面我们开始创建和构建一个catkin工作空间

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws/
    catkin_make
    

    catkin_make命令在catkin工作空间中是一个非常方便的工具。在你的工作空间中第一次运行它时,它会在src目录下创建一个CMakeLists.txt的链接。

    对于ROS Melodic和早期版本的Python 3用户:注意,如果你从源代码构建ROS来实现Python 3的兼容性,并适当地设置您的系统(即:安装所有必需的ROS Python包的Python 3版本,例如catkin),那么在干净的catkin工作区中的第一个catkin_make命令必须是:

    catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

    这将会配置catkin_make使用Python 3,在以后的构建中可以只使用catkin_make

    另外,如果你查看一下当前目录应该能看到builddevel这两个目录。在devel文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在环境的最顶层。想要了解更多,请参考catkin文档。接下来首先source一下新生成的setup.*sh文件:

    source devel/setup.bash

    要保证工作区被安装脚本正确覆盖,需确定ROS_PACKAGE_PATH环境变量包含你当前的工作空间目录:

     
    echo $ROS_PACKAGE_PATH
    /home/<username>/catkin_ws/src:/opt/ros/<distro>/share

    切换到刚才创建的空白catkin工作空间中的源文件空间目录:

    cd ~/catkin_ws/src
    

    现在使用catkin_create_pkg命令创建一个名为beginner_tutorials的新软件包,这个软件包依赖于std_msgsroscpprospy

    catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
    

    这将会创建一个名为beginner_tutorials的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件,这两个文件都已经部分填写了你在执行catkin_create_pkg命令时提供的信息。

    catkin_create_pkg命令会要求你输入package_name,如有需要还可以在后面添加一些需要依赖的其它软件包:

    catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
    

    catkin_create_pkg命令也有更多的高级功能,这些功能在catkin/commands/catkin_create_pkg中有描述。

    构建一个catkin工作区并生效配置文件

    现在你需要在catkin工作区中构建软件包:

    cd ~/catkin_ws
    catkin_make
    

    工作空间构建完成后,在devel子目录下创建了一个与你通常在/opt/ros/$ROSDISTRO_NAME下看到的目录结构类似的结构。

    要将这个工作空间添加到ROS环境中,你需要source一下生成的配置文件:

    . ~/catkin_ws/devel/setup.bash
    

    软件包依赖关系

    一级依赖

    之前在使用catkin_create_pkg命令时提供了几个软件包作为依赖关系,现在我们可以使用rospack命令工具来查看这些一级依赖包。

    请参考:cn/ROS/Tutorials/CreatingPackage - ROS Wiki

  • 相关阅读:
    Cordova Android源代码分析系列一(项目总览和CordovaActivity分析)
    codeforces A. Supercentral Point 题解
    Codeforces441A_Valera and Antique Items(水题)
    POJ 2407 Relatives 欧拉函数题解
    用Qt制作的Android独立游戏《吃药了》公布
    Webserver管理系列:12、开启关闭Ping命令
    高性能 Socket 组件 HP-Socket v3.2.1-RC3 公布
    00092_字符输出流Writer
    np.vstack()和np.hstack()
    用 Python 检验数据正态分布的几种方法
  • 原文地址:https://www.cnblogs.com/0bug/p/16159543.html
Copyright © 2020-2023  润新知