ROS学习笔记(三)学会创建一个ROS package

总结:把总结写在前面,如果不想看大段文字只想跑通ROS的话只要看总结就好了。

  • 创建和编译catkin workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
  • 创建catkin package
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

正文:在创建一个ROS package之前,会遇到这几个概念:catkin、catkin workspace。通俗的来讲,catkin workspace是可以创建、安装、修改catkin package的文件夹,可以类比于我们的一个工程,一个工程里面可以包含很多个package,至于catkin是啥,目前我也没搞清楚,还需要进一步深入学习。在这里catkin package就是我们说的ROS package。

1.catkin package的组成

  • 每个package必须要有自己的文件夹
  • 必须要有catkin compliant,即一个 package.xml文件用来描述package信息
  • 必须要有使用catkin的CMakeList.txt文件

一个简单的package长这样,以下是一个名为my_package的ros package

my_package/
  CMakeLists.txt
  package.xml

2.创建一个catkin workspace
workspace可以类比于我们的一个工程,一个工程里面可以包含很多个package,每个package执行着各自的功能,他们一起合作就构成了机器人的软件功能。一个典型的workspace长这样

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

下面我们讲解如何创建一个workspace。新建一个包含有src文件夹的workspace文件夹:catkin_ws/src,然后去到catkin_ws目录下,执行一下编译指令catkin_make

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

这个过程只需要在你新建package时执行一次就可以了。它会帮你初始化好你的工作空间,创建一些必要的文件夹以及文件,此时你的src文件夹里面创建了一个CMakeList.txt文件

接着执行

source devel/setup.bash

使当前的工作空间能够被遍历(这句指令的作用我还没搞懂,大家可以参看原网页,官网tutorial原文:Sourcing any of these files will overlay this workspace on top of your environment. )

3.创建一个catkin package

3.1 定位到catkin workspace文件夹

cd ~/catkin_ws/src

3.2 用catkin_create_pkg创建一个参考std_msgs,roscpp以及rospy的名叫’beginner_tutorials’的package

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

至此,一个工作在catkin worksace的叫’beginner_tutorials’的package创建好了。

catkin_create_pkg 使用方法

# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

4.编译package和把workspace加入ros环境

4.1 编译package
新建了package之后需要重新编译一下

$ cd ~/catkin_ws
$ catkin_make

4.2 把workspace加入ros环境

$ . ~/catkin_ws/devel/setup.bash

5.Package依赖

5.1 一级依赖
刚刚使用catkin_create_pkg时我们给新建的package提供了一些依赖,我们可以通过下面这个命令查看某个包的一级依赖。

$ rospack depends1 beginner_tutorials

运行上述命令查看一级依赖,运行结果:

roscpp
rospy
std_msgs

这些依赖都被存储在package.xml里,也可运行以下指令查看xml里的内容。

$ roscd beginner_tutorials
$ cat package.xml

5.2 非直接依赖
一般来说依赖里面还会有其他依赖,比如说我们想查看rospy的依赖

$ rospack depends1 rospy

运行结果:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

一个package会有一阶依赖以及非直接依赖,可以执行下面的语句查看所有的依赖

$ rospack depends beginner_tutorials

6.定制你的package

本节我们将会逐行地看catkin_create_pkg生成的文件,然后学习怎么定制自己的package文件
6.1 定制package.xml
生成的package.xml文件在包文件夹里面,我们去到beginner_tutorials文件夹下面,打开package.xml文件
6.1.1 description tags

<description>The beginner_tutorials package</description>

该标签描述了包的基本信息,可以任意修改

6.1.2 maintainer tags

<maintainer email="julis@todo.todo">julis</maintainer>

该标签描述了该包的维护人员的基本信息,包括了名字和邮件

6.1.3 license tags

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

该标签描述了许可证类型,请根据自己的需要填入许可证类型

6.1.4 dependencies tags

<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>

该标签描述了依赖项,我们希望这些依赖在编译阶段和运行阶段都其作用,于是分别在<build_export_depend>和<exec_depend>下都注明了依赖项。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值