简介

​ 最近,作者参加了关于RMUS 高校 SimReal挑战赛,首次接触到了机器人导航领域,这里记录一下这段时间的收货。sim2real的全称是simulation to reality,是强化学习的一个分支,同时也属于transfer learning的一种。主要解决的问题是机器人领域中,直接让机器人或者机械臂在仿真中对于物理环境存在误差,如何将仿真上取得的成果应用到实际中的问题。

​ 机器人导航的路径规划问题主要分为全局路径规划和局部路径规划,这两者是根据对环境信息获取程度划分的。

  • 全局规划通常需要在已知环境中进行,属于一种事前规划,可以找到最优解,一旦环境发生变化,未及时更新地图时,该方法就不能达到预期效果。
  • 局部路径规划通常用在未知或部分已知的环境中,系统根据传感器实时获取到环境障碍物的信息,并做出相应规划,这对系统的实时计算处理能力有着较高的要求。由于缺乏全局环境信息,结果很可能不是最优的。

​ 全局路径规划和局部路径规划并没有本质的区别,很多适用于全局路径规划的方法经过改进也可以用于局部路径规划,而适用于局部路径规划的方法同样经过改进后也可适用于全局路径规划。两者协同工作,机器人可更好的规划从起始点到终点的行走路径。

​ 本文主要针对局部路径规划作介绍。

局部路径规划

​ 机器人在获得目的地信息后,首先经过全局路径规划规划出一条大致可行的路线,然后调用局部路径规划器根据这条路线及costmap的信息规划出机器人在局部时做出具体行动策略。常用的局部路径规划算法有动态窗口法(DWA)、时间弹性带(TEB)和模型预测控制(MPC)。

动态窗口法(DWA)

​ 动态窗口法在一定程度上采用了粒子滤波的思想,在速度空间(v,w)中采样多组速度,并模拟出这些速度在一定时间内的运动轨迹,并通过评价函数对这些轨迹进行评价,选取最优轨迹对应的速度驱动机器人运动。

基本思想

  1. 在机器人的控制空间中离散采样 (dx,dy,dtheta)
  2. 对于每个采样速度,从机器人的当前状态执行前向模拟,以预测如果采样速度应用于某个(短)时间段会发生什么。
  3. 使用包含以下特征的度量来评估前向模拟产生的每个轨迹:与障碍物的距离、与目标的距离、与全局路径的距离和速度,排除非法轨迹(与障碍物相撞的轨迹)。
  4. 选择得分最高的轨迹并将相关的速度发送到移动基地。
  5. 重复执行上述步骤。

优点

  • 计算简单
  • 适用于差分和全向车模

缺点

  • 前瞻性不足
  • 动态效果差
  • 不适用于阿克曼模型车模

时间弹性带(TEB)

​ 时间弹性带(TEB)简而言之,就是连接起始、目标点,并让这个路径可以变形,变形的条件就是将所有约束当做橡皮筋的外力。起始点、目标点状态由用户/全局规划器指定,中间插入N个控制橡皮筋形状的控制点(机器人姿态),当然,为了显示轨迹的运动学信息,我们在点与点之间定义运动时间Time。

time+elasticband=timedelaticsbandtime + elastic band = timed elatics band time+elasticband=timedelaticsband

其目标函数的定义:

​ 虽然待优化的橡皮筋有不少状态点与时间段,目标函数也好像很多。但是,每个目标函数只与橡皮筋中的某几个状态有关,而非整条橡皮筋。将它描述成图,然后用图优化。

优点

  • 前瞻性好
  • 适用于各种车模

缺点

  • 计算复杂
  • 速度和角速度波动大,控制不稳定

模型预测控制(MPC)

​ MPC其实是一种基于对受控对象进行预测的控制方法。MPC最大的特点在于,相对于LQR控制而言,MPC可以考虑空间状态变量的各种约束,而LQR,PID等控制只能够考虑输入输出变量的各种约束。

