TEB参数优化实战——精准控制机器人避障与运动方向 1. TEB参数优化入门从机器人半径开始第一次接触TEB局部路径规划时最让我头疼的就是机器人经常卡在狭窄通道里。后来发现核心问题出在机器人半径参数的设置上。这个参数直接影响避障效果就像给机器人穿衣服——尺寸太大行动笨拙太小又容易撞衫。在ROS的teb_local_planner_params.yaml配置文件中有两种主流设置方式第一种是直接定义robot_radius参数。我常用的配置是这样的robot_radius: 0.35 # 单位米 footprint_model: type: circular这种方式简单直接适合圆形机器人。但实测发现当机器人形状不规则时比如带机械臂的移动底盘单纯设置半径会导致规划路径过于保守。第二种方案是通过min_obstacle_dist控制安全距离。这个参数更灵活它定义的是机器人中心到障碍物的最小距离。我在仓储机器人项目中使用的是min_obstacle_dist: 0.4 footprint_model: type: polygon vertices: [[0.3,0.2], [0.3,-0.2], [-0.3,-0.2], [-0.3,0.2]]这种组合方式能精确匹配机器人轮廓。不过要注意当同时设置robot_radius和min_obstacle_dist时系统会取两者中的较大值作为避障依据。2. 深度解析禁止倒退的优化技巧很多场景下我们不希望机器人倒车行驶比如物流AGV在狭窄货架间作业时。TEB算法本身没有直接的禁止倒退开关但通过weight_kinematics_forward_drive参数可以实现类似效果。这个参数的工作原理很有趣——它相当于给正向运动加分。参数值越大算法越倾向于选择正向移动的方案。我的实测数据如下参数值倒退频率路径平滑度540%★★★★☆2015%★★★☆☆1005%★★☆☆☆建议这样配置weight_kinematics_forward_drive: 50 # 平衡倒退抑制与路径质量 optimization_verbose: true # 开启优化日志便于调试但要注意物理限制当通道宽度小于机器人转弯半径时倒退是不可避免的。这时候强行设置过大权重会导致规划失败。我的经验是配合max_vel_x_backwards参数使用max_vel_x_backwards: 0.1 # 限制倒车速度3. 避障性能的进阶调参策略单纯调整半径参数只是基础真正的避障优化需要多参数协同。这里分享我的调参三板斧第一板斧动态调整安全距离min_obstacle_dist: 0.3 # 静态安全距离 inflation_dist: 0.5 # 动态膨胀距离 costmap_converter_plugin: costmap_converter::CostmapToPolygonsDBSMCCH这种组合能让机器人在空旷区域高速移动遇到障碍物时自动扩大安全距离。第二板斧优化轨迹采样max_samples: 500 # 增加采样点数 selection_obst_cost_scale: 2.0 # 提高避障权重 selection_alternative_time_cost: false # 关闭耗时优化更多采样点意味着更好的路径选择但会增大计算量。在Jetson Xavier上实测500个采样点能保持30Hz的规划频率。第三板斧速度自适应use_velocity_scaled_obstacle_dist: true max_vel_x: 1.0 acc_lim_x: 0.5这样机器人在高速运动时会自动保持更大安全距离就像老司机知道车速快时要留更长的刹车距离。4. 实战中的典型问题排查调参过程中最常见的三个坑我都踩过问题1机器人贴着障碍物走检查weight_obstacle是否过小建议值weight_obstacle: 50 # 默认10太小 obstacle_poses_affected: 30 # 增加障碍物影响范围问题2频繁规划失败通常是约束条件冲突导致建议排查顺序检查robot_radius是否大于实际尺寸确认min_obstacle_dist不超过通道宽度一半适当降低weight_kinematics_forward_drive问题3转弯时抖动严重这是采样不足的典型表现优化方案dt_ref: 0.3 # 增大时间步长 dt_hysteresis: 0.1 # 添加迟滞系数 global_plan_viapoint_sep: 0.2 # 精简路径点在医疗机器人项目中我们通过这样的参数组合实现了毫米级精度的避障robot_radius: 0.25 min_obstacle_dist: 0.3 weight_kinematics_forward_drive: 30 weight_obstacle: 100 max_vel_x_backwards: 0.05调参就像调琴弦太紧容易断太松不出声。最好的办法是先用仿真环境测试不同场景记录下每次参数调整的效果。我习惯用rosbag记录轨迹再用rqt_teb插件可视化分析优化效果。记住没有放之四海皆准的最优参数只有最适合当前场景的平衡点。