1. 认识TEB规划器与阿克曼底盘第一次接触TEB局部规划器时我完全被它复杂的参数列表搞懵了。直到在阿克曼底盘机器人上调试时撞坏了一个激光雷达才真正明白参数调优的重要性。TEBTimed Elastic Band规划器本质上是个动态轨迹优化器它像橡皮筋一样把路径点连起来通过不断调整这些橡皮筋的形状和时间间隔让机器人能避开障碍物同时保持运动合理性。阿克曼底盘和普通差分底盘最大的区别在于转向方式。想象一下汽车转弯的场景前轮会有不同的转向角度内侧轮转角更大。这种转向机构带来两个关键限制最小转弯半径和最大转向角。我在调试时就遇到过机器人死活转不过直角弯的情况后来发现是max_steering_angle参数设得太小。2. 仿真环境搭建与初步调试2.1 选择合适的仿真工具我强烈推荐先用GazeboROS进行仿真测试。去年给物流园区做自动导引车时我们先用Gazebo建了个1:1的虚拟仓库里面随机生成移动的障碍物模拟工作人员。这样调试时就算撞车也零成本。具体操作很简单roslaunch teb_local_planner_tutorials robot_carlike_in_stage.launch这个官方示例已经包含了阿克曼底盘模型。重点观察几个指标路径平滑度、转弯时的速度下降曲线、遇到突发障碍的反应时间。记得把rviz的Loop Animation打开方便反复观察特定场景。2.2 基础参数调试方法论调试时要像老中医望闻问切先看全局路径跟踪效果听分析控制指令的连续性问检查参数间的耦合关系最后切调整关键参数。这里有个实用技巧在rviz里同时显示以下内容全局路径绿色TEB优化后的局部路径蓝色机器人足迹轮廓膨胀后的障碍物区域红色我常用的参数调试顺序是先调kinematics相关参数确保转向合理再调速度/加速度限制保证运动平稳最后优化障碍物回避权重3. 关键参数详解与调优技巧3.1 运动学参数配置阿克曼底盘最关键的三个运动学参数参数名典型值调试技巧cmd_angle_instead_rotveltrue必须设为true才能用转向角控制max_steering_angle0.5rad用尺子实际测量车辆极限转向角wheelbase1.2m准确测量前后轴距误差要3cm去年调试一辆高尔夫球车时wheelbase填错了0.2米结果机器人总在转弯时划出诡异的S形。后来用卷尺反复测量才解决问题。3.2 速度与加速度限制速度参数调优有个80%原则先把厂家标称的最大值打八折作为初始值。比如车辆极速2m/smax_vel_x就从1.6开始试。特别要注意的是max_vel_theta旋转速度阿克曼底盘的这个值通常不超过0.3rad/s否则容易引发侧滑。加速度限制更讲究acc_lim_x建议从0.5m/s²开始慢慢往上加。我有个血泪教训有次贪快直接设了2.0结果测试时急刹导致货架上的传感器全摔坏了。现在我的标准流程是空载时测试最大加速度负载50%重量再测试取两个值的较小者作为最终参数4. 实车测试与迭代优化4.1 从仿真到实车的过渡技巧仿真到实车的过渡就像驾校学员第一次上路。我总结了个三同原则同场景先在实车环境复现仿真场景同参数使用仿真调试好的参数起步同指标对比相同性能指标的变化建议准备个参数对比表格记录每次修改的效果。比如修改时间修改参数转弯成功率平均速度急停次数Day1max_vel_x1.070%0.8m/s3Day2acc_lim_theta0.885%1.2m/s14.2 典型问题排查指南实车测试中最常遇到的三个问题过弯切内角增大weight_kinematics_nh建议0.5起步遇到障碍物急刹调高weight_obstacle但别超过10路径抖动严重减小dt_ref到0.3左右上周刚解决一个典型案例机器人在走廊总会莫名急停。后来发现是inflation_dist设太小0.3m机器人觉得两侧墙壁都是障碍物。调整到0.5m后问题立即解决。5. 高级调试技巧与经验分享5.1 动态参数调整在复杂环境中固定参数可能不够用。我最近的项目就用dynamic_reconfigure实现了运行时调参rospy.ServiceProxy(/move_base/TebLocalPlannerROS/set_parameters, dynamic_reconfigure.srv.Reconfigure)比如在狭窄区域自动降低速度到开阔区域再恢复。实测下来碰撞率降低了60%不过要特别注意参数切换时的平滑过渡。5.2 数据驱动的优化方法去年给医院做导诊机器人时我们开发了套自动化测试系统用rosbag记录所有传感器数据和控制指令用Python脚本自动分析每次异常情况基于统计结果反向优化参数这套系统帮我们发现了人工调试很难发现的耦合问题。比如转弯速度与激光雷达扫描频率的相互影响最终通过调整dt_hysteresis参数完美解决。