本文内容来源于官方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用于编译包,该文件也可以定制。

ROS学习笔记4-创建一个ROS包的更多相关文章

  1. ROS学习笔记七:在ROS中使用USB摄像头

    下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 lsusb ----------------------------- ...

  2. ROS学习笔记(一) # ROS参数服务器

    参考 roscpp/Overview/Parameter Server 0. 概述 ROS参数服务器能够保存 string, int, float, double, bool, list, dicti ...

  3. ROS学习笔记三(理解ROS节点)

    要求已经在Linux系统中安装一个学习用的ros软件包例子: sudo apt-get install ros-indigo-ros-tutorials ROS图形概念概述 nodes:节点,一个节点 ...

  4. yii学习笔记--快速创建一个项目

    下载yii框架 下载地址:http://www.yiiframework.com/ 中文网站:http://www.yiichina.com/ 解压文件

  5. django examples 学习笔记(1)创建一个独立的python环境

    pip install virtualenv   创建一个虚拟环境 virtualenv   my_env      创建一个独立的环境 source my_env/bin/activate   激活 ...

  6. ROS学习笔记(三)——ROS安装

    安装指南: indigo安装 http://wiki.ros.org/indigo/Installation/Ubuntu 中文参考教程: http://wiki.ros.org/cn 1.配置Uba ...

  7. DirectX11 学习笔记3 - 创建一个立方体 和 轴

    该方案将在进一步的程序 面向对象. 独立的模型类.更像是一个框架. 其中以超过遇到了一个非常有趣的问题,.获得一晚.我读了好几遍,以找到其他的列子.必须放在某些功能Render里面实时更新,而不是仅仅 ...

  8. ROS学习笔记(二) # ROS NodeHandles

    1. 自动启动和关闭 ros::NodeHandle nh: 这段代码执行之后,如果内部节点还没有启动,ros::NodeHandle 会启动这个节点:一旦所有的 ros::NodeHandle 实例 ...

  9. Html+css学习笔记一 创建一个网页

    第一个网页 新建一个记事本,把名字改成first.html <html> <head> <title>MyFristHtml</title> </ ...

随机推荐

  1. centos610无桌面安装tomcat8

    1.下载安装包 wget https://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz ...

  2. 《JavaScript高级程序设计》读书笔记(四)变量、作用域和内存问题

    内容---理解基本类型和引用类型的值---理解执行环境---理解垃圾收集 --JavaScript变量松散类型的本质--决定了它只是在特定时间用于保存特定值的一个名字而已--变量的值及其数据类型可以在 ...

  3. Linux 常用命令——查看系统

    有的时候别人给你一个登录方式,但是不知道是啥系统,看图就知道了 1.uname -a    查看电脑以及操作系统 2.cat /proc/version 正在运行的内核版本 3.cat /etc/is ...

  4. 【转载】Linux截图工具

    如果linux安装了gnome,那么系统自带了一款截屏软件 gnome-screenshot,使用起来很方便,功能齐备,支持命令行.简单介绍如下. 功能 对屏幕,窗口,或自定义的区域进行截图. 选项 ...

  5. js指定范围指定个数的不重复随机数

    今天偶然看到的 比如要生成 1-100范围之内的10个不重复随机数,代码就可以这么写 var arr = []; for (var i = 1; i <=100; i++) { arr.push ...

  6. 【PAT甲级】1041 Be Unique (20 分)(多重集)

    题意: 输入一个正整数N(<=1e5),接下来输入N个正整数.输出第一个独特的数(N个数中没有第二个和他相等的),如果没有这样的数就输出"None". AAAAAccepte ...

  7. ApacheBench(ab)压力测试工具

    服务器负载太大而影响程序效率也是很常见的,Apache服务器自带有一个叫AB(ApacheBench)的工具,可以对服务器进行负载测试 基本用法: ab  -n 全部请求数 -c 并发数测试url 注 ...

  8. for in 与for 与hasOwnProperty

    在遍历一个对象的时候我们会使用到for in属性. 现有对象和数组如下: var filght = { number: 1, status: 'watit', arrival: [1,2,3], ad ...

  9. Live2d技术

    保存一些关于Live2d技术的博文或模型资源,有空研究研究. 什么是 live2d?:https://baike.baidu.com/item/Live2D/8496493 1.https://www ...

  10. office 格式定义

    在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...