提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Node——ROS中最基本的程序单元
一、ROS的节点
Node(节点)以及节点的组织形式Package(包)
ROS的节点举例:
GMapping 管理建图的节点
Move_base 管理导航的节点
wpb_core 控制底盘的节点
rplidar_ros 驱动雷达的节点
虽然每个节点执行不同的逻辑功能,但是每个节点在代码上的结构是遵循一个固定的套路的:先执行A,再执行B…最后执行C,这些都是实现安排好的,如果不这样做就可能和ROS的核心配合失败,导致程序无法运行。
二、ROS的模块化设计理念
单个节点的功能一般不会太过复杂。
复杂任务的执行是多个节点相互合作的结果,单独去看某个节点会发现其只有单一的功能。
先从最简单的节点程序入手,先熟悉节点的基本结构,然后再往节点结构中逐步装填其它功能。
三、ROS的包(Package)
虽然ROS程序的基础单元是节点,但是在安装过程中不能只安装单一节点,而是以包为单位。
前面的turtlesim和wpr_simulation都是下载的一整个软件包,尽管在使用过程中只用到了包里的个别节点。
ROS采用的模块化设计理念,强调功能的相互独立。
ROS使用CMake和catkin作为编译工具,引入了Package(包)的概念,可以把节点规整起来,一次安装一个包相当于安装一组节点,省去了逐一安装节点的繁琐操作。
此外,可以将包视作节点的容器。
总结
简单介绍了ROS的节点和包的概念,解释了ROS的模块化设计理念。