ROS与navigation教程-dwa_local_planner(DWA)

说明:

介绍dwa_local_planner(DWA)的概念和相关知识。

代码库

概要

该包使用DWA(Dynamic Window Approach)算法实现了平面上移动机器人局部导航功能。

给定一个全局路径规划和代价地图,局部路径规划器生成的速度命令发送到移动基座。

该包支持任何footprint表示为凸多边形或圆形的机器人,同时将其配置公开为可在启动文件中设置的ROS参数。 该规划器的参数也可重新动态配置。

该包的ROS封装继承了BaseLocalPlanner接口。

dwa_local_planner包提供了一个驱动平面中移动基座的控制器,其将路径规划器和机器人连接到一起。

移动过程中,路径规划器会在机器人周围创建可以表示为栅格地图的评价函数。其中控制器的主要任务就是利用评价函数确定发送给基座的速度(dx,dy,dtheta)。

DWA(Dynamic Window Approach)算法的基本思路如下:

在机器人控制空间(dx,dy,dta)中离散采样。

对于每个采样速度,从机器人的当前状态执行正向移动模拟,以预测如果在一些(短)时间段内应用采样速度将会发生什么。

从以下方面来评价正向移动模拟产生的每个轨迹:接近障碍物,接近目标,接近全局路径和速度。 放弃非法轨迹(与障碍物相撞的轨迹)。

选择最高得分的轨迹,并将相关速度发送到移动基座。

冲洗并重复。

DWAPlannerROS

dwa_local_planner::DWAPlannerROS对象是dwa_local_planner::DWAPlanner对象的ROS封装,在初始化时指定的ROS命名空间使用,继承了nav_core::BaseLocalPlanner接口。

创建dwa_local_planner::DWAPlannerROS对象的例子:

#include

#include

#include

...

tf::TransformListener tf(ros::Duration(10));

costmap_2d::Costmap2DROS costmap("my_costmap", tf);

dwa_local_planner::DWAPlannerROS dp;

dp.initialize("my_dwa_planner", &tf, &costmap);

( 1 ) API Stability

C++ API 是稳定的。

ROS API 是稳定的。

( 1.1 ) Published Topics

~/global_plan ([nav_msgs/Path][6])

局部路径规划器当前正在跟踪的全局路径规划的一部分。主要用于可视化。

~/local_plan ([nav_msgs/Path][7])

上一个周期中得分最高的局部路径规划或轨迹。 主要用于可视化。

( 1.2 ) Subscribed Topics

odom ([nav_msgs/Odometry][8])

提供机器人当前速度的里程计信息到局部路径规划器。假定该消息中的速度信息使用与TrajectoryPlannerROS对象中包含的代价地图的robot_base_frame相同的坐标系。 有关robot_base_frame参数的信息,请参阅costmap_2d包。

( 2 ) Parameters

可以通过设置ROS参数来定制dwa_local_planner :: DWAPlannerROS的行为。

这些参数分为几类:机器人配置,目标公差,前向仿真,轨迹评分,防振和全局计划。

这些参数中的大多数也可以使用dynamic_reconfigure进行更改,以便于在正在运行的系统中调整本地路径规划器。。

( 2.1 ) Robot Configuration Parameters

~/acc_lim_x (double, default: 2.5)

机器人在x方向的加速度极限,单位为 meters/sec^2 。

~/acc_lim_y (double, default: 2.5)

机器人在y方向的速度极限,单位为 meters/sec^2 。

~/acc_lim_th (double, default: 3.2)

机器人的角加速度极限,单位为 radians/sec^2 。

~/max_trans_vel (double, default: 0.55)

机器人最大平移速度的绝对值,单位为 m/s 。

~/min_trans_vel (double, default: 0.1)

机器人最小平移速度的绝对值,单位为 m/s 。

~/max_vel_x (double, default: 0.55)

机器人在x方向到最大速度,单位为 m/s 。

~/min_vel_x (double, default: 0.0)

机器人在x方向到最小速度,单位为 m/s 。

若设置为负数,则机器人向后移动。

~/max_vel_y (double, default: 0.1)

机器人在y方向到最大速度,单位为 m/s 。

~/min_vel_y (double, default: -0.1)

机器人在y方向到最小速度,单位为 m/s 。

~/max_rot_vel (double, default: 1.0)

