自动驾驶
yolo5自动驾驶
1、重要!更换U盘的操作指引
2、关闭开机自启动大程序
3、Linux基础
4、YoloV5训练集
5、自动驾驶基础调试(代码解析)
6、自动驾驶特调
7、自动驾驶原理
8、PID算法理论
9、阿克曼运动学分析理论
10、建立运动学模型
常用命令
首次使用
一、原理分析
麦克纳姆轮运动学分析
二、AI大模型
3、AI大模型类型和原理
4、RAG检索增强和模型训练样本
5、具身智能机器人系统架构
6、具身智能玩法核心源码解读
7、配置AI大模型
三、深度相机
2、颜色标定
10、深度相机的基础使用
11、深度相机伪彩色图像
12、深度相机测距
13、深度相机色块体积测算
14、深度相机颜色跟随
15、深度相机人脸跟随
16、深度相机KCF物体跟随
17、深度相机Mediapipe手势跟随
18、深度相机视觉循迹自动驾驶
19、深度相机边缘检测
四、多模态视觉理解
20、多模态语义理解、指令遵循
21、多模态视觉理解
22、多模态视觉理解+自动追踪
23、多模态视觉理解+视觉跟随
24、多模态视觉理解+视觉巡线
25、多模态视觉理解+深度相机距离问答
26、多模态视觉理解+SLAM导航
27、多模态视觉理解+SLAM导航+视觉巡线
28、意图揣测+多模态视觉理解+SLAM导航+视觉功能
五、雷达
8、雷达基础使用
思岚系列雷达
六、建立地图
9、Gmapping建图
cartographer快速重定位导航
RTAB-Map导航
RTAB-Map建图
slam-toolbox建图
cartographer建图
Navigation2多点导航避障
Navigation2单点导航避障
手机APP建图与导航
七、新机器人自动驾驶与调整
多模态视觉理解+SLAM导航
新机器人自动驾驶
场地摆放及注意事项
启动测试
识别调试
无人驾驶的车道保持
无人驾驶路标检测
无人驾驶红绿灯识别
无人驾驶之定点停车
无人驾驶转向决策
无人驾驶之喇叭鸣笛
无人驾驶减速慢行
无人驾驶限速行驶
无人驾驶自主泊车
无人驾驶综合应用
无人驾驶融合AI大模型应用
八、路网规划
路网规划导航简介
构建位姿地图
路网标注
路网规划结合沙盘地图案例
九、模型训练
十、YOLOV11开发
多机通讯配置
汝城县职业中等专业学校知识库-信息中心朱老师编辑
-
+
首页
六、建立地图
Navigation2单点导航避障
Navigation2单点导航避障
## Navigation2单点导航避障 ### 1、程序功能说明 运行程序后,rviz中会加载地图。在rviz界面中,用【2D Pose Estimate】工具给定小车初始位姿,然后用【2D Goal Pose】工具给定小车一个目标点。小车结合自身环境,会规划出一条路径并且根据规划的路径移动到目的地,期间如果遇到障碍物,会自助避障,到达目的地后停车。 ### 2、Navigation2简介 #### 2.1 简介 Navigation2整体架构图  Navigation2具有下列工具: * 加载、提供和存储地图的工具(地图服务器Map Server) * 在地图上定位机器人的工具 (AMCL) * 避开障碍物从A点移动到B点的路径规划工具(Nav2 Planner) * 跟随路径过程中控制机器人的工具(Nav2 Controller) * 将传感器数据转换为机器人世界中的成本地图表达的工具(Nav2 Costmap 2D) * 使用行为树构建复杂机器人行为的工具(Nav2 行为树和BT Navigator) * 发生故障时计算恢复行为的工具(Nav2 Recoveries) * 跟随顺序航点的工具(Nav2 Waypoint Follower) * 管理服务器生命周期的工具和看门狗(Nav2 Lifecycle Manager) * 启用用户自定义算法和行为的插件(Nav2 Core) Navigation 2(Nav 2)是ROS 2中自带的导航框架,其目的是能够通过一种安全的方式使移动机器人从A点移动到B点。所以,Nav 2可以完成动态路径规划、计算电机速度、避开障碍物和恢复结构等行为。 Nav 2使用行为树(BT,Behavior Trees)调用模块化服务器来完成一个动作。动作可以是计算路径、控制工作(control efforts)、恢复或其他与导航相关的动作。这些动作都是通过动作服务器与行为树(BT)进行通信的独立节点。 #### 2.2 相关资料 Navigation2 文档:[https://navigation.ros.org/index.html](https://navigation.ros.org/index.html) Navigation2 github:[https://github.com/ros-planning/navigation2](https://github.com/ros-planning/navigation2) Navigation2 对应的论文:[https://arxiv.org/pdf/2003.00368.pdf](https://arxiv.org/pdf/2003.00368.pdf) ### 3、运行案例 #### 3.1 使用前说明 本节课程以树莓派5为例。树莓派5和Jetson-nano主板,需要在宿主机中打开终端,然后输入进入docker容器的指令,进入到docker容器后的终端里边输入本节课程提及的指令,宿主机进入docker容器的教程可以参考本产品教程**【机器人配置与操作指引】中的【5、进入小车Docker(Jetson-Nano和树莓派5用户看这里)】**的内容。RDKX5、Orin主板直接打开终端,输入本节课程提及的指令即可。 #### 3.2 单点导航功能 **注意:** * **jetson nano、树莓派**系列主控需要先进入docker容器**(步骤请参见【Docker课程】--- 【4、Docker启动脚本】)** 下面所有指令的docker终端都需要进入同一个docker容器后执行**(步骤请参见【Docker课程】--- 【3、Docker提交与多终端进入】)** * 本章节课程需要至少已经存在一张已经建好的地图,参考**【5、gmapping建图】、【6、cartographer建图】、【7、slam\_toolx建图】**任意一节SLAM建图课程 机器人车机终端启动底层传感器命令: ` ros2 launch yahboomcar_nav laser_bringup_launch.py `  输入指令启动rviz可视化建图 (rviz可视化功能在车机端或虚拟机端启动都可以,**任选一种**方式启动,禁止虚拟机端和车机端重复启动:),下图是在车机端输入, ` ros2 launch yahboomcar_nav display_nav_launch.py `  此时还没有显示地图加载,因为还没有启动导航的程序,所以没有地图加载。接下来运行导航节点,终端输入 ``` #导航算法二选一 #teb ros2 launch yahboomcar_nav navigation_teb_launch.py #dwa ros2 launch yahboomcar_nav navigation_dwa_launch.py ```  此时可以看到地图加载进去了,然后我们点击【2D Pose Estimate】,给小车设置初始位姿,根据小车在实际环境中的位置,在rviz中用鼠标点击拖动,小车模型移动我们设置的位置。如下图所示,雷达扫描的区域与实际障碍物大致重合则表示位姿准确。位姿初始化完成后,rviz界面中会出现机器人模型和膨胀区域  单点导航,点击【2D Goal Pose】工具,然后在rviz中使用鼠标选择一个目标点和目标朝向,然后释放  小车结合周围的情况,规划出一条路径并且沿着路径移动到目标点。  机器人成功抵达目标点后,车机终端会提示 Goal succeeded,代表导航成功  ### 4、查看节点通讯图 终端输入:`ros2 run rqt_graph rqt_graph` 如果一开始没有显示,选择【Nodes/Topics(all)】,然后点击左上角的刷新按钮,原图尺寸过大,可以在本节课程文件夹下查看  ### 5、查看TF树 终端输入:`ros2 run rqt_tf_tree rqt_tf_tree` 如果一开始没有显示,点击左上角的刷新符号刷新页面,原图尺寸过大,可以在本节课程文件夹下查看  ### 6、导航讲解 #### 6.1 导航流程核心步骤 ##### 6.1.1 阶段 1:系统初始化与地图加载 * **地图获取** * 从`map_server`加载预构建的栅格地图 * 地图包含静态障碍物信息,作为导航的基础环境模型。 **代价地图初始化** * **全局代价地图(Global Costmap)**:基于静态地图,用于全局路径规划。 * **局部代价地图(Local Costmap)**:实时融合激光雷达的`scan`话题用于动态障碍物避障。 ##### 6.1.2 阶段 2:传感器数据处理与环境感知 **传感器数据接入** * 激光雷达(`/scan`)、IMU(`/imu/data`)、里程计(`/odom`)数据通过 ROS 话题输入。 * **代价地图更新** * 局部代价地图实时更新动态障碍物信息,每个栅格根据传感器数据计算占用概率和代价(如距离障碍物越近,代价越高)。 * 膨胀处理(Inflation):将障碍物边缘扩展,避免机器人过于靠近障碍物。 * ##### 6.1.3 阶段 3:路径规划(全局规划与局部规划) **全局路径规划** * 输入:起点(机器人当前位姿)、终点(目标位姿)、全局代价地图。 * 规划器算法Dijkstra生成从起点到终点的最优路径(一系列离散的坐标点)。 **局部路径规划与跟踪** 局部规划器DWBLocalPlanner根据全局路径和局部代价地图,生成机器人可执行的短时间内的控制指令。 ##### 6.1.4 阶段 4:控制执行与行为决策 **控制器输出** * 控制器将局部路径转换为机器人的线速度(`linear.x`)和角速度(`angular.z`),通过`/cmd_vel`话题发布。 * 速度平滑处理:避免机器人运动突变,提高稳定性。 **行为树决策流程** 行为树定义导航任务的优先级和状态转移逻辑,典型流程: 1. **检查目标是否可达**:若全局规划失败,触发 “恢复行为”(如重新规划)。 2. **执行局部避障**:当局部代价地图检测到障碍物时,暂时偏离全局路径。 3. **到达目标**:当机器人位姿与目标位姿误差小于阈值时,任务完成。 **恢复行为机制** 当导航遇到异常(如路径被完全阻塞),触发预设的恢复策略(如旋转搜索新路径、后退重新规划)。 #### 6.2 关键技术原理 ##### 6.2.1 代价地图 * **概率栅格表示**:每个栅格存储占用概率(0-1),通过传感器数据更新(如激光雷达的射线检测)。 * **多层代价叠加**:静态代价(地图障碍物)+ 动态代价(实时传感器检测的障碍物)+ 膨胀代价(安全距离)。 Costmap是机器人收集传感器信息建立和更新的二维或三维地图,可以从下图简要了解。  上图中,红色部分代表costmap中的障碍物,蓝色部分表示通过机器人内切圆半径膨胀出的障碍,红色多边形是footprint(机器人轮廓的垂直投影)。为了避免碰撞,footprint不应该和红色部分有交叉,机器人中心不应该与蓝色部分有交叉。 ROS的代价地图(costmap)采用网格(grid)形式,每个网格的值(cell cost)从0~255。分成三种状态:被占用(有障碍)、自由区域(无障碍)、未知区域; 具体状态和值对应有下图: 上图可分为五部分,其中红色多边形区域为机器人的轮廓: * Lethal(致命的):机器人的中心与该网格的中心重合,此时机器人必然与障碍物冲突。 * Inscribed(内切):网格的外切圆与机器人的轮廓内切,此时机器人也必然与障碍物冲突。 * Possibly circumscribed(外切):网格的外切圆与机器人的轮廓外切,此时机器人相当于靠在障碍物附近,所以不一定冲突。 * Freespace(自由空间):没有障碍物的空间。 * Unknown(未知):未知的空间。 全局代价地图:  局部代价地图:  ##### 6.2.2 AMCL定位算法 AMCL(自适应蒙特卡洛定位) 是用于2D移动机器人的概率定位系统,它实现了自适应(或KLD采样)蒙特卡洛定位方法,可以根据已有地图使用粒子滤波器推算机器人位置。 如下图所示,如果里程计没有误差,完美的情况下,我们可以直接使用里程计信息(上半图)推算出机器人(base\_frame)相对里程计坐标系的位置。但现实情况,里程计存在漂移以及无法忽略的累计误差,所以AMCL采用下半图的方法,即先根据里程计信息初步定位base\_frame,然后通过测量模型得到base\_frame相对于map\_frame(全局地图坐标系),也就知道了机器人在地图中的位姿。(注意,这里虽然估计的是base到map的转换,但最后发布的是map到odom的转换,可以理解为里程计的漂移。)  在机器人导航时的TF树中,其中map(地图坐标系)—odom(里程计坐标系)之间坐标变换由AMCL定位算法发布,而odom(里程计坐标系)—besel_footprint(机器人底盘中心点投影坐标系)之间的坐标变换由**robot\_localization**功能包下的**ekf_filter_node**节点发布,其作用是发布IMU传感器和编码器原始里程融合后的里程计信息。  在前边查看节点通信图中,我们可找到关于ekf_filter_node的通信数据流 其中/driver_node节点为机器人底盘节点,发布了**/imu/data_raw**(IMU传感器原始数据)、**/odom_raw**(编码器原始里程计数据) imu_filter节点订阅了机器人底盘发布的**/imu/data_raw**(IMU传感器原始数据),imu_filter节点对IMU传感器原始数据进行滤波后发布/imu/data话题 **ekf_filter_node**节点订阅了/**odom**话题和**/imu/data**话题数据,将多传感器数据融合后发布**/odom**话题  #### 6.3 路径规划 ##### 6.3.1 全局路径规划 全局路径规划作用是在已知环境地图中,根据起点和终点计算一条最优或可行的全局路径,不考虑实时障碍物,以全局最优为目标,计算从起点到终点的路径,如下图所示,箭头连成的路径即为全局路径  ##### 6.3.2 局部路径规划 局部路径规划作用是在机器人运动过程中,根据实时激光雷达传感器数据动态调整路径,避开障碍物(障碍物会在代价地图中显示)。如下图所是,蓝色路径为局部路径。  #### 6.4 导航参数配置 **jetson nano、树莓派需要先进入docker** 配置文件路径: ` ~/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_nav/params/teb_nav_params.yaml ` TEB算法导航功能默认配置参数如下: ``` amcl: ros__parameters: use_sim_time: False # 是否使用仿真时间 alpha1: 0.1 # 里程计旋转误差模型参数 alpha2: 0.1 # 里程计平移误差模型参数 alpha3: 0.3 # 里程计平移误差模型参数 alpha4: 0.3 # 里程计旋转误差模型参数 alpha5: 0.1 # 里程计旋转误差模型参数 base_frame_id: "base_footprint" # 机器人基座坐标系 beam_skip_distance: 0.5 # 光束跳过距离阈值 beam_skip_error_threshold: 0.9 # 光束跳过误差阈值 beam_skip_threshold: 0.3 # 光束跳过阈值 do_beamskip: false # 是否启用光束跳过 global_frame_id: "map" # 全局坐标系 lambda_short: 0.1 # 激光模型短距离权重 laser_likelihood_max_dist: 2.0 # 激光似然场最大距离 laser_max_range: 100.0 # 激光最大有效距离 laser_min_range: -1.0 # 激光最小有效距离 laser_model_type: "likelihood_field" # 激光模型类型(似然场) max_beams: 50 # 每次处理的最大激光束数 max_particles: 4000 # 最大粒子数 min_particles: 1000 # 最小粒子数 odom_frame_id: "odom" # 里程计坐标系 pf_err: 0.05 # 粒子滤波器误差阈值 pf_z: 0.99 # 粒子滤波器权重指数 recovery_alpha_fast: 0.0 # 快速恢复参数 recovery_alpha_slow: 0.0 # 慢速恢复参数 resample_interval: 1 # 重采样间隔 robot_model_type: "nav2_amcl::DifferentialMotionModel" # 机器人运动模型 save_pose_rate: 0.5 # 保存位姿的速率 sigma_hit: 0.2 # 激光模型标准差 tf_broadcast: true # 是否广播TF变换 transform_tolerance: 1.0 # TF变换容差 update_min_a: 0.15 # 最小角度变化触发更新 update_min_d: 0.15 # 最小距离变化触发更新 z_hit: 0.5 # 激光模型命中权重 z_max: 0.05 # 激光模型最大距离权重 z_rand: 0.5 # 激光模型随机权重 z_short: 0.05 # 激光模型短距离权重 scan_topic: scan # 激光扫描话题 amcl_map_client: ros__parameters: use_sim_time: False # 是否使用仿真时间 amcl_rclcpp_node: ros__parameters: use_sim_time: False # 是否使用仿真时间 bt_navigator: ros__parameters: use_sim_time: False # 是否使用仿真时间 global_frame: map # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 odom_topic: /odom # 里程计话题 plugin_lib_names: # 行为树插件库列表 - nav2_compute_path_to_pose_action_bt_node - nav2_compute_path_through_poses_action_bt_node # ...(其他行为树节点插件) bt_navigator_rclcpp_node: ros__parameters: use_sim_time: False # 是否使用仿真时间 controller_server: ros__parameters: use_sim_time: False # 是否使用仿真时间 controller_frequency: 30.0 # 控制器频率 min_x_velocity_threshold: 0.001 # X方向最小速度阈值 min_y_velocity_threshold: 0.0 # Y方向最小速度阈值 min_theta_velocity_threshold: 0.001 # 旋转最小速度阈值 progress_checker_plugin: "progress_checker" # 进度检查器插件 goal_checker_plugin: "goal_checker" # 目标检查器插件 controller_plugins: ["FollowPath"] # 控制器插件列表 # 进度检查器参数 progress_checker: plugin: "nav2_controller::SimpleProgressChecker" # 简单进度检查器 required_movement_radius: 0.3 # 要求移动半径 movement_time_allowance: 3.5 # 移动时间容限 # 目标检查器参数 goal_checker: plugin: "nav2_controller::SimpleGoalChecker" # 简单目标检查器 xy_goal_tolerance: 0.25 # XY位置容差 yaw_goal_tolerance: 0.25 # 航向角容差 stateful: True # 是否保持状态 # TEB局部规划器参数 FollowPath: plugin: "teb_local_planner::TebLocalPlannerROS" # TEB局部规划器 footprint_model.type: circular # 机器人足迹模型(圆形) footprint_model.radius: 0.1 # 机器人半径 min_obstacle_dist: 0.1 # 最小障碍物距离 inflation_dist: 0.1 # 膨胀距离 costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSMCCH" # 代价地图转换插件 costmap_converter_spin_thread: True # 转换器是否使用独立线程 costmap_converter_rate: 20 # 转换器频率 enable_homotopy_class_planning: True # 启用同伦类规划 enable_multithreading: True # 启用多线程 optimization_verbose: False # 优化过程是否详细输出 teb_autoresize: True # 自动调整轨迹点数量 min_samples: 3 # 最小轨迹点数 max_samples: 20 # 最大轨迹点数 max_global_plan_lookahead_dist: 1.0 # 全局规划前瞻距离 visualize_hc_graph: True # 是否可视化同伦图 max_vel_x: 0.26 # 最大线速度 min_vel_x: -0.26 # 最小线速度(后退) max_vel_theta: 3.0 # 最大角速度 min_vel_theta: -3.0 # 最小角速度 acc_lim_x: 2.5 # X方向加速度限制 acc_lim_theta: 3.2 # 旋转加速度限制 costmap_converter: ros__parameters: use_sim_time: False # 是否使用仿真时间 controller_server_rclcpp_node: ros__parameters: use_sim_time: False # 是否使用仿真时间 local_costmap: local_costmap: ros__parameters: use_sim_time: False # 是否使用仿真时间 update_frequency: 5.0 # 更新频率 publish_frequency: 2.0 # 发布频率 global_frame: odom # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 rolling_window: true # 是否使用滚动窗口 width: 3 # 代价地图宽度(米) height: 3 # 代价地图高度(米) resolution: 0.05 # 分辨率(米/像素) robot_radius: 0.1 # 机器人半径 plugins: ["obstacle_layer", "voxel_layer", "inflation_layer"] # 图层插件 inflation_layer: # 膨胀层参数 plugin: "nav2_costmap_2d::InflationLayer" # 膨胀层插件 cost_scaling_factor: 5.0 # 代价缩放因子 inflation_radius: 0.11 # 膨胀半径 obstacle_layer: # 障碍物层参数 plugin: "nav2_costmap_2d::ObstacleLayer" # 障碍物层插件 enabled: True # 是否启用 observation_sources: scan # 观测源(激光) scan: # 激光参数 topic: /scan # 激光话题 max_obstacle_height: 2.0 # 最大障碍物高度 obstacle_min_range: 0.1 # 最小障碍物距离 clearing: True # 是否用于清除空间 marking: True # 是否用于标记障碍 data_type: "LaserScan" # 数据类型 voxel_layer: # 体素层参数 plugin: "nav2_costmap_2d::VoxelLayer" # 体素层插件 enabled: True # 是否启用 publish_voxel_map: True # 是否发布体素地图 origin_z: 0.0 # Z轴原点 z_resolution: 0.2 # Z轴分辨率 z_voxels: 10 # Z轴体素数 max_obstacle_height: 2.0 # 最大障碍物高度 mark_threshold: 0 # 标记阈值 observation_sources: pointcloud # 观测源(点云) pointcloud: # 点云参数 topic: /intel_realsense_r200_depth/points # 点云话题 max_obstacle_height: 2.0 # 最大障碍物高度 clearing: True # 是否用于清除空间 marking: True # 是否用于标记障碍 data_type: "PointCloud2" # 数据类型 static_layer: # 静态层参数 map_subscribe_transient_local: True # 使用瞬态本地订阅 always_send_full_costmap: True # 总是发送完整代价地图 local_costmap_client: ros__parameters: use_sim_time: False # 是否使用仿真时间 local_costmap_rclcpp_node: ros__parameters: use_sim_time: False # 是否使用仿真时间 global_costmap: global_costmap: ros__parameters: use_sim_time: False # 是否使用仿真时间 footprint_padding: 0.03 # 足迹填充 update_frequency: 1.0 # 更新频率 publish_frequency: 1.0 # 发布频率 global_frame: map # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 robot_radius: 0.1 # 机器人半径 resolution: 0.05 # 分辨率 plugins: ["static_layer", "obstacle_layer", "voxel_layer", "inflation_layer"] # 图层插件 obstacle_layer: # 障碍物层参数 plugin: "nav2_costmap_2d::ObstacleLayer" # 障碍物层插件 enabled: True # 是否启用 observation_sources: scan # 观测源(激光) footprint_clearing_enabled: true # 是否启用足迹清除 max_obstacle_height: 2.0 # 最大障碍物高度 combination_method: 1 # 组合方法 scan: # 激光参数 topic: /scan # 激光话题 obstacle_range: 3.0 # 障碍物检测范围 obstacle_min_range: 0.3 # 最小障碍物距离 raytrace_range: 4.0 # 光线追踪范围 max_obstacle_height: 1.0 # 最大障碍物高度 min_obstacle_height: 0.0 # 最小障碍物高度 clearing: True # 是否用于清除空间 marking: True # 是否用于标记障碍 data_type: "LaserScan" # 数据类型 inf_is_valid: false # 无限距离是否有效 voxel_layer: # 体素层参数 plugin: "nav2_costmap_2d::VoxelLayer" # 体素层插件 enabled: True # 是否启用 footprint_clearing_enabled: true # 是否启用足迹清除 max_obstacle_height: 2.0 # 最大障碍物高度 publish_voxel_map: True # 是否发布体素地图 origin_z: 0.0 # Z轴原点 z_resolution: 0.05 # Z轴分辨率 z_voxels: 16 # Z轴体素数 unknown_threshold: 15 # 未知区域阈值 mark_threshold: 0 # 标记阈值 observation_sources: pointcloud # 观测源(点云) combination_method: 1 # 组合方法 pointcloud: # 点云参数 topic: /intel_realsense_r200_depth/points # 点云话题 max_obstacle_height: 2.0 # 最大障碍物高度 min_obstacle_height: 0.0 # 最小障碍物高度 obstacle_range: 2.5 # 障碍物检测范围 raytrace_range: 3.0 # 光线追踪范围 clearing: True # 是否用于清除空间 marking: True # 是否用于标记障碍 data_type: "PointCloud2" # 数据类型 static_layer: # 静态层参数 plugin: "nav2_costmap_2d::StaticLayer" # 静态层插件 map_subscribe_transient_local: True # 使用瞬态本地订阅 enabled: true # 是否启用 subscribe_to_updates: true # 是否订阅更新 transform_tolerance: 0.1 # 变换容差 inflation_layer: # 膨胀层参数 plugin: "nav2_costmap_2d::InflationLayer" # 膨胀层插件 enabled: true # 是否启用 cost_scaling_factor: 5.0 # 代价缩放因子 inflation_radius: 0.11 # 膨胀半径 inflate_unknown: false # 是否膨胀未知区域 inflate_around_unknown: true # 是否在未知区域周围膨胀 always_send_full_costmap: True # 总是发送完整代价地图 global_costmap_client: ros__parameters: use_sim_time: False # 是否使用仿真时间 global_costmap_rclcpp_node: ros__parameters: use_sim_time: False # 是否使用仿真时间 map_server: ros__parameters: use_sim_time: False # 是否使用仿真时间 yaml_filename: "yahboomcar.yaml" # 地图YAML文件路径 map_saver: ros__parameters: use_sim_time: False # 是否使用仿真时间 save_map_timeout: 5.0 # 保存地图超时时间 free_thresh_default: 0.25 # 空闲阈值默认值 occupied_thresh_default: 0.65 # 占用阈值默认值 map_subscribe_transient_local: True # 使用瞬态本地订阅 planner_server: ros__parameters: expected_planner_frequency: 20.0 # 期望规划器频率 use_sim_time: False # 是否使用仿真时间 planner_plugins: ["GridBased"] # 规划器插件列表 GridBased: plugin: "nav2_navfn_planner/NavfnPlanner" # Navfn规划器 tolerance: 0.5 # 目标点容差 use_astar: false # 是否使用A*算法 allow_unknown: true # 是否允许未知区域 planner_server_rclcpp_node: ros__parameters: use_sim_time: False # 是否使用仿真时间 behavior_server: ros__parameters: costmap_topic: local_costmap/costmap_raw # 代价地图话题 footprint_topic: local_costmap/published_footprint # 足迹话题 cycle_frequency: 10.0 # 行为执行频率 behavior_plugins: ["backup"] # 行为插件列表 backup: # 后退行为参数 plugin: "nav2_behaviors/BackUp" # 后退行为插件 backup_speed: -1.0 # 后退速度 backup_duration: 1.5 # 后退持续时间 simulate_ahead_time: 2.0 # 模拟提前时间 global_frame: odom # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 transform_timeout: 0.1 # 变换超时 use_sim_time: False # 是否使用仿真时间 simulate_ahead_time: 2.0 # 模拟提前时间 max_rotational_vel: 1.0 # 最大旋转速度 min_rotational_vel: 0.4 # 最小旋转速度 rotational_acc_lim: 3.2 # 旋转加速度限制 robot_state_publisher: ros__parameters: use_sim_time: False # 是否使用仿真时间 waypoint_follower: ros__parameters: loop_rate: 20 # 循环频率 stop_on_failure: false # 失败时是否停止 waypoint_task_executor_plugin: "wait_at_waypoint" # 航点任务执行器插件 wait_at_waypoint: # 航点等待参数 plugin: "nav2_waypoint_follower::WaitAtWaypoint" # 航点等待插件 enabled: True # 是否启用 waypoint_pause_duration: 200 # 航点暂停时间(毫秒) dwa算法导航功能默认配置参数如下: amcl: ros__parameters: use_sim_time: False # 是否使用仿真时间 (Gazebo等) alpha1: 0.2 # 运动模型中的平移噪声参数 (x方向) alpha2: 0.2 # 运动模型中的平移噪声参数 (y方向) alpha3: 0.2 # 运动模型中的旋转噪声参数 alpha4: 0.2 # 运动模型中的平移噪声参数 (末端旋转) alpha5: 0.2 # 运动模型中的旋转噪声参数 (末端旋转) base_frame_id: "base_footprint" # 机器人基座坐标系 beam_skip_distance: 0.5 # 光束跳过距离(米) beam_skip_error_threshold: 0.9 # 光束跳过错误阈值 beam_skip_threshold: 0.3 # 光束跳过阈值 do_beamskip: false # 是否启用光束跳过功能 global_frame_id: "map" # 全局地图坐标系 lambda_short: 0.1 # 短距离测量的权重 laser_likelihood_max_dist: 2.0 # 激光似然场最大距离(米) laser_max_range: 100.0 # 激光最大测距范围(米) laser_min_range: -1.0 # 激光最小测距范围(米) laser_model_type: "likelihood_field" # 激光模型类型 (似然场模型) max_beams: 50 # 每次更新使用的最大激光束数 max_particles: 4000 # 最大粒子数 min_particles: 1000 # 最小粒子数 odom_frame_id: "odom" # 里程计坐标系 pf_err: 0.05 # 粒子滤波器错误阈值 pf_z: 0.99 # 粒子滤波器z值 recovery_alpha_fast: 0.0 # 快速恢复alpha值 recovery_alpha_slow: 0.0 # 慢速恢复alpha值 resample_interval: 1 # 重采样间隔 robot_model_type: "nav2_amcl::DifferentialMotionModel" # 机器人运动模型 (差速驱动) save_pose_rate: 0.5 # 保存位姿的速率(Hz) sigma_hit: 0.2 # 激光测量噪声标准差 tf_broadcast: true # 是否广播TF变换 transform_tolerance: 1.0 # TF变换容忍时间(秒) update_min_a: 0.2 # 最小角度变化触发更新(弧度) update_min_d: 0.25 # 最小距离变化触发更新(米) z_hit: 0.5 # 命中测量的权重 z_max: 0.05 # 最大范围测量的权重 z_rand: 0.5 # 随机测量的权重 z_short: 0.05 # 短距离测量的权重 scan_topic: scan # 激光扫描数据的话题名称 # 初始位置设置 (示例,当前被注释) # set_initial_pose: true # initial_pose: # x: 0.0 # y: 0.0 # z: 0.0 # yaw: 0.0 # AMCL相关组件的参数 amcl_map_client: ros__parameters: use_sim_time: False amcl_rclcpp_node: ros__parameters: use_sim_time: False # 行为树导航器配置 bt_navigator: ros__parameters: use_sim_time: False global_frame: map # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 odom_topic: /odom # 里程计数据的话题 default_bt_xml_filename: "navigate_to_pose_w_replanning_and_recovery.xml" # 默认行为树文件 plugin_lib_names: # 行为树插件库列表 - nav2_compute_path_to_pose_action_bt_node - nav2_compute_path_through_poses_action_bt_node - nav2_smooth_path_action_bt_node - nav2_follow_path_action_bt_node - nav2_spin_action_bt_node - nav2_wait_action_bt_node - nav2_assisted_teleop_action_bt_node - nav2_back_up_action_bt_node - nav2_drive_on_heading_bt_node - nav2_clear_costmap_service_bt_node - nav2_is_stuck_condition_bt_node - nav2_goal_reached_condition_bt_node - nav2_goal_updated_condition_bt_node - nav2_globally_updated_goal_condition_bt_node - nav2_is_path_valid_condition_bt_node - nav2_initial_pose_received_condition_bt_node - nav2_reinitialize_global_localization_service_bt_node - nav2_rate_controller_bt_node - nav2_distance_controller_bt_node - nav2_speed_controller_bt_node - nav2_truncate_path_action_bt_node - nav2_truncate_path_local_action_bt_node - nav2_goal_updater_node_bt_node - nav2_recovery_node_bt_node - nav2_pipeline_sequence_bt_node - nav2_round_robin_node_bt_node - nav2_transform_available_condition_bt_node - nav2_time_expired_condition_bt_node - nav2_path_expiring_timer_condition - nav2_distance_traveled_condition_bt_node - nav2_single_trigger_bt_node - nav2_goal_updated_controller_bt_node - nav2_is_battery_low_condition_bt_node - nav2_navigate_through_poses_action_bt_node - nav2_navigate_to_pose_action_bt_node - nav2_remove_passed_goals_action_bt_node - nav2_planner_selector_bt_node - nav2_controller_selector_bt_node - nav2_goal_checker_selector_bt_node - nav2_controller_cancel_bt_node - nav2_path_longer_on_approach_bt_node - nav2_wait_cancel_bt_node - nav2_spin_cancel_bt_node - nav2_back_up_cancel_bt_node - nav2_assisted_teleop_cancel_bt_node - nav2_drive_on_heading_cancel_bt_node - nav2_is_battery_charging_condition_bt_node # 行为树导航器节点参数 bt_navigator_rclcpp_node: ros__parameters: use_sim_time: False # 控制器服务器配置 controller_server: ros__parameters: use_sim_time: False controller_frequency: 10.0 # 控制器运行频率(Hz) min_x_velocity_threshold: 0.001 # X方向最小速度阈值(m/s) min_y_velocity_threshold: 0.5 # Y方向最小速度阈值(m/s) min_theta_velocity_threshold: 0.001 # 旋转最小速度阈值(rad/s) controller_plugins: ["FollowPath"] # 使用的控制器插件列表 # DWB控制器参数 FollowPath: plugin: "dwb_core::DWBLocalPlanner" # 控制器类型 debug_trajectory_details: True # 是否调试轨迹细节 min_vel_x: 0.0 # 最小X方向速度(m/s) min_vel_y: 0.0 # 最小Y方向速度(m/s) max_vel_x: 0.3 # 最大X方向速度(m/s) max_vel_y: 0.0 # 最大Y方向速度(m/s) max_vel_theta: 0.6 # 最大旋转速度(rad/s) min_speed_xy: 0.0 # 最小XY平面速度(m/s) max_speed_xy: 0.3 # 最大XY平面速度(m/s) min_speed_theta: 0.0 # 最小旋转速度(rad/s) acc_lim_x: 0.25 # X方向加速度限制(m/s²) acc_lim_y: 0.0 # Y方向加速度限制(m/s²) acc_lim_theta: 0.4 # 旋转加速度限制(rad/s²) decel_lim_x: -0.25 # X方向减速度限制(m/s²) decel_lim_y: 0.0 # Y方向减速度限制(m/s²) decel_lim_theta: -0.4 # 旋转减速度限制(rad/s²) vx_samples: 20 # X方向速度采样数 vy_samples: 0 # Y方向速度采样数 vtheta_samples: 40 # 旋转速度采样数 sim_time: 1.5 # 轨迹模拟时间(s) linear_granularity: 0.05 # 线速度粒度(m/s) angular_granularity: 0.025 # 角速度粒度(rad/s) transform_tolerance: 0.2 # TF变换容忍时间(s) xy_goal_tolerance: 0.15 # XY目标容差(m) trans_stopped_velocity: 0.25 # 停止时的平移速度(m/s) short_circuit_trajectory_evaluation: True # 是否使用短路轨迹评估 stateful: True # 是否保持状态 critics: # 轨迹评估器列表 - "RotateToGoal" - "Oscillation" - "BaseObstacle" - "GoalAlign" - "PathAlign" - "PathDist" - "GoalDist" BaseObstacle.scale: 0.02 # 基础障碍物评估器缩放因子 PathAlign.scale: 16.0 # 路径对齐评估器缩放因子 PathAlign.forward_point_distance: 0.1 # 路径对齐前视点距离(m) GoalAlign.scale: 24.0 # 目标对齐评估器缩放因子 GoalAlign.forward_point_distance: 0.1 # 目标对齐前视点距离(m) PathDist.scale: 32.0 # 路径距离评估器缩放因子 GoalDist.scale: 24.0 # 目标距离评估器缩放因子 RotateToGoal.scale: 64.0 # 旋转到目标评估器缩放因子 RotateToGoal.slowing_factor: 5.0 # 旋转到目标减速因子 RotateToGoal.lookahead_time: -1.0 # 旋转到目标前视时间(s) # 控制器服务器节点参数 controller_server_rclcpp_node: ros__parameters: use_sim_time: False # 局部代价地图配置 local_costmap: local_costmap: ros__parameters: update_frequency: 5.0 # 更新频率(Hz) publish_frequency: 2.0 # 发布频率(Hz) global_frame: odom # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 use_sim_time: False rolling_window: true # 是否使用滚动窗口 width: 3 # 地图宽度(m) height: 3 # 地图高度(m) resolution: 0.05 # 分辨率(m/像素) robot_radius: 0.1 # 机器人半径(m) plugins: ["obstacle_layer", "inflation_layer"] # 使用的图层 inflation_layer: plugin: "nav2_costmap_2d::InflationLayer" # 膨胀层插件 inflation_radius: 0.22 # 膨胀半径(m) cost_scaling_factor: 6.0 # 成本缩放因子 obstacle_layer: plugin: "nav2_costmap_2d::ObstacleLayer" # 障碍物层插件 enabled: True # 是否启用障碍物层 observation_sources: scan # 观测源 scan: topic: /scan # 激光扫描话题 max_obstacle_height: 2.0 # 最大障碍物高度(m) obstacle_min_range: 0.1 # 障碍物最小范围(m) clearing: True # 是否清除障碍物 marking: True # 是否标记障碍物 data_type: "LaserScan" # 数据类型 static_layer: map_subscribe_transient_local: True # 静态地图订阅传输方式 always_send_full_costmap: True # 是否始终发送完整代价地图 # 局部代价地图客户端参数 local_costmap_client: ros__parameters: use_sim_time: False # 局部代价地图节点参数 local_costmap_rclcpp_node: ros__parameters: use_sim_time: False # 全局代价地图配置 global_costmap: global_costmap: ros__parameters: footprint_padding: 0.03 # 机器人轮廓填充(m) update_frequency: 1.0 # 更新频率(Hz) publish_frequency: 1.0 # 发布频率(Hz) global_frame: map # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 use_sim_time: False robot_radius: 0.1 # 机器人半径(m) resolution: 0.05 # 分辨率(m/像素) plugins: ["static_layer", "obstacle_layer", "inflation_layer"] # 使用的图层 obstacle_layer: plugin: "nav2_costmap_2d::ObstacleLayer" # 障碍物层插件 enabled: True # 是否启用障碍物层 observation_sources: scan # 观测源 scan: topic: /scan # 激光扫描话题 raytrace_range: 3.0 # 光线追踪范围(m) obstacle_min_range: 0.1 # 障碍物最小范围(m) max_obstacle_height: 2.0 # 最大障碍物高度(m) clearing: True # 是否清除障碍物 marking: True # 是否标记障碍物 data_type: "LaserScan" # 数据类型 static_layer: plugin: "nav2_costmap_2d::StaticLayer" # 静态层插件 map_subscribe_transient_local: True # 静态地图订阅传输方式 inflation_layer: plugin: "nav2_costmap_2d::InflationLayer" # 膨胀层插件 cost_scaling_factor: 6.0 # 成本缩放因子 inflation_radius: 0.22 # 膨胀半径(m) always_send_full_costmap: True # 是否始终发送完整代价地图 # 全局代价地图客户端参数 global_costmap_client: ros__parameters: use_sim_time: False # 全局代价地图节点参数 global_costmap_rclcpp_node: ros__parameters: use_sim_time: False # 地图服务器配置 map_server: ros__parameters: use_sim_time: False yaml_filename: "yahboomcar.yaml" # 地图文件路径 # 地图保存器配置 map_saver: ros__parameters: use_sim_time: False save_map_timeout: 5000 # 保存地图超时时间(ms) free_thresh_default: 0.25 # 自由空间阈值 occupied_thresh_default: 0.65 # 占用空间阈值 # 规划器服务器配置 planner_server: ros__parameters: expected_planner_frequency: 20.0 # 预期规划器频率(Hz) use_sim_time: False planner_plugins: ["GridBased"] # 使用的规划器插件 GridBased: plugin: "nav2_navfn_planner/NavfnPlanner" # 规划器类型 tolerance: 0.5 # 目标点容差(m) use_astar: false # 是否使用A*算法 allow_unknown: true # 是否允许在未知区域规划 # 规划器服务器节点参数 planner_server_rclcpp_node: ros__parameters: use_sim_time: False # 行为服务器配置 behavior_server: ros__parameters: costmap_topic: local_costmap/costmap_raw # 代价地图话题 footprint_topic: local_costmap/published_footprint # 机器人轮廓话题 cycle_frequency: 10.0 # 行为执行频率(Hz) behavior_plugins: ["spin", "backup", "wait"] # 行为插件列表 spin: plugin: "nav2_behaviors/Spin" # 旋转行为插件 spin_type: "SPIN_IN_PLACE" # 旋转类型 (原地旋转) rotation_velocity: 1.0 # 旋转速度(rad/s) max_rotational_vel: 1.0 # 最大旋转速度(rad/s) min_rotational_vel: 0.4 # 最小旋转速度(rad/s) rotational_acc_lim: 3.2 # 旋转加速度限制(rad/s²) backup: plugin: "nav2_behaviors/BackUp" # 后退行为插件 backup_speed: -0.2 # 后退速度(m/s) backup_duration: 2.0 # 后退持续时间(s) simulate_ahead_time: 2.0 # 模拟提前时间(s) wait: plugin: "nav2_behaviors/Wait" # 等待行为插件 wait_duration: 1.0 # 等待时间(s) global_frame: odom # 全局坐标系 robot_base_frame: base_footprint # 机器人基座坐标系 transform_timeout: 0.1 # 变换超时时间(s) use_sim_time: False simulate_ahead_time: 2.0 # 模拟提前时间(s) max_rotational_vel: 1.0 # 最大旋转速度(rad/s) min_rotational_vel: 0.4 # 最小旋转速度(rad/s) rotational_acc_lim: 3.2 # 旋转加速度限制(rad/s²) # 机器人状态发布器参数 robot_state_publisher: ros__parameters: use_sim_time: False # 航点跟随器配置 waypoint_follower: ros__parameters: use_sim_time: False loop_rate: 20 # 循环频率(Hz) stop_on_failure: false # 失败时是否停止 waypoint_task_executor_plugin: "wait_at_waypoint" # 航点任务执行器插件 wait_at_waypoint: plugin: "nav2_waypoint_follower::WaitAtWaypoint" # 等待插件 enabled: True # 是否启用 waypoint_pause_duration: 200 # 航点暂停时间(ms) ```
admin
2025年12月4日 08:32
3
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期
AI