ROS入门教程归纳3

创建ROS程序包

组成
i)package.xml
ii)CMakeLists.txt

最简组成

my_package/
  CMakeLists.txt
  package.xml

满足条件
i)package.xml包含程序包的元信息;
ii)CMakeLists.txt为catkin版本;
iii)metapackages必须包含对CMakeLists.txt文件的饮用;
iv)每个目录下只有一个程序包。

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

步骤
i) 创建工作空间
ii) cd 工作空间/src
iii) catkin_create_pkg
创建catkin程序包操作步骤

1)catkin_create_pkg
输入 catkin_create_pkg 包名 依赖1 依赖2 依赖3
输出 创建一个自定义名字的包,依赖于你定义的1,2,3
举例
创建一个名为’beginner_tutorials’的新程序包,这个程序包依赖于std_msgs、roscpp和rospy

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

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

一级依赖

1)rospack depends1
输入 rospack depends1 包名
输出 包对应一级依赖包
举例
输入

$ rospack depends1 beginner_tutorials 

输出

std_msgs
rospy
roscpp

2)cat
输入 cat 文件名
输出 显示整个文件
举例

$ roscd beginner_tutorials
$ cat package.xml
<package>
...
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
...
</package>

间接依赖

1)rospack depends
输入 rospack depends 包名
输出 所有依赖包列表

自定义 package.xml

1)gedit
输入 gedit 文件名
输出 通过gedit编辑器打开文件
组成
i)描述
可更改任意内容,最好简短。

<description>The beginner_tutorials package</description>

ii)维护者
填写一个维护者及其联系方式

<!-- One maintainer tag required, multiple allowed, one person per tag --> 
<!-- Example:  -->
<!-- <maintainer email="[email protected]">Yourname</maintainer> -->
<maintainer email="[email protected]">user</maintainer>

iii)许可标签
填写许可协议,常见开源许可协议(把TODO换成协议名):
BSD、MIT、Boost Software License、GPLv2、GPLv3、LGPLv2.1和LGPLv3

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

iv)依赖项标签
描述依赖项,分为:
build_depend、buildtool_depend、run_depend、test_depend
下述结果(自动生成的build_depend部分)是由于之前设定的依赖项
编译和运行所需的包需添加到run_depend(exec_depend)中。

<!-- The *_depend tags are used to specify dependencies -->
<!-- Dependencies can be catkin packages or system dependencies -->
<!-- Examples: -->
<!-- Use build_depend for packages you need at compile time: -->
<!--   <build_depend>genmsg</build_depend> -->
<!-- Use buildtool_depend for build tool packages: -->
<!--   <buildtool_depend>catkin</buildtool_depend> -->
<!-- Use exec_depend for packages you need at runtime: -->
<!--   <exec_depend>python-yaml</exec_depend> -->
<!-- Use test_depend for packages you need only for testing: -->
<!--   <test_depend>gtest</test_depend> -->
<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.xml

<?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>

猜你喜欢

转载自blog.csdn.net/Myoonyee_Chen_CSDN/article/details/84648946