一.Nav2是什么

        Nva2 是ROS2中面向移动机器人的一套完整导航框架,负责让机器人从A点移动到B点,并且是把地图、定位、全局规划、局部避障、轨迹跟踪、任务调度和异常恢复组织成一套能够真正运行在机器人上的软件系统。

        二.Nav2代码功能

        1.读取地图、构建成本地图。
        2.定位机器人在地图上的位置。
        3.计算全局路径(多种规划插件可选)。
        4.通过行为树协调导航流程。
        5.执行局部控制器,生成安全速度指令。
        6.监控碰撞、恢复策略、平滑速度。
        7.通过 RViz 和 Python API 提供可视化与上层调用接口。

        三.具体包的功能

        doc :官方文档、架构说明、设计、开发指南、使用案例等。
        nav2_bringup :启动脚本、配置、RViz 配置、地图、参数、示例 launch 文件,负责把整个导航栈“装起来”并运行。
        nav2_msgs :Nav2 的 ROS 消息、服务、动作定义。
        nav2_common :整个栈共享的支持代码、工具类、通用功能。
        nav2_util :通用工具函数和辅助代码。
        nav2_core :插件接口头文件,定义导航栈可插拔扩展点。

     1.  导航运行时组件

        nav2_bt_navigator

        行为树导航服务器,Nav2 的主导航节点之一。
        负责执行 NavigateToPose 类动作,协调各个模块。


        nav2_behavior_tree

        行为树相关支持。
        负责把行为树机制与 ROS 2 动作、服务、节点结合起来。


        nav2_behaviors

        恢复行为、动作行为等实现。
        处理导航失败时的恢复策略、行为节点逻辑。


        nav2_lifecycle_manager

        生命周期节点管理器。
        控制各个 Nav2 节点的初始化、配置、激活、关闭等生命周期状态。


        nav2_collision_monitor

        碰撞监控模块。
        监测机器人与环境的碰撞风险。

        2.规划相关包

        nav2_planner

        规划服务器接口。提供全局规划请求入口。

         nav2_navfn_planner

        基于 NavFn 的全局规划插件。


        nav2_smac_planner

        SMAC 规划插件,支持 A*、Hybrid A*、State Lattice 等算法。


        nav2_theta_star_planner

        Theta* 全局规划插件。


        nav2_route

        Route Graph 规划器,用于图结构路线规划。

        3.局部控制相关包        

        nav2_controller

        控制器动作接口。
        定义局部控制器的接口和管理。


        nav2_dwb_controller

        DWB(Dynamic Window Approach)局部控制器实现。


        nav2_mppi_controller

        MPPI(Model Predictive Path Integral)控制器实现。


        nav2_graceful_controller

        Graceful motion controller,平滑运动控制。


        nav2_regulated_pure_pursuit_controller

        受限纯追踪(Pure Pursuit)控制器。


        nav2_rotation_shim_controller

        旋转 shim 控制器,通常用于原地转向或旋转行为。


        nav2_velocity_smoother

        输出速度平滑器。
        对控制器生成的速度指令进行平滑处理。


        nav2_smoother

        平滑器动作接口。
        提供更高层次的轨迹/速度平滑动作。


        nav2_constrained_smoother

        基于 Ceres 的约束平滑器。
        用于对轨迹进行约束优化和平滑。

        4.地图与环境表示      

        nav2_map_server

        地图服务器,读取并发布静态栅格地图。


        nav2_costmap_2d

        2D 成本地图实现。
        负责构建静态地图 + 传感器-obstacle 层等成本信息。


        nav2_voxel_grid

        3D 体素栅格支持。
        主要用于更高维环境表示,如障碍物检测和规划辅助。

        5.定位与跟踪

        nav2_amcl

        自适应蒙特卡洛定位(AMCL)。
        负责机器人在已知地图上的位姿估计。


        nav2_waypoint_follower

        路径点跟踪导航服务器。
        用于让机器人按一系列 waypoint 顺序行驶。

        6.可视化/应用层支持      

        nav2_rviz_plugins

        Nav2 的 RViz 插件。
        用于导航数据、路径、目标等在 RViz 中显示。


        nav2_simple_commander

        Python 应用库。
        为写移动机器人应用提供简单接口,方便脚本式控制导航。

        7.测试与元包     

        nav2_system_tests

        系统级测试。
        用于验证整个导航栈在集成环境中的行为。


        navigation2

        元包,包含 Nav2 主要功能包。
        提供一个统一安装/构建目标。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