TEB算法2-teb参数说明及调试小记

这篇具有很好参考价值的文章主要介绍了TEB算法2-teb参数说明及调试小记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 参数说明

teb_local_planner的参数较多,分为以下几类

1.Trajectory

 #*******************************************************************************
 # Trajectory
 #*******************************************************************************
 teb_autosize: True #优化期间允许改变轨迹的时域长度
 #TEB通过状态搜索树寻找最优路径,而dt_ref则是最优路径上的两个相邻姿态
 #(即位置、速度、航向信息,可通过TEB可视化在rivz中看到)的默认距离
 #此距离不固定,规划器自动根据速度大小调整这一距离,速度越大,相邻距离自然越大,
 #较小的值理论上可提供更高精度
 dt_ref: 0.3               #局部路径规划的解析度
 dt_hysteresis: 0.1        #允许改变的时域解析度的浮动范围, 一般为 dt_ref 的 10% 左右;
 max_samples: 200          #
 global_plan_overwrite_orientation: True      #覆盖全局路径中局部路径点的朝向
 allow_init_with_backwards_motion: False      #允许在开始时想后退来执行轨迹
 #考虑优化的全局计划子集的最大长度(累积欧几里得距离)
 #如果为0或负数:禁用;长度也受本地Costmap大小的限制
 max_global_plan_lookahead_dist: 2.5
 global_plan_viapoint_sep: -1  #从全局路径中选取的每两个连续通过点之间的最小间隔
 global_plan_prune_distance: 1  #该参数决定了从机器人当前位置的后面一定距离开始裁剪
 #如果为真,规划器在速度、加速度和转弯率计算中使用精确的弧长[增加的CPU时间],否则使用欧几里德近似。
 exact_arc_length: False
 #在判断生成的轨迹是否冲突时使用,此时设置为3,即从轨迹起点开始逐个检查轨迹上的3个点,
 #若3个点均不发生碰撞,则认为本次轨迹有效。若小于0则检查所有路径点
 feasibility_check_no_poses: 3   #检测位姿可到达的时间间隔
 publish_feedback: False        #发布包含完整轨迹和活动障碍物列表的规划器反馈

2.Robot

#*******************************************************************************
  # Robot
#*******************************************************************************
 max_vel_x: 0.3             #最大x前向速度
 max_vel_x_backwards: 0.05  #最大x后退速度
 max_vel_y: 0.0             #最大y方向速度
 max_vel_theta: 0.25        #最大转向角速度
 acc_lim_x: 0.15            #最大x加速度
 acc_lim_theta: 0.15        #最大角速度
 min_turning_radius: 0.0    #车类机器人的最小转弯半径

阿克曼底盘配置参数

 #********************** Carlike robot parameters ********************
min_turning_radius: 0.5     #车类机器人的最小转弯半径
#(compute value using a model or adjust with rqt_reconfigure manually) 
wheelbase: 0.4         # Wheelbase of our robot 驱动轴和转向轴之间的距离
#(仅适用于启用了“Cmd_angle_而不是_rotvel”的Carlike机器人);对于后轮式机器人,该值可能为负值
cmd_angle_instead_rotvel: True #将收到的角速度消息转换为 操作上的角度变化

底盘模型设置

 # types: "point", "circular", "two_circles", "line", "polygon"
 footprint_model: 
#type: "polygon"    #多边形
#vertices: [[-0.3, -0.2], [0.3, -0.2], [0.3, 0.2], [-0.3, 0.2]]
  type: "circular"   #圆
  radius: 0.25 # for type "circular"
 #line_start: [0.0, 0.0] # for type "line" #直线
 #line_end: [0.4, 0.0] # for type "line"
 #front_offset: 0.2 # for type "two_circles" 
 #front_radius: 0.2 # for type "two_circles"
 #rear_offset: 0.2 # for type "two_circles"
 #rear_radius: 0.2 # for type "two_circles"

3. GoalTolerance

  #*******************************************************************************
  # GoalTolerance
  #*******************************************************************************
 xy_goal_tolerance: 0.05   #目标 xy 偏移容忍度
 yaw_goal_tolerance: 0.1   #目标 角度 偏移容忍度
 free_goal_vel: False      #允许机器人以最大速度驶向目的地,为False时,车到达终点时的目标速度为0;
 complete_global_plan: True

4.Obstacles

 #*******************************************************************************
   # Obstacles
 #*******************************************************************************
 min_obstacle_dist: 0.22                     #和障碍物最小距离
 inflation_dist: 0.2                         #障碍物膨胀距离
 include_costmap_obstacles: True             #costmap 中的障碍物是否被直接考虑
 costmap_obstacles_behind_robot_dist: 0.5    #规划时考虑后面n米内的障碍物
 obstacle_poses_affected: 10                 #障碍物姿态受影响程度0-30

 dynamic_obstacle_inflation_dist: 0.4      #动态障碍物的膨胀范围
 include_dynamic_obstacles: False          #是否将动态障碍物预测为速度模型

