当前位置: 首页 > news >正文

ROS--NAVI DWA

ROS--NAVI DWA

  • 1 介绍
    • 搜索算法分类
    • DWA 概述
  • 2 move_base
    • 预期机器人行为
    • Action API
      • Action Subscribed Topics
      • Action Published Topics
      • Subscribed Topics
      • Published Topics
      • Services
      • Parameters
  • 3
  • 参考

1 介绍

DWA‌(Dynamic Window Approach)是一种局部路径规划算法,主要用于机器人的避障和路径规划。其核心原理是在速度空间(v, w)中采样多组速度,模拟这些速度在一定时间内的运动轨迹,并通过评价函数对这些轨迹进行评价,选出最优轨迹对应的速度来驱动机器人运动。DWA算法通过动态窗口来限定速度采样空间,确保机器人在实际运行中的加减速性能和安全性‌。

搜索算法分类

分类分类示例
Heuristic search启发式A*、MHA*
Incremental search增量式LPA*、D*
Anytime search随时ARA*、AD*
Probabilistic search概率R*

DWA 概述

在这里插入图片描述

2 move_base

在这里插入图片描述
move_base 节点为机器人上的导航堆栈提供了一个ROS接口,用于配置、运行和交互。上图展示了move_base节点及其与其他组件的交互的高级视图。蓝色部分基于机器人平台而变化,灰色部分是可选的,但为所有系统提供,白色节点是必需的,也为所有系统提供。有关配置move_base节点以及整个导航堆栈的更多信息。

预期机器人行为

在这里插入图片描述
在没有动态障碍物的情况下,move_base 节点最终将达到目标姿态的容差范围内,否则将向用户发出失败信号。当机器人感知到自身卡住时,move_base节点可以选择执行恢复行为。默认情况下, move_base节点将采取以下操作来尝试清理空间:

首先,机器人地图上用户指定区域之外的障碍物将被清除。接下来,如果可能,机器人将进行原地旋转以清理空间。如果此操作也失败,机器人将更积极地清除地图,移除其可原地旋转矩形区域之外的所有障碍物。之后,机器人将再次进行原地旋转。如果所有操作均失败,机器人将认为其目标不可行,并通知用户已中止。这些恢复行为可以使用recovery_behaviors参数进行配置,并使用recovery_behavior_enabled参数进行禁用。

Action API

Action Subscribed Topics

  • move_base/goal (move_base_msgs/MoveBaseActionGoal)
    A goal for move_base to pursue in the world.

  • move_base/cancel (actionlib_msgs/GoalID)
    A request to cancel a specific goal.

Action Published Topics

  • move_base/feedback (move_base_msgs/MoveBaseActionFeedback)
    Feedback contains the current position of the base in the world.

  • move_base/status (actionlib_msgs/GoalStatusArray)
    Provides status information on the goals that are sent to the move_base action.

  • move_base/result (move_base_msgs/MoveBaseActionResult)
    Result is empty for the move_base action.

Subscribed Topics

  • move_base_simple/goal (geometry_msgs/PoseStamped)
    Provides a non-action interface to move_base for users that don’t care about tracking the execution status of their goals.

Published Topics

  • cmd_vel (geometry_msgs/Twist)
    A stream of velocity commands meant for execution by a mobile base.

Services

  • ~make_plan (nav_msgs/GetPlan)
    Allows an external user to ask for a plan to a given pose from move_base without causing move_base to execute that plan.

  • ~clear_unknown_space (std_srvs/Empty)
    Allows an external user to tell move_base to clear unknown space in the area directly around the robot. This is useful when move_base has its costmaps stopped for a long period of time and then started again in a new location in the environment. - Available in versions from 1.1.0-groovy

  • ~clear_costmaps (std_srvs/Empty)
    Allows an external user to tell move_base to clear obstacles in the costmaps used by move_base. This could cause a robot to hit things and should be used with caution. - New in 1.3.1