机器人的最大角速度的绝对值,单位为 rad/s 。

~/min_rot_vel (double, default: 0.4)

机器人的最小角速度的绝对值,单位为 rad/s 。

( 2.2 ) Goal Tolerance Parameters

~/yaw_goal_tolerance (double, default: 0.05)

The tolerance in radians for the controller in yaw/rotation when achieving its goal .

~/xy_goal_tolerance (double, default: 0.10)

The tolerance in meters for the controller in the x & y distance when achieving a goal .

~/latch_xy_goal_tolerance (bool, default: false)

如果锁定目标公差且机器人到达目标xy位置,机器人将简单地旋转到位,即使它在目标公差的范围内结束。

If goal tolerance is latched, if the robot ever reaches the goal xy location it will simply rotate in place, even if it ends up outside the goal tolerance while it is doing so.

( 2.2 ) Forward Simulation Parameters

~/sim_time (double, default: 1.7)

前向模拟轨迹的时间,单位为 seconds 。

~/sim_granularity (double, default: 0.025)

给定轨迹上的点之间的间隔尺寸,单位为 meters 。

~/vx_samples (integer, default: 3)

x方向速度的样本数。

The number of samples to use when exploring the x velocity space .

~/vy_samples (integer, default: 10)

y方向速度的样本数。

The number of samples to use when exploring the y velocity space .

~/vth_samples (integer, default: 20)

角速度的样本数。

The number of samples to use when exploring the theta velocity space .

~/controller_frequency (double, default: 20.0)

调用该控制器的频率。

当用move_base时,可以只设置controller_frequency参数,可以放心的忽略它。

Uses searchParam to read the parameter from parent namespaces if not set in the namespace of the controller. For use with move_base, this means that you only need to set its "controller_frequency" parameter and can safely leave this one unset.

( 2.4 ) Trajectory Scoring Parameters

cost =

pdist_scale * (distance to path from the endpoint of the trajectory in map cells or meters depending on the meter_scoring parameter)

+ gdist_scale * (distance to local goal from the endpoint of the trajectory in map cells or meters depending on the meter_scoring parameter)

+ occdist_scale * (maximum obstacle cost along the trajectory in obstacle cost (0-254))

该cost函数使用如上公式给每条轨迹评分

~/path_distance_bias (double, default: 32.0)

控制器靠近给定路径的权重。

The weighting for how much the controller should stay close to the path it was given .

~/goal_distance_bias (double, default: 24.0)

The weighting for how much the controller should attempt to reach its local goal, also controls speed .

~/occdist_scale (double, default: 0.01)

控制器尝试避免障碍物的权重。

The weighting for how much the controller should attempt to avoid obstacles .

~/forward_point_distance (double, default: 0.325)

The distance from the center point of the robot to place an additional scoring point, in meters .

~/stop_time_buffer (double, default: 0.2)

The amount of time that the robot must stop before a collision in order for a trajectory to be considered valid in seconds .

~/scaling_speed (double, default: 0.25)

The absolute value of the velocity at which to start scaling the robot's footprint, in m/s.

~/max_scaling_factor (double, default: 0.2)

The maximum factor to scale the robot's footprint by .

( 2.5 ) Oscillation Prevention Parameters

~/oscillation_reset_dist (double, default: 0.05)

机器人必须运动多少米远后才能复位震荡标记。

( 2.6 ) Global Plan Parameters

~/prune_plan (bool, default: true)

定义当机器人是否边沿着路径移动时,边抹去已经走过的路径规划。 设置为true时,表示当机器人移动1米后,将1米之前的全局路径点一个一个清除。(包括全局的global path和局部的global path)

( 3 ) C++ API

有关base_local_planner::TrajectoryPlannerROS 类的C ++ API文档,请参阅:DWAPlannerROS C++ API

DWAPlanner

dwa_local_planner::DWAPlanner实现了DWA和Trajectory Rollout的实现。要在ROS中使用dwa_local_planner::DWAPlanner,请使用进行了ROS封装的格式,不推荐直接使用它。

( 1 ) API Stability

C ++ API是稳定的。

但是,建议您使用DWAPlannerROS,而不是使用dwa_local_planner::TrajectoryPlanner。

( 2 ) C++ API

有关dwa_local_planner :: DWAPlanner类中的C ++ API文档,请参阅:DWAPlanner C++ API。