5.Optimization

#*******************************************************************************
   # Optimization
 #*******************************************************************************
 no_inner_iterations: 5         #被外循环调用后内循环执行优化次数
 no_outer_iterations: 4         #执行的外循环的优化次数执行的外循环的优化次数
 optimization_activate: True    #激活优化
 optimization_verbose: False    #打印优化过程详情
 penalty_epsilon: 0.1           #对于硬约束近似,在惩罚函数中添加安全范围
 obstacle_cost_exponent: 4
 weight_max_vel_x: 2            #最大x速度权重 0~2
 weight_max_vel_theta: 1        #最大角速度权重 0~1
 weight_acc_lim_x: 1            #最大x 加速度权重 0~1
 weight_acc_lim_theta: 1        #最大角速度权重 0~1
 weight_kinematics_nh: 1000     #非完整运动学的优化权重
 weight_kinematics_forward_drive: 5     #优化过程中,迫使机器人只选择前进方向,差速轮适用
 weight_kinematics_turning_radius: 1    #优化过程中,车型机器人的最小转弯半径的权重
 weight_optimaltime: 0.3 # must be > 0  #优化过程中,基于轨迹的时间上的权重
 weight_shortest_path: 0
 weight_obstacle: 100           #优化过程中,和障碍物最小距离的权重 0~50
 weight_inflation: 0.3          #优化过程中, 膨胀区的权重
 weight_dynamic_obstacle: 10    #优化过程中,和动态障碍物最小距离的权重
 weight_dynamic_obstacle_inflation: 0.2  #优化过程中,和动态障碍物膨胀区的权重 0~50
 weight_viapoint: 1             #优化过程中,和全局路径采样点距离的权重
 weight_adapt_factor: 2

6. Homotopy Class Planner

 #*******************************************************************************
 # Homotopy Class Planner
 #*******************************************************************************
 enable_homotopy_class_planning: true   #激活并行规划
 enable_multithreading: True            #允许多线程并行处理
 max_number_classes: 3                  #考虑到的不同轨迹的最大数量
 selection_cost_hysteresis: 1.0
 selection_prefer_initial_plan: 0.9
 selection_obst_cost_scale: 100.0
 selection_alternative_time_cost: False

 roadmap_graph_no_samples: 15       #指定为创建路线图而生成的样本数
 roadmap_graph_area_width: 6        #指定该区域的宽度
 roadmap_graph_area_length_scale: 1.0
 h_signature_prescaler: 0.5         #(0.2 < value <= 1)缩放用于区分同伦类的内部参数
 h_signature_threshold: 0.1         #如果实部和复部的差都低于规定的阈值,则假定两个h签名相等。
 obstacle_heading_threshold: 0.45   #在障碍物航向和目标航向之间指定标量乘积的值,以便将障碍物考虑在内进行探索
 switching_blocking_period: 0.0     #指定允许切换到新的等效类之前需要终止的持续时间
 #为true,则将不同拓扑的所有轨迹附加到该组通孔点,否
 #则仅将与初始/全局计划共享相同拓扑的轨迹与它们连接 (对test_optim_node无效)
 viapoints_all_candidates: True 
 delete_detours_backwards: True 
 max_ratio_detours_duration_best_duration: 3.0
 visualize_hc_graph: False          #可视化创建的图形,用于探索不同的轨迹
 visualize_with_time_as_z_axis_scale: False  #在rviz里可看到优化使用的graph

7.Recovery

 #*******************************************************************************
 # Recovery
 #*******************************************************************************
 #当规划器检测到系统异常,允许缩小时域规划范围,TEB将以更近的点作为规划目标,尝试重新规划出可行路径;
 shrink_horizon_backup: false         
 shrink_horizon_min_duration: 10  #如果检测到不可行的轨迹,激活缩小的水平线后备模式,本参数为其最短持续时间。
 oscillation_recovery: True       #尝试检测和解决振荡
oscillation_v_eps: 0.1          #(0,1)内的 normalized 线速度的平均值的阈值,判断机器人是否运动异常
oscillation_omega_eps: 0.1      #(0,1)内的 normalized 角速度的平均值,判断机器人是否运动异常
oscillation_recovery_min_duration: 10  #在这个时间内,是否再次发生FailureDetector检测的振荡
oscillation_filter_duration: 10  #failure_detector_中buffer容器的大小为oscillation_filter_duration * controller_frequency

其中oscillation_v_eps和oscillation_omega_eps是用来判断速度是否震荡的阈值,
这里将速度归一化到[0,1]区间,所以配置中这两个值的区间也在(0,1)
震荡判断:文章来源地址https://www.toymoban.com/news/detail-604742.html

//如果线速度和角速度均值小于阈值,且方向震荡,则判定机器人处于震荡状态
if (std::abs(v_mean) < v_eps && std::abs(omega_mean) < omega_eps && omega_zero_crossings>1 ) 
{
    oscillating_ = true;
}

二.调试手记