Parameters

  • ~base_global_planner (string, default: “navfn/NavfnROS” For 1.1+ series)
    The name of the plugin for the global planner to use with move_base, see pluginlib documentation for more details on plugins. This plugin must adhere to the nav_core::BaseGlobalPlanner interface specified in the nav_core package. (1.0 series default: “NavfnROS”)

  • ~base_local_planner (string, default: “base_local_planner/TrajectoryPlannerROS” For 1.1+ series)
    The name of the plugin for the local planner to use with move_base see pluginlib documentation for more details on plugins. This plugin must adhere to the nav_core::BaseLocalPlanner interface specified in the nav_core package. (1.0 series default: “TrajectoryPlannerROS”)

  • ~recovery_behaviors (list, default: [{name: conservative_reset, type: clear_costmap_recovery/ClearCostmapRecovery}, {name: rotate_recovery, type: rotate_recovery/RotateRecovery}, {name: aggressive_reset, type: clear_costmap_recovery/ClearCostmapRecovery}] For 1.1+ series)
    A list of recovery behavior plugins to use with move_base, see pluginlib documentation for more details on plugins. These behaviors will be run when move_base fails to find a valid plan in the order that they are specified. After each behavior completes, move_base will attempt to make a plan. If planning is successful, move_base will continue normal operation. Otherwise, the next recovery behavior in the list will be executed. These plugins must adhere to the nav_core::RecoveryBehavior interface specified in the nav_core package. (1.0 series default: [{name: conservative_reset, type: ClearCostmapRecovery}, {name: rotate_recovery, type: RotateRecovery}, {name: aggressive_reset, type: ClearCostmapRecovery}]). Note: For the default parameters, the aggressive_reset behavior will clear out to a distance of 4 * ~/local_costmap/circumscribed_radius.

  • ~controller_frequency (double, default: 20.0)
    The rate in Hz at which to run the control loop and send velocity commands to the base.

  • ~planner_patience (double, default: 5.0)
    How long the planner will wait in seconds in an attempt to find a valid plan before space-clearing operations are performed.

  • ~controller_patience (double, default: 15.0)
    How long the controller will wait in seconds without receiving a valid control before space-clearing operations are performed.

  • ~conservative_reset_dist (double, default: 3.0)
    The distance away from the robot in meters beyond which obstacles will be cleared from the costmap when attempting to clear space in the map. Note, this parameter is only used when the default recovery behaviors are used for move_base.

  • ~recovery_behavior_enabled (bool, default: true)
    Whether or not to enable the move_base recovery behaviors to attempt to clear out space.

  • ~clearing_rotation_allowed (bool, default: true)
    Determines whether or not the robot will attempt an in-place rotation when attempting to clear out space. Note: This parameter is only used when the default recovery behaviors are in use, meaning the user has not set the recovery_behaviors parameter to anything custom.

  • ~shutdown_costmaps (bool, default: false)
    Determines whether or not to shutdown the costmaps of the node when move_base is in an inactive state

  • ~oscillation_timeout (double, default: 0.0)
    How long in seconds to allow for oscillation before executing recovery behaviors. A value of 0.0 corresponds to an infinite timeout. New in navigation 1.3.1

  • ~oscillation_distance (double, default: 0.5)
    How far in meters the robot must move to be considered not to be oscillating. Moving this far resets the timer counting up to the

  • ~oscillation_timeout New in navigation 1.3.1

  • ~planner_frequency (double, default: 0.0)
    The rate in Hz at which to run the global planning loop. If the frequency is set to 0.0, the global planner will only run when a new goal is received or the local planner reports that its path is blocked. New in navigation 1.6.0

  • ~max_planning_retries (int32_t, default: -1)
    How many times to allow for planning retries before executing recovery behaviors. A value of -1.0 corresponds to an infinite retries.

3

参考

1、ROS 2D导航原理系列(六)|局部路径规划-DWA算法
2、move_base
3、PythonRobotics
4、Welcome to PythonRobotics’s documentation!
5、TEB与DWA算法详解及智能车调参技巧
6、【局部路径规划算法】—— DWA动态窗口法(c++实现))

http://www.xdnf.cn/news/462367.html

相关文章:

  • 【c语言】动态内存分配
  • MySQL 迁移至 Doris 最佳实践方案
  • 低功耗实现方法思路总结
  • 策略模式-枚举实现
  • 如何判断一个网站后端是用什么语言写的
  • 7.Pyecharts:全局配置项1
  • Python 翻译词典小程序
  • 平替BioLegend品牌-Elabscience FITC Anti-Mouse CD8a抗体(53-6.7)精准标记T细胞表面抗原
  • 断点续传使用场景,完整前后端实现示例,包括上传,下载,验证
  • 麒麟系统ARM64架构部署mysql、jdk和java项目
  • 牛客网刷题:NC208813求逆序数
  • 【PX4飞控】在 Matlab Simulink 中使用 Mavlink 协议与 PX4 飞行器进行交互
  • python处理异常,JSON
  • 数据结构—排序(斐波那契数列,冒泡,选择,插入,快速,归并,图,广度优先算法)
  • NSSCTF [GFCTF 2021]where_is_shell
  • 【MySQL】多表连接查询
  • postgresql主从+repmgr+keepalive安装
  • Google DeepMind 推出AlphaEvolve
  • Trivy:让你时刻掌控的开源安全扫描器
  • 产线视觉检测设备技术方案:基于EFISH-SCB-RK3588/SAIL-RK3588的国产化替代赛扬N100/N150全场景技术解析
  • SQL:MySQL函数:条件函数(Conditional Functions)
  • OpenCV人脸识别EigenFace算法、案例解析
  • [学习]RTKLib详解:tle.c(系列终章)
  • 一般的析因设计
  • 探索Turn.js:打造惊艳的3D翻页效果
  • 2025年,如何制作并部署一个完整的个人博客网站
  • 让三个线程(t1、t2、t3)按顺序依次打印 A、B、C
  • 网站漏洞存在哪些危害,该如何做好预防?
  • Java中的深拷贝与浅拷贝
  • Blender 入门教程(三):骨骼绑定