​ MPC的作用机理可以表述为:在每一个采样时刻,根据当前的测量信息,在线求解一个有限时间开环优化问题,并将得到的控制序列的第一个元素用于被控对象;在下一个采样时刻,用新的测量值作为此时预测系统未来动态的初试条件,刷新优化问题求解。应用于机器人的典型的模型预测控制方法:

问题模型

minCF(x(tf))+ft=t0tfCR(x,u)dtx˙=f(x,u)g(x,u)<0h(x,u)=0minC_F(x(t_f))+f_{t=t_0}^{t_f}C_R(x, u)dt\\ \dot{x}=f(x, u)\\ g(x, u)<0\\ h(x,u)=0\\ minCF​(x(tf​))+ft=t0​tf​​CR​(x,u)dtx˙=f(x,u)g(x,u)<0h(x,u)=0

参数空间

minCF(x(tf))+ft=t0tfCR(x,u)dtminC_F(x(t_f))+f_{t=t_0}^{t_f}C_R(x, u)dt\\ minCF​(x(tf​))+ft=t0​tf​​CR​(x,u)dt

控制

传统MPC控制框图为

  1. 设置优化问题
  2. 使用测量模块告诉我们当前的initial state
  3. 求解优化问题得到参数,这些参数构成系统的最优输入 u*
  4. 使用 u*驱动系统,由于系统受到干扰无法保证求解得到的 u*我们想要的,仅此旨在很小一段时间中使用,然后利用观测的状态重新求解问题,转回步骤(2)

局部规划器的应用

​ 这里以mpc_local_planner为例,首先,在本地终端中键入

sudo apt install ros-melodic-mpc-local-planner

​ 由于apt安装有可能导致我们运行失败,上面的指令只是用来安装依赖。同时,克隆远程仓库mpc_local_planner到ros的工作空间中,执行catkin_make编译。对应ros navigation中的move_base.launch,修改其中的局部路径规划器类型

<?xml version="1.0"?>
<launch><!-- 运行move_base节点  --><node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true"><!--move_base参数配置http://wiki.ros.org/move_base --><param name="base_global_planner" value="global_planner/GlobalPlanner" /><!-- 选择全局规划器类型 --><rosparam file="$(find mpc_navigation)/config/base_global_planner_params.yaml" command="load" /><rosparam file="$(find mpc_navigation)/config/mpc_local_planner_params_minimum_time.yaml" command="load" /><param name="base_local_planner" value="mpc_local_planner/MpcLocalPlannerROS" /><rosparam file="$(find mpc_navigation)/config/move_base_params.yaml" command="load" /><!-- 其它参数 --><param name="controller_frequency" value="1" /><!-- 选择全局规划器类型 --><!-- 全局代价地图和局部代价地图参数配置http://wiki.ros.org/costmap_2d --><rosparam file="$(find mpc_navigation)/config/costmap_common_params.yaml" command="load" ns="global_costmap" /><rosparam file="$(find mpc_navigation)/config/costmap_common_params.yaml" command="load" ns="local_costmap" /><rosparam file="$(find mpc_navigation)/config/local_costmap_params.yaml" command="load" /><rosparam file="$(find mpc_navigation)/config/global_costmap_params.yaml" command="load" /></node></launch>

​ 对应mpc_local_planner的参数文件可以在克隆仓库中的mpc_local_planner_examples中获得,将cfg/diff_drive中的参数yaml文件复制到对应的config文件夹中即可,base_ local_planner参数设置为mpc_local_planner中定义的类型MpcLocalPlannerROS。

​ mpc_local_planner提供了两个参数文件,一个是以最短时间为目的,另一个是二次规划模型,可以根据需求自行选择。

​ 其他的局部规划器同样是修改base_local_planner的类型和提供相应的功能包以及yaml参数文件实现。

参考

ros-dwa_local_planner

ros-teb_local_planner

ros-mpc_local_planner

ROS学习笔记-局部路径规划算法对比

后续

 喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!