到了这里,关于TEB算法2-teb参数说明及调试小记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TEB算法详解(TebLocalPlannerROS::computeVelocityCommands(1))

    “TEB”全称Time Elastic Band(时间弹性带)Local Planner,该方法针对全局路径规划器生成的初始轨迹进行后续修正(modification),从而优化机器人的运动轨迹,属于局部路径规划。在轨迹优化过程中,该算法拥有多种优化目标,包括但不限于:整体路径长度、轨迹运行时间、与障碍

    2024年02月02日
    浏览(22)
  • 机器人控制算法——局部规划器TEB算法原理及C++可视化仿真

    1.背景介绍 最近一段时间,由于项目需要,一直在做TEB算法的工程化的工作,于是就考虑写下一篇系统些的文章,作为笔记,后续自己看也方便,TEB的英文名Time elastic band”,是一种局部规划器,它的核心思想是将路径规划问题转化为一个带有时间弹性的优化问题,通过对时间弹

    2024年02月04日
    浏览(33)
  • 机器人控制算法——TEB算法—Obstacle Avoidance and Robot Footprint Model(避障与机器人足迹模型)

    1.1处罚条款 避障是作为整体轨迹优化的一部分来实现的。显然,优化涉及到找到指定成本函数(目标函数)的最小成本解(轨迹)。简单地说:如果一个计划的(未来)姿势违反了与障碍物的期望分离,那么成本函数的成本必须增加。理想情况下,在这些情况下,成本函数值

    2024年02月06日
    浏览(37)
  • 运行teb_local_planner/TebLocalPlannerROS时报错

    在navigation时,运行pnc导航,报了Failed to create the teb_local_planner/TebLocalPlannerROS的错误。 解决办法: 在你的工作空间catkin_ws/src下进行teb源码安装 完成后回到工作空间运行以下命令: 进行编译: 此时再运行导航即可。 大功告成!!!

    2024年02月11日
    浏览(31)
  • Turtlebot4 和 Turtlebot3 和 Turtlebot2 ROS开源机器人说明及参数对比

    一、TB4和TB3产品参数对比: 二、Turtlebot 3和Turtlebot 4的比较: 很多未接触过Turtlebot ROS机器人系列的用户,看到TB3和TB4两型号,就会很自然地认为TB4肯定比TB3高级,会问到TB4和TB3的区别,TB4进行了哪些升级?其实接触过后,就会明白Turtlebot只是代表 ROS机器人系列 的统称,2/3

    2024年02月06日
    浏览(32)
  • 深入理解PID控制算法:原理、举例及参数调试和选择方法

    PID控制算法的原理是基于负反馈控制理论的。当系统处于稳态时,PID算法通过不断测量系统的实际输出和期望输出之间的误差,并根据误差的大小来调整控制器的输出。PID算法可以通过三种不同的控制方式来实现这一目标: 比例控制(P控制):当系统的误差增大时,P控制将

    2024年02月16日
    浏览(29)
  • python爬虫-获取headers(报文头)关键参数实例小记

    第一步:请求页面,得到响应。 建议首次请求时headers内容都带着,调试的时候根据情况将headers中的参数进行注释,来确定是否为headers的参数或者formdata 参数影响 响应结果。 响应结果: 5分钟后相同参数再次请求 通过排查headers中的 X-Apikey 参数为关键参数。 第二步:全网站

    2024年02月16日
    浏览(22)
  • 【C++】STL 算法 - for_each 遍历算法 ( for_each 函数原型 | for_each 函数源码分析 | for_each 函数 _Fn _Func 参数 值传递说明 )

    在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , 提供了 for_each 算法 用于 对一个 STL 容器中的每个元素执行某个指定的 \\\" 操作 \\\" ; for_each 算法 中 执行的 \\\" 操作 \\\" 可以是一个 函数 / 函数对象 / Lambda 表达式 ; 在 for_each 函数 中 可以修改 被遍历的元素 , 也可以 不修改

    2024年01月17日
    浏览(29)
  • 【CLion + ROS2】在 clion 中编译调试 ros2 package

    最近学习 ros2 的 carla-ros-bridge 代码,发现代码中没有顶层 CMakeLists.txt,这种情况下,clion 无法构建 ros2 工程,从而无法编译调试 ros2 package 或者工程,在浏览了一些网页寻找解决方法之后,发现 链接1,2,3 中给出了很好的指导步骤,这篇文章就是用来记录自己操作时的一点心

    2024年02月13日
    浏览(38)
  • 超维空间M1无人机使用说明书——01、ROS机载电脑使用说明——远程连接

    1、SSH优缺点 优点:1、消耗网络资源 2、运行稳定 缺点:1、图形化界面卡顿 2、对新手不友好 2、可视化软件优缺点 优点:1、对新手友好 2、运图形化界面比ssh流畅 缺点:1、消耗网络资源 一、远程登录到无人机端的Jetson nano 步骤一、通过SSH 登录到ROS主控端 无人机上电后会默认发

    2024年01月22日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包