概述
这篇文章用于记录如何理解及调用ROS中的导航功能包ros-navigation,对机器人做导航。
1. 框架
move_base
定位:核心节点,是导航过程运动控制的最终执行机构。通过订阅move_base_simple/goal来获取目标点
插件:
- global_planner:用于全局路径规划
- local_planner:用于局部路径规划
- golobal_costmap:全局代价地图用于描述全局环境信息
- local_costmap:局部代价地图用于描述局部环境信息
- recovery_behaviors:恢复策略用于机器人碰到障碍后自动进行逃离恢复
amcl
定位:利用粒子滤波算法实现机器人的全局定位,为机器人导航提供全局位置信息。
map_server
定位:通过调用前面SLAM建图得到的地图为导航提供环境地图信息。
状态信息
- 坐标系变换信息:tf
- 里程计信息:odom
- 激光雷达信息:scan
2. 动态参数的获取(速度, 加速度)
主要涉及到 local planners :
- dynamic window approach (DWA)
- timed elastic band (TEB).
3. Glabal Planner
carrot_planner
方式:若目标点是障碍,则将目标点沿着机器人与目标点构成的向量,向机器人方向移动。
优点:在目标点不可达的情况下也可以靠近目标点
缺点:复杂地形不可靠
navfn
方式:使用Dijkstra算法
参考资料:https://blog.csdn.net/qq_35644234/article/details/60870719
global_planner
支持A*, toggling quadratic approximation, toggling grid path
参数详解:
保持默认设置的参数:
- allow unknown(true)
- use dijkstra(true),
- use quadratic(true)
- use grid path(false)
- old navfn behavior(false)
需修改参数:
- visualize potential->true 使用rviz显示可视化界面
- cost factor
- neutral cost
- lethal cost
代价计算: cost = neutral cost + cost factor * lethal cost
4. Local Planner
(1)Dynamic Window Approach(DWA)
步骤:
- 速度采样(x,y,w)
- Froward Simulation
参数:
sim_time:预测时长,2-5s较好,推荐4s
veclocity samples:x,y方向以及转向角的采样点个数,推荐vx_sample = 20, vth_samples = 40
simulation granularity:表示轨迹的取点频率,默认值为0.025够用了 - Trajactory Scoring
目标:选择最低的cost的路径
path_distance_bias:逼近global_path的代价权重 (参考值:32)
goal_distance_bias:达到goal的代价权重(参考值:20)
occdist_scale:防止碰撞的代价权重(参考值:0.02) - 选择高分路径
- 重复
其他参数
5. Costmap Parameters
(1)footprint
定义:机器人的轮廓,用于计算机器人模型的内切和外切圆。
应用:存储形式为二维数组的形式,一个个点构成了轮廓。一般定义footprint略微大于机器人的实际尺寸。
(2)inflation
参数:
- inflation radius
定义了零代价点与障碍之间的距离。 - cost scaling factor
比例因子,数值越大表示cost下降曲线越陡峭
(3)costmap resolution
定义:local costmap和global costmap都有对应的分辨率(resolution),如果分辨率过低,在一些狭窄入口可能会过不去。
(4)voxel layer
定义:三维数据,记录了障碍的位置,表现形式为有确定位置的一个个三维像素块。
参数:
6. ACML
两个模型
- motion model:依赖里程计(odometry model)的信息
- measurement model:依赖雷达(laser scan)的信息
LaserScan
参数
两种模型的参数设置
7. Recovery Behavior
两种方式:
- clear costmap recovery
- rotate recovery
参数设置:
行为的参数一般保持默认值。对于触发recovery的参数:sim_time和reset_distance,前者相对较高的状态下,后者也最好拉高,这样子可以去掉很多无用的路径,方便local planner找到更优的路径。
最后
以上就是包容黑猫为你收集整理的ROS学习笔记(9)---ros-navigation的应用的全部内容,希望文章能够帮你解决ROS学习笔记(9)---ros-navigation的应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复