【硬核】 ROS Navigation 局部路径规划常见算法相关推荐

  1. ROS常用局部路径规划算法比较

    本博文主要讨论ROS导航包中集成的局部路径规划算法,DWA.TEB.MPC等算法在使用过程中的各自的优缺点.以下均为自己在使用过程中总结的经验及查阅资料得来,如有理解不到位的地方,还希望在评论区多多讨 ...

  2. ros navigation 局部路径算法dwa解析(一)

    继ros里面A*全局规划之后,再解析局部路径算法dwa的整个算法调用过程,至于细节放到后面的章节去写 dwa的整体思路网上有很多相关的资料了 https://blog.csdn.net/heyijia ...

  3. ros dwa局部路径规划原理

    首先在V_m∩V_d的范围内采样速度: allowable_v = generateWindow(robotV, robotModel) allowable_w = generateWindow(ro ...

  4. DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。

    DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...

  5. 局部路径规划算法——实现DWA(dynamic window approach)控制空间采样

    DWA算法是局部路径规划算法,在全局路径规划算法完成后,DWA算法能够根据当前小车(机器人)位置.障碍物.终点的位置进行控制空间(速度.角速度)的采用,从而完成局部路径规划. DWA算法流程: 初始化 ...

  6. ros自己写避障算法_基于ROS系统自主路径规划与避障小车的研究

    龙源期刊网 http://www.qikan.com.cn 基于 ROS 系统自主路径规划与避障小车的 研究 作者:李阳 卢健 何耀帧 来源:<科技风> 2018 年第 04 期 摘 要: ...

  7. ros局部路径规划器dwa

    ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为: 首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的 ...

  8. DWA算法在局部路径规划中的应用

    ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为: 首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的 ...

  9. Timed-Elastic-Band局部路径规划算法

    早前做工程时尝试了teb局部规划算法,觉得效果非常好.由于时间关系,并未深入了解,仅依靠做对比实验调节作者给出的接口参数满足工程需求.抽空看了一下作者关于teb算法的论文,记录一些笔记. teb局部路 ...

最新文章

  1. 东莞日报报道:比派科技(banana pi)致力于打通物联风创业生态链》
  2. linux c 实现函数 trim 除去字符串首尾空格
  3. UICollectionView的无限滚动---妥协做法
  4. 字符串与指针,数组的关系与用途
  5. 基本算法--希尔排序
  6. Dom onload和jQuery document ready的区别
  7. mysql约束与外键_MySQL 外键与约束
  8. Flash 与数学:圆的切线(3)
  9. c语言更改编译时字体,c习题编译时出现空的字符常量,怎么修改?
  10. 轻博客:企业品牌互动传播利器
  11. linux打包工具tar及一些压缩工具
  12. openCV之图像基础(笔记02)
  13. 熟练掌握如何设置空闲超时时间.
  14. Skype国际版下载方法
  15. uniapp 生成 海报
  16. 冶金物理化学复习 --- 熔渣的基础理论
  17. MVDR最小方差无畸形相应波束形成器 Python 实现
  18. TestCenter测试管理工具功能详解十四(S)
  19. Elasticsearch之快速入门篇(个人笔记)
  20. 视觉音乐从贝拉吉奥斯喷泉中学到什么

热门文章

  1. 什么是Email Bounced(被退回)
  2. 我们计划招收300名学员,免费学习人工智能专业
  3. win10控制面板快捷键_你没玩过的全新版本Win10,这些操作你知多少?
  4. 计算机传奇人物之詹姆斯.高斯林
  5. 禁止蝰蛇鼠标驱动软件自动安装;如何在插入Razer设备时停止Razer Synapse安装程序
  6. word转pdf时,图片错位,乱跑
  7. 《软件方法》第8章 分析 之 分析类图(1)
  8. 利用c++与opencv将文本、图像加密进另一张图片中
  9. oracle aix 11.2.0.3,Oracle 11.2.0.3 Database for AIX bug导致ORA-04030的报错
  10. 「自控原理」3.3 稳定性与稳态误差、时域校正