1. 初识TEB算法:橡皮筋模型与运动优化
第一次接触TEB算法时,我被它"时间弹性带"的概念深深吸引。想象一下用橡皮筋连接机器人的起点和目标点,这条橡皮筋可以自由伸缩变形,但始终保持着连接状态。TEB算法本质上就是在橡皮筋模型基础上,加入了时间维度和物理约束的优化过程。
在实际项目中,我常用阿克曼底盘机器人在仓库环境测试。全局规划器生成的路径往往像一根僵硬的铁丝,遇到动态障碍物时容易卡死。而TEB会在原始路径上插入多个控制节点(就像在橡皮筋上系了几个可滑动的绳结),通过调整这些节点的位置和时间间隔,使路径具备弹性变形能力。这种特性让机器人能在保持大方向不变的前提下,灵活避开突然出现的货架或人员。
核心优化目标包含三个关键维度:时间最短(weight_optimaltime)、路径平滑(weight_shortest_path)和避障安全(weight_obstacle)。调试时我发现,当weight_optimaltime设为500时,机器人会表现出明显的"赶时间"特性,更喜欢走直线捷径;而降低到200时则会更谨慎地保持与障碍物距离。这就像开车时选择是抢时间闯黄灯,还是稳妥等待下一个绿灯。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 参数文件深度解析:yaml配置实战指南
2.1 轨迹参数组:控制路径的"弹性"
teb_autosize参数是我的最爱之一。设为True时,算法会根据环境复杂度自动调整规划时域,就像橡皮筋能根据拉力自动调整长度。在狭窄通道中,系统会自动增加控制节点密度(相当于把橡皮筋分段加密),提升避障精度。
dt_ref参数直接影响运动流畅度。0.3秒的时间分辨率意味着相邻位姿间隔0.3秒,这个值过大会导致转弯时出现"多边形效应"。有次调试时设为0.5,机器人转弯轨迹变成了明显的五边形。后来固定在0.35,配合dt_hysteresis=0.1的浮动范围,既保证实时性又维持了曲线平滑。
2.2 机器人动力学:给橡皮筋加上物理限制
max_vel_x和acc_lim_x这对参数需要联动调整。在物流仓库场景中,我通常先用0.4m/s低速测试路径可行性,确认无误后再逐步提升到0.7m/s。但要注意加速度参数必须同步修改——有次只调速度上限没改加速度,导致急刹时出现"点头"现象。
min_turning_radius对阿克曼底盘尤为关键。0.35
