zoukankan      html  css  js  c++  java
  • ROS学习笔记4-创建一个ROS包

    本文内容来源于官方wiki,http://wiki.ros.org/ROS/Tutorials/CreatingPackage

    1. 一个catkin包包含什么
      1. 必须包含package.xml文件,该文件用来描述包相关信息。
      2. 必须有一个catkin使用的CMakeLists.txt文件。
      3. 每个包必须有自己的文件夹。
        一个简单包结构如下:
        my_package/
          CMakeLists.txt
          package.xml
        
    2. catkin 工作空间(workspace)中的包
      建议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工作空间。

    3. 创建catkin工作空间。
      装了ROS后可以使用该命令安装catkin,
      $ source /opt/ros/kinetic/setup.bash
      

      使用如下命令创建一个catkin工作空间,名字为catkin_ws:

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

       使用ls命令查看,可以看出已经出现build,devel,src的子目录。
      然后运行:

      $ source devel/setup.bash
      $ echo $ROS_PACKAGE_PATH
      

       返回如下:

      /home/spy/catkin_ws/src:/opt/ros/kinetic/share
      

      可以看出,环境变量中已经包含了该工作空间中的目录。

    4. 创建一个catkin包
      可以使用catkin_create_pkg命令创建一个catkin包,该命令语法如下:
      # This is an example, do not try to run this
      # catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
      

      例如如下命令:

      $ cd ~/catkin_ws/src
      $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
      

       创建一个名为 beginner_tutorials 的包,依赖项为 std_msgs rospy 和roscpp
      输出如下:

      Created file begginner_tutorials/CMakeLists.txt
      Created file begginner_tutorials/package.xml
      Created folder begginner_tutorials/include/begginner_tutorials
      Created folder begginner_tutorials/src
      Successfully created files in /home/shao/catkin_ws/src/begginner_tutorials. Please adjust the values in package.xml.
      

       可以看出,该命令自动创建了一些文件。其中包括CMakeLists.txt和package.xml这些文件。

    5. 编译catkin包
      使用如下命令
      $ cd ~/catkin_ws
      $ catkin_make
      

      则会自动将所有包都编译,包括刚创建的beginner_tutorials包。

      catkin_make命令实际上调用了cmake命令,关于更多catkin_make的信息,请参考catkin/commands/catkin_make

    6. 包依赖
      1. 一级依赖
        在使用catkin_create_pkg命令创建包时可以指定一些依赖项,可以rospack命令查看这些依赖项:
        $ rospack depends1 begginner_tutorials 
        

        则返回:

        roscpp
        rospy
        std_msgs
        

         这些依赖信息存储在package.xml中,可以查看package.xml。

      2. 间接依赖
        一级依赖项可能存在自己的依赖,这些称之为间接依赖,例如,rospy包又存在自己的依赖项:
        $ rospack depends1 rospy
        genpy
        roscpp
        rosgraph
        rosgraph_msgs
        roslib
        std_msgs
        
      3. 全部依赖
        使用rospack depends命令可以查看全部依赖项
        $ rospack depends begginner_tutorials 
        cpp_common
        rostime
        roscpp_traits
        roscpp_serialization
        catkin
        genmsg
        genpy
        message_runtime
        gencpp
        geneus
        gennodejs
        genlisp
        message_generation
        rosbuild
        rosconsole
        std_msgs
        rosgraph_msgs
        xmlrpcpp
        roscpp
        rosgraph
        ros_environment
        rospack
        roslib
        rospy
        
    7. 定制包信息
      可以通过定制package.xml的信息来定制包的元信息,关于更详细信息请参考package.xml
      同时,CMakeLists.txt用于编译包,该文件也可以定制。
  • 相关阅读:
    ArcMAP操作 获取点所在栅格的高程值
    AE代码 积累
    AE 判断点是否在面内
    ArcMAP获取要素的外包多边形
    DEM消除平三角形教程
    博文目录
    Redis哨兵集群部署
    引用-各类数据库整体架构图汇总
    百度数仓Palo-Doris并发压测性能
    引用-Phoenix介绍
  • 原文地址:https://www.cnblogs.com/spyplus/p/11479921.html
Copyright © 2011-2022 走看看