ROS 中的Package软件包

文章目录

    • 前言
    • package结构
    • 创建package
    • package相关命令

前言

ROS中的package的定义更加具体,它不仅是Linux上的软件包,更是catkin编译的基本单元,我们调用 catkin_make 编译的对象就是一个个ROS的package,也就是说任何ROS程序只有组织成package才能编译。所以package也是ROS源代码存放的地方,任何ROS的代码无论是C++还是Python都要放到package中,这样才能正常的编译和运行。一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等等)。

package结构

通常情况下,一个package下常见的文件、路径有:
ROS 中的Package软件包_第1张图片
其中定义package的是 CMakeLists.txt 和 package.xml ,这两个文件是package中必不可少的,是必须的,余路径根据软件包是否需要来决定。catkin编译系统在编译前,首先就要解析这两个文件。这两个文件就定义了一个package。

  • CMakeLists.txt: 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分
  • package.xml: 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分
  • src/: 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)
  • include/: 存放C++源码对应的头文件
  • scripts/: 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)
  • msg/: 存放自定义格式的消息(.msg)
  • srv/: 存放自定义格式的服务(.srv)
  • models/: 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等)
  • urdf/: 存放机器人的模型描述(.urdf或.xacro)
  • launch/: 存放launch文件(.launch或.xml)

那么如何创建一个package 的bag呢?

创建package

创建一个package需要在 catkin_ws/src 下,用到 catkin_create_pkg 命令,用法是:

catkin_create_pkg package depends

其中package是包名,depends是依赖的包名,可以依赖多个软件包。例如,新建一个package叫做 practise ,依赖roscpp、rospy、std_msgs(常用依赖)。

$ catkin_create_pkg practise roscpp rospy std_msgs

这样就会在当前路径下新建 practise 软件包,包括:
ROS 中的Package软件包_第2张图片
catkin_create_pkg 帮你完成了软件包的初始化,填充好了 CMakeLists.txt 和 package.xml ,并且将依赖项填进了这两个文件中。

package相关命令

  1. rospack
    rospack是对package管理的工具,命令的用法如下:
    ROS 中的Package软件包_第3张图片
  2. roscd
    roscd 命令类似与Linux系统的 cd ,改进之处在于 roscd 可以直接 cd 到ROS的软件包。
    在这里插入图片描述
  3. rosls
    rosls 也可以视为Linux指令 ls 的改进版,可以直接 ls ROS软件包的内容。
    在这里插入图片描述

综上:
在终端rospack help 可以查看具体的命令以及参数要求,使用的方法。

参考:机器人操作系统ROS讲义.pdf

你可能感兴趣的:(ROS)