Metapackage
在一些 ROS 的教学资料和博客里,你可能还会看到一个 Stack (功能包集) 的概念,它指的是将多个功能接近、甚至相互依赖的软件包的放到一个集合中去。但 Stack 这个概念在 Hydro 之后就取消了,取而代之的就是 Metapackage。尽管换了个马甲,但它的作用没变,都是把一些相近的功能模块、软件包放到一起。
ROS里常见的 Metapacakge 有:
Metapacakge 名称 | 描述 | 链接 |
---|---|---|
navigation | 导航相关的功能包集 | https://github.com/ros-planning/navigation |
moveit | 运动规划相关的(主要是机械臂)功能包集 | https://github.com/ros-planning/moveit |
image_pipeline | 图像获取、处理相关的功能包集 | https://github.com/ros-perception/image_common |
vision_opencv | ROS与OpenCV交互的功能包集 | https://github.com/ros-perception/vision_opencv |
turtlebot Turtlebot | 机器人相关的功能包集 | https://github.com/turtlebot/turtlebotpr2_robot |
pr2 | 机器人驱动功能包集 | https://github.com/PR2/pr2_robot |
…… | …… | …… |
以上列举了一些常见的功能包集,例如 navigation、turtlebot,他们都是用于某一方面的功能,以navigation metapackage (官方介绍里仍然沿用 stack 的叫法)为例,它包括了以下软件包:
包名 | 功能 |
---|---|
navigation | Metapacakge,依赖以下所有pacakge |
amcl | 定位 |
fake_localization | 定位 |
map_server | 提供地图 |
move_base | 路径规划节点 |
nav_core | 路径规划的接口类 |
base_local_planner | 局部规划 |
dwa_local_planner | 局部规划 |
…… | …… |
这里介绍一个软件包navigation。这个navigation就是一个简单的pacakge,里面只有几个文件,但由于它依赖了其他所有的软件包。Catkin编译系统会明白,这些软件包都属于navigation metapacakge。
这个道理并不难理解,比如我们在安装 ROS 时,用到了 sudo apt-get install ros-kinetic-desktop-full
命令,由于它依赖了 ROS 所有的核心组件,我们在安装时也就能够安装整个 ROS。
launch文件
launch文件一般以 .launch 或. xml 结尾,它对 ROS 需要运行程序进行了打包,通过一句命令来启动。一般 launch 文件中会指定要启动哪些 package 下的哪些可执行程序,指定以什么参数启动,以及一些管理控制的命令。 launch文件通常放在软件包的 launch/ 路径中中。
msg/srv/action文件
ROS程序中有可能有一些自定义的消息/服务/动作文件,为程序的发者所设计的数据结构,这类的文件以 .msg ,.srv,.action 结尾,通常放在 package 的 msg/ ,srv/ ,action/ 路径下。
urdf/xacro文件
urdf/xacro 文件是机器人模型的描述文件,以 .urdf 或 .xacro 结尾。它定义了机器人的连杆和关节的信息,以及它们之间的位置、角度等信息,通过 urdf 文件可以将机器人的物理连接信息表示出来。并在可视化调试和仿真中显示。
dae/stl文件
dae 或 stl 文件是 3D 模型文件,机器人的 urdf 或仿真环境通常会引用这类文件,它们描述了机器人的三维模型。相比 urdf 文件简单定义的性状,dae/stl 文件可以定义复杂的模型,可以直接从 solidworks 或其他建模软件导出机器人装配模型,从而显示出更加精确的外形。
rviz文件
rviz 文件本质上是固定格式的文本文件,其中存储了 RViz 窗口的配置(显示哪些控件、视角、参数)。通常 rviz 文件不需要我们去手动修改,而是直接在 RViz 工具里保存,下次运行时直接读取。
以上的几种类型文件的编写,之后在做深入的学习。
=============================================================================
本文作为笔记查阅之用,无涉其他用途。