局部路径规划器teb_local_planner详解6:关于动态障碍物与常见问题

前言

局部路径规划器teb_local_planner详解5:关于car-like robots中,我们介绍了与car-like机器人模型相关的参数,说明了在对接底盘的时候需要注意底盘接收的控制指令格式。我们还介绍了holonomic robot应该配置的参数。

本章主要描述teb中处理动态障碍物的方法,最后会讲些teb相关的问题

一、相关参数

重要参数:

~<name>/include_dynamic_obstacles: 是否考虑动态障碍物

~<name>/dynamic_obstacle_inflation_dist: 动态障碍物膨胀距离

~<name>/weight_dynamic_obstacle: 动态障碍物权重

~<name>/weight_dynamic_obstacle_inflation: 膨胀带权重

二、实现手段

之前介绍过costmap_converter, 其中有个名字是CostmapToDynamicObstacles的插件。

主要根据costmap的变化来推断动态障碍物。

三、常见问题

1. 与全局planner配合

之前,我们在教程global_planner中有提到参数/orientation_mode
他的含义就是整条全局路径规划出来的轨迹中,每个pose的朝向。

跟local planner配合起来就明白他的意思了。我们在局部规划的时候,总是一段一段的前进。会把全局规划输出的结果分成好几个小段来执行。那么,每个小段的终点都有朝向,这个会决定局部规划器如何规划轨迹。

如果global planner没有提供朝向的话,比如navfn规划器,teb_local_planner会自己重写一下:使用参数:global_plan_overwrite_orientation,这个朝向总是指向他下一个pose

但是,如果遇到下图这种情况,开始和结束方向相同,我们最好的策略是直接倒车出来:

在这里插入图片描述
我们使用global_planner,将其朝向设置为Interpolate就可以成功退车出来了。

在这里插入图片描述
最后,allow_init_with_backwards_motion参数也要设置为true

综合讨论,我觉得,使用global_planner 的时候,应该讲朝向设置为ForwardThenInterpolate

2. 运算时间

想要加速规划时间:

costmap
local_costmap的长宽和resolution配置的小一点

teb中的障碍物相关参数

  • costmap_obstacles_behind_robot_dist: local_costmap以机器人为中心,后面的障碍物,没比要太费精力。但是为了保证不后退撞墙,这个值应该大于0
  • obstacle_poses_affected: 对于小的障碍物,差不多10左右就够
  • footprint model: 主要是碰撞检测中的距离计算

轨迹的相关参数

  • dt_ref:决定轨迹的分辨率,不能太大(> 0.6),否则动力学约束乱套了
  • max_global_plan_lookahead_dist: 临时终点,最大也不超过local_costmap的边界

优化相关参数

  • no_inner_iterations:每次外部迭代中,求解器调用次数
  • no_outer_iterations: 每次采样间隔的迭代次数
  • 所有加速度相关的权重:都可以调成0

多条可选轨迹参数

  • enable_homotopy_class_planning: 开不开备选?

  • max_number_classes:开了放几条备选方案,通常2条就够了,绕开对称的左右障碍物

  • 8
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
teb_local_planner是ROS中的一个局部路径规划,用于生成机人在环境中的局部路径。以下是使用teb_local_planner的基本步骤: 1. 安装teb_local_planner: ``` sudo apt-get install ros-<distro>-teb-local-planner ``` 2. 在机人的工作空间中创建一个catkin包,并在package.xml中添加如下依赖项: ``` <build_depend>teb_local_planner</build_depend> <run_depend>teb_local_planner</run_depend> ``` 3. 创建一个launch文件,将teb_local_planner配置为全局规划的子规划: ```xml <launch> <node name="move_base" pkg="move_base" type="move_base" respawn="false" output="screen"> <rosparam file="$(find your_robot_config)/base_local_planner_params.yaml" command="load" /> <rosparam file="$(find your_robot_config)/global_planner_params.yaml" command="load" /> <param name="base_global_planner" value="navfn/NavfnROS" /> <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" /> </node> </launch> ``` 4. 在机人配置文件夹下创建一个base_local_planner_params.yaml文件,并在其中添加TebLocalPlannerROS的参数设置。这里提供一个示例: ```yaml # TEB Local Planner parameters TrajectoryPlannerROS: max_vel_x: 0.5 max_rotational_vel: 1.0 min_in_place_rotational_vel: 0.1 escape_vel: -0.1 acc_lim_x: 1.0 acc_lim_th: 1.0 holonomic_robot: false max_vel_theta: 1.0 min_turning_radius: 0.2 footprint_model: consavable_laser_scan footprint_padding: 0.1 teb_autosize: true dt_ref: 0.3 dt_hysteresis: 0.1 min_samples: 3 global_plan_overwrite_orientation: true allow_init_with_backwards_motion: false max_global_plan_lookahead_dist: 3.0 force_reinit_new_goal_dist: 1.0 force_reinit_new_goal_angular: 0.2 inscribed_radius: 0.25 circumscribed_radius: 0.3 costmap_converter_plugin: "" costmap_converter_spin_thread: true visualize_subsampled_path: false visualize_voronoi_path: false visualize_infeasible_points: false visualize_dynamic_obstacles: false delete_detours_backwards: false detours_orientation_tolerance: 0.1 weight_viapoint: 1.0 weight_optimaltime: 1.0 weight_shortest_path: 0.0 viapoints_all_candidates: false max_number_classes: 0 selection_cost_hysteresis: 0.1 selection_prefer_initial_plan: false selection_obst_cost_scale: 10.0 selection_viapoint_cost_scale: 1.0 selection_alternative_time_cost: true selection_dropping_probability: 0.0 selection_dropping_memory: 2 ``` 5. 启动机人并运行局部路径规划: ``` roslaunch your_robot_name teb_local_planner.launch ``` 以上是使用teb_local_planner的基本步骤,你需要根据你的机人配置和任务需求进行相应的参数配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值