< >
Home » ROS入门教程 » ROS入门教程-1.2.1 手动创建ROS package(rebuild)

ROS入门教程-1.2.1 手动创建ROS package(rebuild)

ROS入门教程-手动创建ROS package(rebuild)

说明:

  • 本教程将展示如何手动创建ROS package

步骤:

  • 我们可以使用(roscreate-pkg)工具来自动创建ROS package,不过,接下来你就会发现,这不是什么难事。

  • roscreate-pkg节省精力避免错误,但package只不过就是一个文件夹外加一个XML文件。

  • 现在,我们要手动创建一个名为foobar的package。

  • 请进入你ROS_PACKAGE_PATH下的pkgs目录。

pkgs$ mkdir foobar
pkgs$ cd foobar
  • 我们要做的第一件事就是添加 manifest 文件.

  • manifest.xml 文件使得像rospack这类工具能够检测出我们所创建的package的依赖项

  • 在 foobar/manifest.xml文件里添加如下语句:

<package>
  <description brief="example package tutorial">A simple tutorial package</description>
  <author>Your Name Here</author>
  <license>BSD</license>
  <depend package="roscpp" />
  <depend package="std_msgs" />
</package>
  • 现在,你的package里已经包含配置文件(manifest.xml),ROS能够找到它。
  • 试一试,执行如下指令:
rospack find foobar
  • 如果ROS配置正确,你将会看到类似如下的信息: /home/user/ros/pkgs/foobar.

  • 这就是ROS如何在后台寻找package机理。

  • 应该注意到我们刚才所创建的package依赖于 roscpp 和 std_msgs.

  • 看看下面的例子你将会明白为什么要指定这两个特定的依赖项。

  • 试一试,执行rospack指令:

rospack export --lang=cpp --attrib=cflags foobar
rospack export --lang=cpp --attrib=lflags foobar
  • 在你运行指令的过程中,rospack查询foobar的依赖项并产生必要的头文件和链接语句用于编译和链接可执行文件。

  • 尽管ROS本质上是模块化的,但ROS编译系统可以使用这些指令来正确的编译和链接你创建的package。

  • 因为ROS编译系统会为你完成这些工作,所以你可能永远都不会直接使用到这些指令。

  • 但是,诚如你所见,如果用其他编译系统,使用这些指令也可以很轻松的帮助你完成编译工作。

  • 至此,我们还需要两个编译文件: Makefile 和 CMakeLists.txt.

  • 在 foobar/Makefile文件内,输入:

include $(shell rospack find mk)/cmake.mk
  • 这指示 make 指令,我们将使用CMake而不是Make来编译这个package.

  • 同时我们还需要CMakeLists.txt 文件,这样我们才能使用CMake.

  • ROS之所以使用CMake 是因为它具有强大的跨平台编译的特性。

  • 在foobar/CMakeLists.txt 文件中,输入:

cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
rosbuild_init()
  • 这就是你想在ROS下用catkin编译package所要做的全部工作。
  • 当然了,如果想要让它正真的编译一些东西,你还需要学习关于CMake宏的一些知识。
  • 请参考 CMakeLists.txt 以获得更多信息。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros入门教程