第十五课 导航基础

导航概述

硬件要求:

虽然导航功能包集被设计成尽可能的通用,在使用时仍然有三个主要的硬件限制:

ROS导航包集

下面图完美解释了导航功能包需要那些组件,首先看一下该如何设置

provided node已经提供的节点

optional provided node 可选择的节点

platform specific node平台指定的节点

sensor sources,传感器输入源可以是LaserScan激光雷达,也可以是PointCloud,它可以使激光雷达得到的数据,也可以是Kinect得到的数据,

odometry source主要是odom,

sensor transforms主要是tf.

base_controller主要是底座该如何控制,比如PID.

下面是导航包的主要内容

导航包的框架,也就是坐标系有如下

规划器有两个

Local planner

局部规划器为了设计成大多数机器人都能通用的规划器,它采用参数配置模式能够为不同机器提供不同的参数配置,包括以后的global planner,以及amcl都是采用这种方法.

参数包括

机器人配置参数

目标容忍度参数

向前模拟参数

轨迹打分参数

震荡预防参数

全局规划参数

发布的主题:

global_plan:主要作用是产生规划路径让local_plan跟着它移动,

local_plan:为路线打分,产生最高分那个路径,

cost_cloud:用于规划代价网格

订阅的主题:

odom:用于给局部的规划器产生当前的速度信息,这个速度信息假设在与ros_base frame在同一个坐标系中,

两种算法:Trajectory Rollout和Dynamic Window Approach

基本思想:

 1)采样机器人当前的状态(dx,dy,dtheta);

2)针对每个采样的速度,计算机器人以该速度模拟行驶一段时间后的状态,得出一条行驶的路线.

3)利用一些评价标准为多条路线打分(如与障碍物,目标等的接近度),丢弃不可行的路线;

4)根据打分,选择最优路径;

5)重复上面过程.

在实际应用中,尽管两者的实际表现相似,但是我们采用DWA算法,因为它采样的区域小,相对来说更加有效一些.

下面来看一下它的参数

base_local_planner.yaml

设置了加速度限制和速度限制是为了保证机器人的安全,我们知道tf有个设计不好的地方就是它不够及时性.

全向轮是可以在x轴和y轴方向均能运动;

而差分轮只能在x轴方向运动,比如汽车,只能向前向后运动.

Global Planner

代价地图

图中蓝色部分表示用户指定的膨胀系数,蓝色区域以外都表示安全区域.

订阅的主题footprint,它的类型是一个多边形Polygon,

发布的主题,grid,表示costmap中的值,

grid_updates:表示更新的代价地图中的地图区域

voxel_grid:表示使用3D的形式来展示代价地图

红色的五边形表示机器人的底座,机器人的中心用小正方形来表示,内部有一个蓝色的圆圈表示内切圆,外部的圆圈叫做外接圆,

上面的坐标轴上方表示代价值,与圆心相切的是cost_lethal=254,是绝对会碰撞,只要是能够与外界园相接的地方,我们都认为是会碰撞,用户指定的膨胀系数是指可能会碰撞,超过膨胀系数之外,认为是安全区域,

下面是代价地图的参数文件

move_base

订阅的一个目标

发布的主题是控制底盘的速度

AMCL(自适应模特卡尔定位)

原文地址:https://www.cnblogs.com/gary-guo/p/6771071.html