4.1.1 导航架构
Nav2的软件架构如何?或者说Nav2有哪些部分组成呢?Nav2官方提供了一张导航功能包集的图示,该图中囊括了Nav2导航的一些关键技术。

如图所示,Nav2的整体架构是比较复杂的,主要包括以下功能点:
- 地图服务:保存、加载地图,并通过服务提供地图数据。
- 机器人定位:在地图上定位机器人。
- 路径规划:规划一条从起点到终点的全局路径。
- 运动控制:控制机器人按照路径移动,并动态调整以避免碰撞。
- 路径平滑:使路径更加连续、流畅且可行。
- 感知:通过传感器获取周围环境信息。
- 行为树:使用行为树构建复杂且高度可定制的机器人行为。
- 恢复行为:在故障、人为干预或其他情况下执行预定义的行为。
- 多点导航:按照预设的一系列航点(waypoints)进行导航。
- 生命周期管理器:管理系统的程序生命周期并为服务器设置监控程序(看门狗)。
- 插件机制:易于动态加载的插件,用于创建自定义算法、行为等。
- 碰撞监控器:监控原始传感器数据以检测即将发生的碰撞或危险情况。
- Python 3 API:一个Python 3 API,用于以Pythonic的方式与Nav2及其内部任务服务器进行交互。
- 速度平滑器:使机器人的输出速度更加平滑,从而保证命令的动态可行性。
另外,Nav2还提供了一套初始插件,这些插件包括用于覆盖常见行为和机器人平台类型的跨领域算法的插件。