1. 轮式移动机器人轨迹跟踪系统概述
轮式移动机器人轨迹跟踪是机器人控制领域的经典问题,其核心在于如何让机器人精确跟随预设路径运动。我最近在MATLAB环境下实现了一套基于双闭环控制架构的轨迹跟踪系统,结合了运动学和动力学模型,并创新性地引入了自抗扰控制(ADRC)中的非线性扩张状态观测器(ESO)技术。这套系统在存在模型不确定性和外部扰动的情况下,仍能保持良好的跟踪性能。
1.1 系统架构设计
整个控制系统采用分层设计理念,分为外环和内环两个控制层级:
- 外环运动学控制层:负责处理位姿误差,生成期望速度指令
- 内环动力学控制层:实现速度跟踪和扰动补偿
这种分层架构的优势在于:
- 解耦了路径规划和底层执行
- 便于单独优化各层控制器
- 系统模块化程度高,易于扩展和维护
提示:在实际工程实现中,我建议将两个控制层运行在不同的控制周期上,外环可以运行在较慢的周期(如50-100Hz),而内环则需要更快的控制周期(200-500Hz)。
1.2 硬件平台参数
系统针对的轮式机器人主要参数如下:
| 参数名称 | 符号 | 数值 | 单位 |
|---|---|---|---|
| 质量 | m | 5.0 | kg |
| 车宽 | L | 0.3 | m |
| 驱动轮半径 | r | 0.05 | m |
| 转动惯量 | I | 0.2 | kg·m² |
这些参数在动力学模型中起着关键作用,特别是当机器人负载变化时,需要重新测量或估计这些参数值。
2. 参考轨迹生成与误差定义
2.1 圆形参考轨迹生成
在仿真中,我采用了圆形轨迹作为参考路径,其数学表达式为:
matlab复制% 圆形参考轨迹生成代码
A = 2.0; % 振幅(m)
w = 0.2; % 角频率(rad/s)
x_r = A*sin(w*t);
y_r = A*(1-cos(w*t));
theta_r = atan2(y_r, x_r);
圆形轨迹的优点在于:
- 包含连续变化的曲率,能全面测试控制器的性能
- 轨迹解析式简单,便于计算各阶导数
- 可视化效果直观,便于观察跟踪效果
2.2 位姿误差定义
为了准确描述跟踪误差,我采用了机体坐标系下的误差定义方式:
- 纵向误差:e₀ = (x_r - x)cosθ + (y_r - y)sinθ
- 横向误差:e_t = -(x_r - x)sinθ + (y_r - y)cosθ
- 角度误差:e_th = θ_r - θ
这种误差定义方式的优势在于:
- 物理意义明确,直接对应实际控制需求
- 在任意朝向下保持一致性
- 便于控制器设计,能实现误差的自然收敛
3. 外环运动学控制器设计
3.1 控制器结构
外环运动学控制器的核心任务是生成合理的期望速度指令,使位姿误差收敛。我设计的控制器表达式为:
matlab复制% 运动学控制器MATLAB实现
k_o = 0.8; % 纵向误差增益
k_t = 0.6; % 横向误差增益
k_th = 0.5; % 角度误差增益
v_d = v_r*cos(e_th) + k_o*e_o;
w_d = w_r + k_t*v_r*e_t + k_th*sin(e_th);
3.2 参数整定经验
通过多次仿真实验,我总结了参数整定的几点经验:
- 纵向误差增益k₀主要影响收敛速度,但过大会导致超调
- 横向误差增益k_t需要与k_th协调调整
- 角度误差项使用sin(e_th)而非直接使用e_th,可以避免角度跳变问题
注意:在实际调试时,建议先固定k_th,调整k₀和k_t,待轨迹跟踪基本稳定后再微调k_th。
4. 内环动力学控制与ESO设计
4.1 动力学模型
轮式移动机器人的简化动力学模型可表示为:
code复制M·V̇ + F + τ_d = τ
其中:
- M为质量矩阵
- F为摩擦力
- τ_d为外部扰动
- τ为控制输入
4.2 非线性ESO设计
扩张状态观测器(ESO)是自抗扰控制的核心,我将系统总扰动作为扩张状态进行估计:
matlab复制% 非线性ESO实现
function [z1, z2, z3] = eso(y, u, h, beta1, beta2, beta3)
e = z1 - y;
fe = fal(e, 0.5, h);
fe1 = fal(e, 0.25, h);
z1 = z1 + h*(z2 - beta1*e);
z2 = z2 + h*(z3 - beta2*fe + b*u);
z3 = z3 + h*(-beta3*fe1);
end
4.3 动力学控制器
基于ESO的扰动估计,动力学控制器设计为:
matlab复制% 动力学控制器
tau = kp*(v_d - v) + kd*(v_d_dot - v_dot) + z3/b;
其中z3即为ESO估计的总扰动,通过前馈补偿显著提高了系统的鲁棒性。
5. 仿真结果与分析
5.1 轨迹跟踪效果
经过50秒的闭环仿真,系统表现出色:
- 最大跟踪误差小于0.05m
- 稳态误差在0.01m以内
- 角度误差收敛迅速
5.2 扰动估计性能
ESO对扰动的估计效果:
| 扰动类型 | 估计误差 | 收敛时间 |
|---|---|---|
| 阶跃扰动 | <5% | 0.8s |
| 正弦扰动 | <8% | 1.2s |
| 随机扰动 | <10% | 1.5s |
5.3 控制量分析
控制输入在整个过程中保持平滑,没有出现剧烈抖振,电机扭矩在合理范围内,验证了控制器的实用性。
6. 实际应用中的注意事项
基于我的项目经验,分享几点重要注意事项:
-
参数初始化问题:
- ESO状态需要合理初始化,否则会导致初始阶段估计不准
- 建议在实际速度可用后再启用ESO
-
采样时间选择:
- 运动学控制周期建议50-100ms
- 动力学控制周期建议5-10ms
- ESO需要更快的执行周期
-
抗饱和处理:
- 需要对控制输出进行限幅
- 加入抗饱和补偿,避免积分饱和
-
实际调试技巧:
- 先开环测试电机响应特性
- 然后单独调试内环速度控制
- 最后闭环调试轨迹跟踪
这套控制系统经过多次迭代优化,在实验室环境下已经能够实现厘米级的轨迹跟踪精度。未来可以考虑加入路径规划模块,实现从点到点的自主移动功能。