ROS学习笔记3(创建一个ROS Package)

1 catkin Package由什么组成?

如果满足下面3个条件,一个package就会被认为是catkin package

  • 包含一个符合catkin标准的package.xml文件。
    • 这个文件包含了包的主要信息。
  • 包含一个使用catkin的CMakeLists.txt文件。
    • 如果是一个metapackage,需要引用相关的CMakeLists.txt文件。
  • 每个package都有自己的独立文件夹。
    • 这意味着没有嵌套packages,也不存在多个packages共用相同目录。

一个最简单的package应该有如下的结构:

my_package/
  CMakeLists.txt
  package.xml

2 catkin工作空间下的packages

一个标准的工作空间应该类似:

workspace_folder/        -- 工作空间
  src/                   -- 存放代码的目录
    CMakeLists.txt       -- catkin的最顶级CMake文件
    package_1/
      CMakeLists.txt     -- package_1的CMakeLists.txt
      package.xml        -- package_1的说明文件manifest
    ...
    package_n/
      CMakeLists.txt     -- package_n的CMakeLists.txt
      package.xml        -- package_n的说明文件manifest

3 创建一个catkin package

使用catkin_creat_pkg命令来创建一个catkin package:

# 首先创建一个工作空间
$ cd ~/catkin_ws/src

接着使用catkin_creat_pkg命令创建一个依赖于std_msgsroscpprospybeginner_tutorialspackage:

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

catkin_create_pkg命令的标准格式为:

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

使用tree命令查看以下目录结构:

└── beginner_tutorials
    ├── CMakeLists.txt
    ├── include
    │   └── beginner_tutorials
    ├── package.xml
    └── src

4 编译并且刷新setup文件

切换到catkin_ws目录,然后编译:

$ cd ~/catkin_ws
$ catkin_make

使用ls查看当前文件夹,发现多了2个文件夹:

build  devel  src

最后把这个工作空间加入到ros环境中:

$ source ~/catkin_ws/devel/setup.bash

5 package依赖

5.1 第一依赖项

在我们使用catkin_creat_pkg命令的时候,已经产生了第一依赖:

$ rospack depends1 beginner_tutorials 

共有3个依赖:

roscpp
rospy
std_msgs

这些依赖被保存在package.xml文件中:

$ roscd beginner_tutorials
$ cat package.xml

发现:

<package format="2">
...
  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
...
</package>

5.2 间接依赖

有些依赖包本身也依赖于其他的包,例如rospy有许多依赖:

$ rospack depends1 rospy

发现:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

rospack可以列出所有的嵌套依赖项目:

lk@Mibook:~$ rospack depends beginner_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

6 自定义你的package

6.1 自定义packages.xml

删除不必要的内容:

   1 <?xml version="1.0"?>
   2 <package format="2">
   3   <name>beginner_tutorials</name>
   4   <version>0.1.0</version>
   5   <description>The beginner_tutorials package</description>
   6 
   7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>
   8   <license>BSD</license>
   9   <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  10   <author email="you@yourdomain.tld">Jane Doe</author>
  11 
  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>
  21 
  22 </package>

6.2 自定义CMakeLists.txt

最初使用catkin_creat_pkgCMakeList.txt会被后面的ros代码编译给覆盖掉。


参考:http://wiki.ros.org/ROS/Tutorials/CreatingPackage

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值