1. 双轮平衡车建模与控制概述
双轮平衡车作为典型的欠驱动系统,其核心控制难点在于仅通过两个电机实现车体姿态的稳定控制。这种看似简单的机械结构背后,蕴含着丰富的动力学原理和控制理论。我在实际项目中发现,很多初学者往往直接从代码实现入手,却忽略了最关键的建模环节,导致后期调试困难重重。
平衡车的本质是一个倒立摆系统,但与传统的固定基座倒立摆不同,它的基座(车轮)是可以自由移动的。这种特性使得系统具有非线性、强耦合的特点。通过精确建模,我们可以将复杂的物理系统转化为数学表达式,为后续的控制器设计奠定基础。
2. 硬件平台选型与配置
2.1 核心硬件组件解析
我们选用的是塔克科技R5小车底盘,这套硬件经过市场验证,具有较高的性价比和稳定性。主控采用ESP32芯片,这款芯片的优势在于:
- 双核240MHz主频,满足实时控制需求
- 丰富的外设接口(PWM、I2C、SPI等)
- 内置WiFi/蓝牙,便于后期扩展远程监控功能
驱动模块选用TB6612电机驱动器,相比传统的L298N,它具有:
- 更高的效率(可达95%)
- 更低的发热量
- 支持1.2A持续电流(峰值3.2A)
姿态传感器采用MPU6050六轴陀螺仪加速度计,实际使用中需要注意:
- 安装位置应尽量靠近车体中心轴
- 避免振动源直接传递到传感器
- 需要定期校准消除零偏
2.2 机械参数测量要点
精确的机械参数对建模至关重要,以下是关键参数的测量方法:
- 车轮质量(m):建议使用0.1g精度的电子秤单独测量每个车轮
- 车轮半径(r):用游标卡尺测量三次取平均值
- 车体质量(M):包含所有电子元件的总质量
- 质心高度(l):可通过倾斜法测量(将车体缓慢倾斜至刚好倒下时的角度θ,l = r/sinθ)
实测技巧:车轮转动惯量I可通过悬挂法测量,将车轮悬挂起来做简谐振动,测量周期T,则I = (T²mgR)/(4π²) - mR²
3. 动力学模型建立
3.1 车轮受力分析
从右轮侧观察,车轮受到的主要力包括:
- 电机扭矩TR
- 车体垂直作用力VR
- 车体水平作用力HR
- 地面支持力VNR
- 地面摩擦力HfR
根据牛顿第二定律和转动定律,我们建立方程:
code复制mẍR = HfR - HR (水平方向)
Iω̇R = TR - HfRr (旋转方向)
通过联立消去HfR,得到关键方程:
code复制(mr + I/r)ẍR = TR - HRr
3.2 车体倒立摆模型
车体可视为一个倒立摆,其动力学分析需要考虑:
- 水平方向受力:
code复制M(ẍ + lθ̈cosθ - lθ̇²sinθ) = H
- 垂直方向受力:
code复制M(lθ̈sinθ + lθ̇²cosθ + g) = V
- 转动方程:
code复制Jθ̈ = Vlsinθ - Hlcosθ - T
3.3 系统耦合与线性化
将车轮和车体方程联立后,得到非线性耦合方程组。为便于控制器设计,我们在平衡点θ=0附近进行线性化处理:
code复制sinθ ≈ θ, cosθ ≈ 1, θ̇² ≈ 0
最终得到简化后的线性方程:
code复制(J+Ml²)θ̈ = Mglθ - Mlẍ - T
(M+2m+2I/r²)ẍ = T/r - Mlθ̈
4. 传递函数推导
4.1 拉普拉斯变换应用
对线性化后的方程进行拉普拉斯变换,将时域微分方程转为频域代数方程。定义:
code复制Q = M + 2m + 2I/r²
经过推导得到传递函数:
code复制Pθ(s) = -(Qr + Ml)/r / [(MJ+(2m+2I/r²)(J+Ml²))s² - Mgl]
4.2 参数代入实例
以实测的R5小车参数为例:
code复制M = 0.5kg, m = 0.05kg, l = 0.1m
r = 0.03m, I = 1.125e-5 kg·m², J = 0.0017 kg·m²
代入后传递函数为:
code复制Pθ(s) = -0.35 / (0.0021s² - 0.49)
4.3 模型验证方法
- 频域验证:通过扫频测试对比实测与模型Bode图
- 时域验证:施加阶跃输入,对比实际响应与仿真曲线
- 参数敏感性分析:改变±10%参数,观察性能变化
调试心得:实际建模时发现车轮转动惯量I对高频特性影响显著,建议使用3D打印不同密度车轮进行对比测试
5. 模型精度提升技巧
5.1 非线性因素补偿
- 电机死区补偿:实测PWM-扭矩曲线,建立查找表
- 摩擦模型:加入库伦+粘滞摩擦项
code复制Tf = Tc·sign(ω) + Bω - 传感器滤波:互补滤波参数优化
5.2 参数辨识方法
- 阶跃响应法:测量电机扭矩到角度响应的稳态增益
- 频响分析法:通过扫频获取系统谐振频率
- 最小二乘法:批量数据处理提高精度
5.3 模型降阶处理
对于实时性要求高的场合,可采用:
- 主导极点保留法
- 平衡截断法
- Hankel范数近似
6. 常见问题排查
6.1 模型不稳定现象
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 仿真发散 | 参数单位不统一 | 检查kg-m-s单位制 |
| 高频振荡 | 忽略电机电感 | 加入电枢动态 |
| 稳态误差 | 未考虑重力矩 | 检查力矩平衡方程 |
6.2 实测与模型偏差
- 机械装配问题:
- 检查车轴是否偏心
- 确认车轮接触面均匀
- 传感器校准:
- 陀螺仪零偏校准
- 加速度计标定
- 执行器非线性:
- 测量电机死区
- 检查PWM分辨率
6.3 数值计算技巧
- 微分方程离散化:
- 采用Tustin变换保持稳定性
- 步长选择经验公式:Δt < 1/(10×带宽)
- 矩阵病态问题:
- 使用QR分解代替直接求逆
- 加入正则化项
7. 进阶建模方向
7.1 三维空间建模
考虑横滚-俯仰耦合:
- 建立欧拉角动力学方程
- 加入陀螺仪进动效应
- 地面接触力学模型
7.2 柔性体建模
针对碳纤维车架:
- 假设模态法降维
- 有限元模型导出
- 振动模态补偿
7.3 数据驱动建模
结合机器学习:
- 神经网络黑箱建模
- 高斯过程回归
- 强化学习参数调优
在实际项目中,我发现模型精度与实时性需要权衡取舍。对于ESP32这类资源有限的平台,建议先保证核心动力学准确,再逐步添加次要因素。下次将详细讲解如何基于这个模型设计LQR控制器,其中会分享几个调试过程中总结的黄金参数比。
