创建ROS的Package(功能包)

本文讲如何用catkin创建一个ROS的package

1. catkin package的组成:一定要包含CMakeLists.txt及package.xml文件

my_package/
  CMakeLists.txt
  package.xml

此外,每个package必须要有他自己的文件夹。

2. 推荐使用catkin workspace来处理catkin package

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

3. 创建catkin package

使用catkin_create_pkg脚本来创建新的catkin package:

(1)切换source space目录至之前创建的catkin workspace

$ cd ~/catkin_ws/src

(2)用catkin_create_pkg创建一个catkin package,名字是beginner_tutorials,且依赖于已有的功能包std_msgs,roscpp,rospy,后者称为dependency

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

4. build 这个catkin workspace, source 这个setup文件

build方法:

$ cd ~/catkin_ws
$ catkin_make

source方法:

$ . ~/catkin_ws/devel/setup.bash

5. package dependencies 

(1)用rospack查看1阶dependencies:

$ rospack depends1 beginner_tutorials 

package.xml中储存了package的dependencies信息

$ roscd beginner_tutorials
$ cat package.xml

(2)用rospack查看间接(高阶)的dependencies:

$ rospack depends beginner_tutorials

6. customize(自定义、定制) package

  6.1 自定义package.xml

    (1) 描述标签(description tag):尽可能短

   5   <description>The beginner_tutorials package</description>

    (2)Maintainer 标签:必须有,而且非常重要,至少要有一条。作用是让别人知道有关这个package该联系谁。

Toggle line numbers

   7   <!-- One maintainer tag required, multiple allowed, one person per tag -->
   8   <!-- Example:  -->
   9   <!-- <maintainer email="[email protected]">Jane Doe</maintainer> -->
  10   <maintainer email="[email protected]">user</maintainer>

    (3)许可证标签(license tag):有很多开源许可证,我们这里使用BSD,因为许多ROS核心部件都是用的它。  

  12   <!-- One license tag required, multiple allowed, one license per tag -->
  13   <!-- Commonly used license strings: -->
  14   <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  15   <license>TODO</license>

    (4)dependencies标签: dependencies标签可分为build_depend, buildtool_depend, exec_depend, test_depend。因为我们使用了std_msgs, roscpp, and rospy,所以该标签应为:

  27   <!-- The *_depend tags are used to specify dependencies -->
  28   <!-- Dependencies can be catkin packages or system dependencies -->
  29   <!-- Examples: -->
  30   <!-- Use build_depend for packages you need at compile time: -->
  31   <!--   <build_depend>genmsg</build_depend> -->
  32   <!-- Use buildtool_depend for build tool packages: -->
  33   <!--   <buildtool_depend>catkin</buildtool_depend> -->
  34   <!-- Use exec_depend for packages you need at runtime: -->
  35   <!--   <exec_depend>python-yaml</exec_depend> -->
  36   <!-- Use test_depend for packages you need only for testing: -->
  37   <!--   <test_depend>gtest</test_depend> -->
  38   <buildtool_depend>catkin</buildtool_depend>
  39   <build_depend>roscpp</build_depend>
  40   <build_depend>rospy</build_depend>
  41   <build_depend>std_msgs</build_depend>

     我们希望在build和run的时候使用所有特定的dependencies,因此我们还要增加exec_depend标签,最后如下:

  12   <buildtool_depend>catkin</buildtool_depend>
  13
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>

    (5) 最终的package.xml:下面是不含有评论和未使用tag的package.xml文件,非常concise(简明)

<?xml version="1.0"?>
<package format="2">
  <name>beginner_tutorials</name>
  <version>0.1.0</version>
  <description>The beginner_tutorials package</description>

  <maintainer email="[email protected]">Your Name</maintainer>
  <license>BSD</license>
  <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  <author email="[email protected]">Jane Doe</author>

  <buildtool_depend>catkin</buildtool_depend>

  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>

  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>

</package>

  6.2 自定义CMakeLists.txt

时间: 2024-10-06 07:09:50

创建ROS的Package(功能包)的相关文章

编写第一个ROS(创建工作空间workspace和功能包package)

刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配置好ROS. 1.创建工作空间(workspace) 我们所创建功能包package,应该全部放到一个叫做工作空间(workspace)的目录中 .你可以把目录存储在你账号的任何位置例如,我所创建的工作空间的是路径/home,同时你可以用任何你喜欢的名字命名你的工作空间,我的工作空间名为 test,现在请使用标准的mkdir命令行去创建一个工作空间.我首先建立一个工作空间,名字为test, 此处创建

ros_arduino_bridge功能包的使用

写在前面 概述 关于ROS官方文档 系统要求 在你的Linux下准备串口 安装ros_arduino_bridge功能包集 加载ROSArduinoBridge的Sketch 固件程序命令 测试你的电线连接 配置ros_arduino_python节点 启动ros_arduino_python节点 查看传感器数据 发送Twist命令与查看里程计数据 ROS服务 使用板上编码器计数仅支持ArduinoUno NOTE 可能遇到的错误 参考资料 写在前面 本文是根据ros_arduino_bridg

创建ROS功能包(四)

为了方便直接用ROS的create-pkg命令行工具 roscreate-pkg chapter2_tutorials std_msgs rospy roscpp std_msgs 包含了常见的消息类型,表示基本数据类型和其他的基本的消息构造,如多维数组. rospy 一个ROS的纯Python客户端库. roscpp 使用c++实现ROS的各种功能. 如果所有步骤正确执行,显示结果 编译功能包 rosmake chapter2_tutorials 几秒后,你会看见: 如果没有错误信息提示,说明

创建ros的程序包--3

创建ros的程序包(原创博文,转载请标明出处--周学伟) 1.一个catkin程序包由什么组成? 一个程序包要想称为catkin程序包必须符合以下要求: 该程序包必须包含catkin compliant package.xml文件 这个package.xml文件提供有关程序包的元信息. 程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用. 每个目录下只能有一个程序包. 这意味着在同一

创建ROS工作空间和包

一.创建工作空间 mkdir -p ~/openni_ws/src cd ~/openni_ws catkin_make        //在catkin工作空间(openni_ws)下catkin_make,结果产生build和devel文件夹 source devel/setup.bash 二.创建package(包) cd ~/openni_ws/src            //所有package都放在src下,src/package1,package2,package3... catk

ROS-3 : Catkin工作空间和ROS功能包

一.创建一个Catkin工作空间 步骤一:构建catkin工作空间 安装完成ROS版本后,设置好环境变量:$ source /opt/ros/kinetic/setup.bash.然后即可创建一个catkin工作空间. $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace $ cd ~/catkin_ws/ $ catkin_make 即在终端命令行创建一个Catkin工作空间的步骤为: 创建catkin工

ROS学习之消息包

一个包是ROS中用于存储ROS 消息数据的文件格式.包 的扩展名为.bag - 在ROS中具有重要作用,并且已经编写了各种各样的工具来允许您存储,处理,分析和可视化它们. 在线计算图中使用 包通常由诸如rosbag的工具创建,该工具订阅一个或多个ROS 主题,并且将序列化的消息数存储在接收到的文件中.这些包文件也可以在ROS中回放到与他们记录的相同的主题,甚至重新映射到新的主题. 使用ROS计算图中的包文件与ROS节点发送相同的数据通常没有区别,尽管您可能遇到存储在消息数据内的时间戳数据的问题.

SSIS从理论到实战,再到应用(1)----创建自己的第一个包

原文:SSIS从理论到实战,再到应用(1)----创建自己的第一个包 其实,如果你使用sql2008的导出导入工具的时候,你就已经在使用包了. 目标:使用sql2008 导入导出工具,导入excel数据,并得到一个package,然后查看package的设置 ====>最后得到SSIS包 我们梳理一下,我们的目标是什么:将excel的数据导入到了数据库中,那必然有这几个动作 1.创建表 2.将数据导入到我们创建的表中 Ok,这样我来将这个包打开来看看是否有至少两个动作 首先,我们新建一个SSIS

创建ROS工程結構

图像化显示目录工程结构:tree $ sudo apt install tree 创建ROS工作空间 $ mkdir -p catkin_ws/src # Create mutil-level directory $ cd catkin_ws/ $ catkin_make #Initialization $ catkin_create_pkg package_name #create a package $ catkin_create_pkg package_name Dependency_na