• 第十五课 导航基础


    导航概述

    硬件要求:

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

    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(自适应模特卡尔定位)

  • 相关阅读:
    Hibernate学习笔记_关系映射
    Hibernate学习笔记_核心幵发接口及三种对象状态
    Hibernate学习笔记_联合主键
    Hibernate学习笔记_ID生成策略
    API的控制器
    MVC跨域API
    WindowsForms 调用API
    触发器
    视图
    分页的存储过程的用法
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6771071.html
Copyright © 2020-2023  润新知