前言:
ROS navigation stack是ROS提供的一个非常重要且常用的模块。它的主要作用是实现机器人的定位、导航和避障功能。在ROS wiki上,Maintainer把它的功能归纳为:“It takes in information from odometry and sensor streams and outputs velocity commands to send to a mobile base.”也就是说,navigation需要的输入是里程计信息(必选)、传感器信息(比如超声、红外、深度相机、激光等等),输出是可以控制机器人运动的一系列速度指令。这里有个小问题是,输入信息作者漏写了一点,没有map怎么行呢???至少在导航模式地图是必须要的,mapping 或者 exploration 模式会产生map,自然是不需要map。
接下来,先看一下代码里都有什么东西。
好像东西有点多,但是其实核心的文件只有几个。而且这17个文件的关系并不是并列,稍微梳理一下如下图。