云计算百科
云计算领域专业知识百科平台

【一看就会】nav2源码解析系列第一篇—nav2源码框架讲解

文章目录

  • 前言
  • 一、基础算法实现类(23个)
    • 定位(2个)
    • 感知(2个)
    • 全局规划(4个)
    • 路径平滑(2个)
    • 控制(8个)
    • 任务调度(5个)
  • 二、工具类(17个)
    • 接口定义(1个)
    • 消息(3个)
    • 通用工具(4个)
    • 数据结构(1个)
    • 管理节点(2个)
    • 可视化(1个)
    • 开发(1个)
    • 启动(1个)
    • 测试(1个)
  • 总结

前言

nav2下面有38个功能包,其中有7个在nav2_dwb_controller文件夹下面。 本文首先将这些功能包分类,梳理清楚谁是谁,哪些相互关联,后续再依次对各个功能包进行解析。

整个38个包,可以分为两大类: 1.基础算法实现类:这是整个项目的骨干,一共23个功能包。 2.工具类:消息类型,可视化,测试等功能包,一共14个功能包。

备注:里面还有navigation2,tools文件夹,这个和nav2的功能实现完全没关系,不用管。


一、基础算法实现类(23个)

基础算法实现类的23个功能包,根据其实现功能,又可以分为六类。

定位(2个)

nav2_amcl 粒子滤波定位算法 nav2_map_server 地图加载/保存/坐标转换逻辑

感知(2个)

nav2_costmap_2d 代价地图生成 + 各图层算法 nav2_collision_monitor 实时碰撞检测算法

全局规划(4个)

nav2_planner 规划调度服务 nav2_navfn_planner NavFn 寻路算法 nav2_smac_planner Smac 图搜索算法 nav2_theta_star_planner Theta* 算法

路径平滑(2个)

nav2_smoother 平滑服务 + SG/simple 算法 nav2_constrained_smoother 约束平滑算法

控制(8个)

nav2_controller 控制调度服务 dwb_core DWB 轨迹生成/评分核心框架 dwb_plugins DWB 轨迹生成算法实现 dwb_critics DWB 评分算法实现 nav2_mppi_controller MPPI 采样优化算法 nav2_regulated_pure_pursuit_controller 纯跟踪算法 nav2_rotation_shim_controller 旋转垫片算法 nav2_graceful_controller 平滑控制律算法

任务调度(5个)

上面那些功能包都分别干他们自己的活,还需要一些功能包把他们没做到的地方给串起来,这个就是这5个任务调度包的工作 nav2_behaviors 恢复行为执行逻辑 nav2_bt_navigator 行为树任务执行服务 nav2_behavior_tree BT 节点逻辑实现(编排的"指令集") nav2_waypoint_follower 航点任务执行 nav2_route 路由/意图提取算法

二、工具类(17个)

工具类根据他们的作用,可以分为9类。

接口定义(1个)

nav2_core 纯抽象接口(无实现)

消息(3个)

nav2_msgs 消息/服务/动作 nav_2d_msgs 2D 消息 dwb_msgs DWB 消息

通用工具(4个)

nav2_util 节点/话题/生命周期工具 nav2_common CMake 构建辅助 nav_2d_utils 2D 数学工具 costmap_queue 代价地图遍历数据结构

数据结构(1个)

nav2_voxel_grid 3D 体素存储

管理节点(2个)

nav2_lifecycle_manager 生命周期管理 nav2_velocity_smoother 速度限幅后处理节点

可视化(1个)

nav2_rviz_plugins RViz 插件

开发(1个)

nav2_simple_commander Python API 封装

启动(1个)

nav2_bringup launch/参数配置

测试(1个)

nav2_system_tests 系统测试


总结

之后会依次对每个包进行讲解,有些内容多的会单独一篇,有些不太重要的就几个包整一篇。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【一看就会】nav2源码解析系列第一篇—nav2源码框架讲解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!