参考资料

dwa的区别 teb_ROS与navigation教程-dwa_local_planner(DWA)相关推荐

  1. python基础教程第二版和第三版有什么区别-《Python基础教程》(第2版修订版)中要注意的地方...

    想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...

  2. ROS与navigation教程——基本导航调整指南

    说明: 介绍如何调整机器人上的ROS导航包 步骤: (1) 机器人导航需要那些准备? 在调整新机器人上的导航包时遇到的大部分问题都在本地规划器调谐参数之外的区域.机器人的里程计,定位,传感器以及有效运 ...

  3. cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  4. dwa的区别 teb_dwa杨算法解析1

    准备过程: 入口 bool DWAPlannerROS::computeVelocityCommands(geometry_msgs::Twist& cmd_vel) 1. planner_u ...

  5. ROS与navigation教程——ACML参数配置

    <launch> <!--//后为wiki官网的参数说明 ()中为粗读算法参数说明及理解 ×××面临的问题常用地图有2种:1.基于特征,仅指明在指定位置(地图中包含的对象的位置)的环 ...

  6. dwa的区别 teb_teb_local_planner安装及使用

    teb_local_planner的详尽资料(包括安装及导航,参数调节等)请参考其ros官方文档:http://wiki.ros.org/teb_local_planner和http://wiki.r ...

  7. cgi备份还原和ghost有什么区别_装系统教程!如何用ghost安装系统(下)!小白也能变装机大神!...

    什么是 ghost . ghost 系统? ghost原本是一个备份还原的软件,用户通过它来备份和还原系统.后来渐渐的,大家把系统的安装文件制作成了ghost文件,用于安装系统使用.区别于原版的系统, ...

  8. ROS与navigation教程——概述

    navigation是ROS的二维导航功能包,简单来说,就是根据输入的里程计等传感器的信息流和机器人的全局位置,通过导航算法,计算得出安全可靠的机器人速度控制指令. 代码库:https://githu ...

  9. 处理器哪个好_a14处理器和骁龙865哪个好 a14处理器和骁龙865区别对比_CPU_硬件教程...

    今年的iphone12依旧没有什么大的改变和创新,笔者认为iphone12最大的看点莫过于苹果A14处理器了.虽然对比去年的苹果A13,苹果A14综合性能提升并不大,算是挤牙膏的一代,但是依旧是目前行 ...

最新文章

  1. 详解vue 路由跳转四种方式 (带参数)
  2. python2中为什么在进行类定义时最好要加object
  3. dos定义变量算术运算逻辑运算表达式分隔符
  4. 无监督学习 k-means_监督学习-它意味着什么?
  5. c语言从入门到精通第四版电子书_C语言从入门到精通(吐血分享)4.pdf
  6. 重构第12天 分解依赖(Break Dependencies)
  7. IE8,9下的ajax缓存问题
  8. mysql有符号数_mysql里面有符号整数类型有关问题,请指点,多谢
  9. Swiper插件的基本使用方法和案例
  10. jQuery学习(十二)—jQuery中对象的查找方法总结
  11. 如何最快的获取QQ群所有成员的qq号信息
  12. haproxy配置代理tomcat和nginx_Nginx负载均衡配置实例
  13. 信息安全期末复习整理
  14. GaussView 6 linux 64
  15. 把系统桌面设置到D盘
  16. window10无法访问局域网共享文件夹
  17. 毕设 电脑维修_入库出库结算论文
  18. Windows 10上的LockApp.exe是什么?
  19. 计算机上的游戏怎么不见了怎么办,电脑自带小游戏消失怎么找回?高手教你找回电脑自带小游戏...
  20. 气压计 MS5611-01BA03 数据读取

热门文章

  1. Linux基础命令之which
  2. windows上Tomcat注册为服务
  3. Github注册问题解决方案
  4. 数字孪生技术在光网络中的应用与问题
  5. java 动态设置 注解值_动态修改注解(annotation)值
  6. Windows10配置hosts文件后被莫名还原
  7. CAD绘制零件平面图
  8. 记录一次mysql数据库文件损坏导致数据库崩溃
  9. CrossOver2022Mac/Linux虚拟机软件如何安装下载教程
  10. 【零基础】学会微信小程序开发-上手微信开发者工具