ROS 局部路径规划-TEB

本文已参与「新人创作礼」活动,一起开启掘金创作之路

Teb参数

teb_local_planner软件包允许用户设置参数以自定义行为。这些参数分为几类:机器人配置,目标公差,轨迹配置,障碍,优化,独特拓扑中的规划以及其他参数。选择其中一些以符合base_local_planner的要求。可以在运行时使用rqt_reconfigure修改许多(但不是全部)参数。

配置参数

acc_lim_x(double,默认值:0.5)

#机器人的最大平移加速度,单位为米/秒^ 2
acc_lim_theta(double,默认值:0.5)
#机器人的最大角加速度,以弧度/秒^ 2为单位
max_vel_x(double,默认值:0.4)
#机器人的最大平移速度,以米/秒为单位
max_vel_x_backwards(double,默认值:0.2)
#向后行驶时机器人的最大绝对平移速度,以米/秒为单位。请参阅优化参数weight_kinematics_forward_drive

max_vel_theta(double,默认值:0.3)
#机器人的最大角速度(弧度/秒)
##########################################################
#以下参数仅与汽车机器人相关:

min_turning_radius(double,默认值:0.0)

#车形机器人的最小转弯半径(差速驱动机器人设置为零)。
#轴距(double,默认值:1.0)
#后桥和前桥之间的距离。对于后轮机器人,该值可能为负(仅当?cmd_angle_instead_rotvel设置为true时才需要)。
cmd_angle_instead_rotvel(bool,默认值:false#用相应的转向角[-pi / 2,pi / 2]代替指令速度消息中的转速。注意,根据应用改变偏航率的语义不是可取的。在这里,它仅符合舞台模拟器所需的输入。ackermann_msgs中的数据类型更合适,但move_base不支持。本地计划程序无意自己发送命令。
复制代码

以下参数仅与完整的机器人相关:ROS动力学的新特性

weight_kinematics_nh,#请注意,请大幅度降低以便在顺应纵向运动与不顺应横向运动(分层)之间进行权衡。

max_vel_y(double,默认值:0.0)
#机器人的最大起步速度(对于非完整机器人,应为零!)
acc_lim_y(double,默认值:0.5)
#机器人的最大踩踏加速度
##########################################################
#以下参数与用于优化的封装模型相关(请参见避免教程和机器人封装模型)。版本0.3的新功能

footprint_model / type(字符串,默认值:“ point”)

#指定用于优化的机器人足迹模型类型。不同的类型是“点”,“圆形”,“线”,“ two_circles”和“多边形”。模型的类型会显着影响所需的计算时间。
footprint_model / radius(double,默认值:0.2)
#该参数仅与“圆形”类型相关。它包含圆的半径。圆心位于机器人的旋转轴上。
footprint_model / line_start(double [2],默认值:[- 0.3,0.0 ])
#此参数仅与“线”类型相关。它包含线段的起始坐标。
footprint_model / line_end(double [2],默认值:[ 0.3,0.0 ])
#此参数仅与“线”类型相关。它包含线段的结束坐标。
footprint_model / front_offset(double,默认值:0.2)
#该参数仅与类型“ two_circles”相关。它描述了前圆的中心沿机器人的x轴偏移了多少。假定机器人的旋转轴位于[0,0]。
footprint_model / front_radius(double,默认值:0.2)
#该参数仅与类型“ two_circles”相关。它包含前圆的半径。
footprint_model / rear_offset(double,默认值:0.2)
#该参数仅与类型“ two_circles”相关。它描述了后圆心沿机器人的负x轴偏移了多少。假定机器人的旋转轴位于[0,0]。
footprint_model / rear_radius(double,默认值:0.2)
#该参数仅与类型“ two_circles”相关。它包含后圆的半径。
footprint_model / vertices(double [],默认值:[[0.25,-0.05],[...],...])
#此参数仅与“多边形”类型相关。它包含多边形顶点的列表(每个2d坐标)。多边形始终是封闭的:不要在末端重复第一个顶点。
is_footprint_dynamic(bool,默认值:false#如果为true,则在检查轨迹可行性之前更新覆盖区

#目标容忍参数
xy_goal_tolerance(double,默认值:0.2)
#到目标位置的最终欧几里得距离,以米为单位
yaw_goal_tolerance(double,默认值:0.2)
#允许的最终方向误差(以弧度为单位)
free_goal_vel(bool,默认:false#消除目标速度限制,使机器人可以最大速度到达目标
复制代码

轨迹配置参数

dt_ref(double,默认值:0.3)
#轨迹的所需时间分辨率(由于时间分辨率是优化的一部分,因此轨迹不固定为dt_ref,但是如果违反dt_ref + -dt_hysteresis,则将在迭代之间调整轨迹的大小。
dt_hysteresis(double,默认值:0.1)
#用于根据当前时间分辨率自动调整大小的磁滞,通常大约为 建议使用dt_ref的10%
min_samples(int,默认值:3)
#最小样本数(应始终大于2)
global_plan_overwrite_orientation(bool,默认:true#覆盖全局计划者提供的局部子目标的方向(因为它们通常仅提供2D路径)
global_plan_viapoint_sep(double,默认值:-0.1(禁用))
#如果为正,则从全局计划中引出通孔点(路径遵循模式)。该值确定参考路径的分辨率(如果为负值,则禁用全局规划中每两个连续通孔之间的最小距离)。请参阅参数weight_viapoint以调整强度。版本0.4中的新功能
max_global_plan_lookahead_dist(double,默认值:3.0)
#指定考虑优化的全局计划子集的最大长度(累积欧几里得距离)。然后,实际长度由本地成本图大小和此最大界限的逻辑结合确定。设置为零或负数以停用此限制。
force_reinit_new_goal_dist(double,默认值:1.0)
#如果更新的先前目标的间隔大于以米为单位的指定值,则重新初始化轨迹(跳过热启动)
feasibility_check_no_poses(int,默认值:4)
#指定在预计计划中的哪个姿势下,应在每个采样间隔内检查可行性。
publish_feedback(bool,默认值:false#发布包含完整轨迹和活动障碍物列表的计划者反馈(仅应启用评估或调试)。请参阅上面的发行商列表。
shrink_horizon_backup(bool,默认:true#在自动检测到问题(例如,不可行)的情况下,允许计划者临时缩小范围(50%)。另请参阅参数shrink_horizon_min_duration。

allow_init_with_backwards_motion(bool,默认值:false#如果为true,则可以通过向后运动来初始化基础轨迹,以防目标在本地成本图中落后于起点(仅在机器人配备了后部传感器的情况下才建议这样做)。
exact_arc_length(bool,默认值:false#如果为true,则计划程序将在速度,加速度和转弯速率计算中使用精确的弧长(->增加的cpu时间),否则将使用欧几里得近似。
shrink_horizo??n_min_duration(double,默认值:10.0)
#如果检测到不可行的轨迹,请为缩小的水平线指定最短持续时间(请参考参数shrink_horizo??n_backup以激活缩小的水平线模式)。
复制代码

障碍物参数

min_obstacle_dist(double,默认值:0.5)
#与障碍物的最小期望距离(以米为单位)
include_costmap_obstacles(bool,默认:true#指定是否应考虑本地成本图的障碍。标记为障碍物的每个单元都被视为点障碍物。因此,请勿选择成本图的非常小的分辨率,因为它会增加计算时间。在将来的版本中,将解决这种情况,并为动态障碍提供附加的api。
costmap_obstacles_behind_robot_dist(double,默认值:1.0)
#限制在机器人后面进行规划时要考虑的已占用的局部成本图障碍(以米为单位指定距离)。
obstacle_poses_affected(int,默认值:30)
#每个障碍物位置都附加到轨迹上最接近的姿势,以保持一定距离。也可以考虑其他邻居。请注意,此参数可能会在将来的版本中删除,因为障碍关联策略已在动力学+中进行了修改。请参阅legacy_obstacle_association的参数描述。
inflation_dist(double,默认值:动力学前:0.0,动力学+:0.6)
#具有非零惩罚成本的障碍物周围的缓冲区(应大于min_obstacle_dist才能生效)。另请参阅权重weight_inflation。

include_dynamic_obstacles(bool,默认值:false#如果将此参数设置为true,则在优化过程中通过等速模型预测并考虑速度为非零的障碍物的运动(通过主题障碍物的用户提供的障碍物或从costmap_converter获得)
legacy_obstacle_association(bool,默认:false#修改了将轨迹姿态与障碍物联系起来以进行优化的策略(请参阅变更日志)。您可以通过将此参数设置为true来切换到旧策略/上一个策略。旧策略:针对每个障碍物,找到最近的TEB姿势;新策略:对于每个姿势,仅找到“相关”障碍。
obstacle_association_force_inclusion_factor(double,默认值:1.5)
#非遗留障碍物关联策略尝试在优化过程中仅将相关障碍物与离散轨迹连接起来。但是,必须将指定距离内的所有障碍物都包括在内(作为min_obstacle_dist的倍数)。例如,选择2.0以便在2.0 * min_obstacle_dist的半径内强制考虑障碍。[仅当参数legacy_obstacle_association为false时才使用此参数]
obstacle_association_cutoff_factor(double,默认值:5)
#见obstacle_association_force_inclusion_factor,但超出[值]的倍数* min_obstacle_dist一切障碍,在优化过程中被忽略。首先处理参数barrier_association_force_inclusion_factor。[仅当参数legacy_obstacle_association为false时才使用此参数]
#仅当需要costmap_converter插件时,以下参数才相关(请参阅教程):

costmap_converter_plugin(字符串,默认值:“”)

#定义插件名称以将成本图单元格转换为点/线/多边形。设置一个空字符串以禁用转换,以便将所有单元格都视为点障碍。
costmap_converter_spin_thread(bool,默认:true#如果设置为true,costmap转换器将在另一个线程中调用其回调队列。
costmap_converter_rate(double,默认值:5.0)
#费率,用于定义costmap_converter插件处理当前成本图的频率(该值不应比成本图更新率高很多)[以Hz为单位]。
复制代码

优化参数

no_inner_iterations(int,默认值:5)

#每次外部循环迭代中调用的实际求解器迭代次数。参见参数no_outer_iterations。
no_outer_iterations(int,默认值:4)
#每次外部循环迭代都会根据所需的时间分辨率dt_ref自动调整轨迹的大小,并调用内部优化器(执行no_inner_iterations)。因此,每个计划周期中求解程序迭代的总数是两个值的乘积。
penalty_epsilon(double,默认值:0.1)
#为惩罚函数增加一个小的安全余量,以实现硬约束近似
weight_max_vel_x(double,默认值:2.0)
#满足最大允许平移速度的优化权重
weight_max_vel_theta(double,默认值:1.0)
#满足最大允许角速度的优化权重
weight_acc_lim_x(double,默认值:1.0)
#满足最大允许平移加速度的优化权重
weight_acc_lim_theta(double,默认值:1.0)
#满足最大允许角加速度的优化权重
weight_kinematics_nh(double,默认值:1000.0)
#用于满足非完整运动学的优化权重(此参数必须很高,因为运动学方程构成了一个等式约束,即使值1000也不意味着由于与其他成本相比较小的“原始”成本值而导致的矩阵条件不佳) 。
weight_kinematics_forward_drive(double,默认值:1.0)
#优化权重,用于迫使机器人仅选择前进方向(正向速度)。较小的重量(例如1.0)仍然允许向后行驶。大约1000的值几乎可以防止向后驱动(但不能保证)。
weight_kinematics_turning_radius(double,默认值:1.0)
#优化重量,以实现最小转弯半径(仅适用于汽车类机器人)。
weight_optimaltime(double,默认值:1.0)
#收缩轨迹过渡/执行时间的最优化权重
weight_obstacle(double,默认值:50.0)
#优化重量以保持与障碍物的最小距离
weight_viapoint(double,默认值:1.0)
#优化权重,以最小化到通孔的距离(分别为参考路径)。版本0.4中的新功能
weight_inflation(double,默认值:0.1)
#通胀惩罚的优化权重(应该很小)。

weight_adapt_factor(double,默认值:2.0)

#在每次外部TEB迭代中,一些特殊权重(当前为weight_obstacle)都将以此因子重复缩放(weight_new = weight_old * factor)。迭代地增加权重而不是设置较大的先验值会导致底层优化问题的更好的数值条件。
复制代码

独特拓扑中的并行规划

enable_homotopy_class_planning(bool,默认:true#在独特的拓扑中激活并行规划(由于同时优化了多个轨迹,因此需要更多的CPU资源)
enable_multithreading(bool,默认:true#激活多个线程以计划不同线程中的每个轨迹
max_number_classes(int,默认值:4)
#指定要考虑的最大不同轨迹数(限制计算工作量)
selection_cost_hysteresis(double,默认值:1.0)
#指定新候选人必须具有多少轨迹成本才能选择之前的轨迹(如果new_cost <old_cost * factor,则进行选择)。
selection_obst_cost_scale(double,默认值:100.0)
#仅选择“最佳”候选者的障碍物成本条件的额外缩放。
selection_viapoint_cost_scale(double,默认值:1.0)
#仅为了选择“最佳”候选者而对通孔成本条款进行额外的缩放。版本0.4中的新功能
selection_alternative_time_cost(bool,默认值:false#如果为true,则将时间成本(时间差平方的总和)替换为总过渡时间(时间差之和)。
roadmap_graph_no_samples(int,默认值:15)
#指定为创建路线图而生成的样本数
roadmap_graph_area_width(double,默认值:6)
#在起点和目标之间的矩形区域中采样随机关键点/航路点。以米为单位指定该区域的宽度。
h_signature_prescaler(double,默认值:1.0)
#标度内部参数(H-signature),用于区分同伦类。警告:仅当您在本地成本图中观察到障碍物过多的问题时,才减小此参数,请勿将其选择得太低,否则障碍物将无法彼此区分(0.2 <值<= 1)。
h_signature_threshold(double,默认值:0.1)
#如果实部和复杂部的差都低于指定的阈值,则假定两个H签名相等。
obstacle_heading_threshold(double,默认值:1.0)
#在障碍物航向和目标航向之间指定标量乘积的值,以便将它们(障碍物)考虑在内进行探索。
visualize_hc_graph(bool,默认值:false#可视化为探索独特轨迹而创建的图形(rviz中的检查标记消息)
viapoints_all_candidates(bool,默认:true#如果为true,则将不同拓扑的所有轨迹都附加到该组通孔点,否则,只有与初始/全局计划共享相同拓扑的轨迹才与它们相连(对test_optim_node无效)。版本0.4中的新功能

switching_blocking_period(double,默认值:0.0)

#指定允许切换到新的等效类之前需要终止的持续时间(以秒为单位)。
复制代码

杂项参数

odom_topic(字符串,默认值:“ odom ”)

#测距消息的主题名称,由机器人驱动程序或模拟器提供。
map_frame(字符串,默认值:“ odom ”)
#全局规划框架(在使用静态地图的情况下,通常必须将此参数更改为“ / map”。
复制代码

路线图

当前计划在将来进行的某些功能和改进。 在不可避免的障碍物(例如,真正位于目标附近的障碍物)的情况下,增加并改善安全功能。 实施适当的逃逸行为。 对于计划器在多个局部最优解之间振荡的情况(不是基于拓扑,而是由于发生的噪声等)的改进/解决方案。

Guess you like

Origin juejin.im/post/7076998046994661390