四轮转向二自由度模型:从运动方程到Simulink仿真全攻略

发布时间:2026/10/12 7:52:36
四轮转向二自由度模型:从运动方程到Simulink仿真全攻略
1. 先回答一个核心问题二自由度模型到底够不够应付四轮转向很多人在接触四轮转向车辆建模时脑子里第一反应是“把四个轮子都考虑进去自由度肯定越多越好吧”。我做底盘控制仿真这几年见过不少人一上来就搭十几自由度的整车模型最后调得焦头烂额回头再来问我要二自由度线性模型。这里我想直接把我的结论摆出来研究四轮转向的横摆响应和质心侧偏角特性二自由度线性模型是性价比最高的起点没有之一。所谓二自由度指的是车辆只有两个运动自由度一个是沿车身侧向的平移用质心侧偏角β表示另一个是绕垂直轴的横摆转动用横摆角速度r表示。纵向速度u被看作一个不变的参数不参与状态变化。前轮转角δf作为主输入四轮转向车型额外引入后轮转角δr作为第二个输入。轮胎侧向力在小侧偏角范围内看成线性的即侧向力与侧偏角成正比比例系数就是侧偏刚度。这个模型能干什么它能回答四轮转向最核心的三个问题后轮该同相位还是反相位转、转向增益在不同车速下怎么变化、质心侧偏角能不能被压到接近零。这三个问题在二自由度线性框架下都能给出清晰的结论。你可能会觉得既然要研究四轮转向那悬架、侧倾、载荷转移这些因素是不是必须考虑如果你的目标是做整车操稳性精细分析那是另一回事但如果你想先把四轮转向的控制可行性理清楚二自由度模型是标准答案。适合看这篇文章的人我猜大致有这几类做底盘电控仿真但还没搭过四轮转向模型的学生或工程师、想从纯前轮转向模型扩展成四轮转向模型的初学者、以及需要在项目初期快速验证控制算法合理性的开发人员。我会把数学推导、Simulink搭建细节、仿真结果判读和容易踩的坑一起讲清楚。2. 四轮转向比前轮转向多出来的那一步运动方程与状态空间推导2.1 符号约定必须一开始就统一建模之前符号约定必须先定死。我用一套比较通用的约定车辆坐标系原点在质心x轴向前y轴向左也就是驾驶员左侧z轴垂直向上。前轴到质心距离是a后轴到质心距离是b轴距L a b。前轮转角δf、后轮转角δr都定义为使车轮向左偏转为正。质心侧偏角β定义为质心速度方向与车辆纵轴的夹角横摆角速度r以绕z轴逆时针为正。这里要特别提醒的是侧偏刚度的符号问题。很多教材把侧偏刚度定义为负数因为侧向力与侧偏角方向相反于是轮胎力写成F_y C_α·α其中C_α是负数而另一套教材把它定义为正数轮胎力写成F_y -C·α。如果混用后面矩阵符号全乱仿真结果怎么判都不对。我在下文的推导中使用正的侧偏刚度C即前后轮刚度分别记为Cf和Cr单位N/rad轮胎侧向力表达式统一为F_y -C·α。这一点建议你在自己的笔记里也固定下来别换来换去。2.2 轮胎侧偏角表达式后轮那个δr是“多出来”的关键项轮胎侧偏角是轮胎实际运动方向与轮胎指向之间的夹角。对于前轮可以把质心侧向速度分解一下得到前轮侧偏角的经典表达式前轮侧偏角αf β (a·r)/u - δf这里的物理含义很直观β是质心速度方向本身的侧偏a·r/u是横摆运动导致前轴处速度方向额外偏转的量再减去前轮主动转角δf剩下的就是侧偏角。后轮侧偏角表达式相应为αr β - (b·r)/u - δr对比前轮你会发现后轮的横摆贡献项变成了减号因为后轴在质心后方横摆运动对它的速度方向影响是相反的。而后轮那个减掉的δr就是四轮转向模型与前轮转向模型在数学上一个最本质的差别传统前轮转向车型的αr里根本没有δr这一项四轮转向则在后轮同样拥有了主动干预轮胎侧偏角的能力。2.3 车体动力学方程侧向力方程和横摆力矩方程有了轮胎力就可以列车体方程。沿y轴的力平衡考虑侧向加速度a_y v̇ u·r其中v是质心侧向速度在小角度近似下v ≈ u·β并且假设纵向速度u恒定所以v̇ ≈ u·β̇。于是m·u·(β̇ r) F_yf F_yr绕z轴的力矩平衡Iz·ṙ a·F_yf - b·F_yr代入F_yf -Cf·αfF_yr -Cr·αr稍微整理就得到二自由度四轮转向模型的运动微分方程β̇ -(Cf Cr)/(m·u)·β [-1 (a·Cf - b·Cr)/(m·u²)]·r Cf/(m·u)·δf Cr/(m·u)·δrṙ (b·Cr - a·Cf)/Iz·β - (a²·Cf b²·Cr)/(Iz·u)·r a·Cf/Iz·δf b·Cr/Iz·δr这里有个很容易看花眼的项β̇方程中r前面的系数是-1加上一个括号项。这个-1来自v̇展开时的m·u·r项。很多初学者抄公式时把这个“-1”丢掉结果低速工况下横摆响应完全失真。我建议你在推导时老老实实把u·(β̇ r)展开不要跳步。2.4 写成状态空间标准形方便直接填进模块Simulink建模最直接的途径就是状态空间模块所以方程需要整理成ẋ A·x B·u的形式。令状态向量x [β, r]ᵀ输入向量u_input [δf, δr]ᵀ则A [ -(CfCr)/(m·u), -1 (a·Cf - b·Cr)/(m·u²); (b·Cr - a·Cf)/Iz, -(a²·Cf b²·Cr)/(Iz·u) ]B [ Cf/(m·u), Cr/(m·u); a·Cf/Iz, b·Cr/Iz ]注意B矩阵第二行第二列是正的b·Cr/Iz。后轮转向角为正时会产生正的横摆力矩增量这与物理直觉一致后轮向左偏后轴侧向力会给车身一个向左转的力矩。如果你搭出来的B矩阵第二行第二列是负的大概率是侧偏刚度符号约定或力的分解出了问题。3. Simulink搭建状态空间模块和积分器链路两种方案3.1 参数怎么定我用的一组典型乘用车数据模型里所有参数必须先在MATLAB里定义好。我用的是某通用乘用车整车参数不代表任何特定车型但量级是合理的m 1500 kga 1.2 mb 1.4 mIz 2500 kg·m²Cf 110000 N/radCr 80000 N/radu 20 m/s用这组参数算一下稳定性因子K (m/L²)·(a/Cr - b/Cf)得到K约为正数车辆呈不足转向特性这符合一般乘用车的操稳特征。公式里的L是轴距2.6 mK的单位是s²/m。这里有一个经验点如果你随便拿一组前后轮刚度等数值算出K为负那这个车在高速下会表现出过度转向仿真做阶跃输入时横摆角速度很容易发散这未必是你的模型错了而是参数本身对应的车辆特性就容易不稳定。3.2 方案一State-Space模块三分钟跑通最简单的方式是用Simulink的State-Space模块。在Simulink模型中放一个State-Space模块A、B矩阵填上面给出的表达式在MATLAB工作区里先算好变量C矩阵设为单位阵D矩阵设为零矩阵。系统输入就是两个信号源δf给阶跃δr给0或者按控制律给的信号。我实际使用时的操作顺序是这样的在MATLAB脚本里定义好所有参数并计算A、B然后用一个Constant模块或者Step模块接δf。对δr如果你只想做前轮转向对比就给一个Constant为0如果你想验证四轮转向效果就把δr按比例k接到δf上中间加一个Gain。这样一个最简单的开环四轮转向模型就通了。输出侧接一个Scope同时观察β和r。仿真的总时长设10秒步长用变步长还是定步长都行但我在后面会建议固定步长原因到时候展开说。3.3 方案二按微分方程搭积分器链路如果你想让模型内部结构更透明方便在中间引线调试我推荐用Integrator模块手搭积分器链路。用两个积分器分别对β̇和ṙ积分然后用Gain模块和Sum模块按微分方程把反馈回路连起来。每条支路对应一个系数项比如β̇表达式里第一路是-(CfCr)/(m·u)·β第二路是[-1 (a·Cf - b·Cr)/(m·u²)]·r这两个求和后加上输入项再进β的积分器ṙ也同理。这样搭的好处是你能在每一路中间看到具体力的数值、角加速度的数值对理解车辆动力学很有帮助。坏处是模块数量多稍微不注意连线就容易串。我的建议是如果你第一次接触这个模型两种方式都搭一遍。先用State-Space模块快速得到结果再按积分器链路搭一版对照你会发现两者结果完全一致但你对动力学过程的理解会深一个层次。整体上看State-Space方式适合快速验证算法逻辑积分器链路适合教学和深入调试。真到了做控制器联合仿真的阶段更多是把模型封装成Subsystem只露出β和r两个输出端口。4. 仿真结果怎么读横摆角速度、质心侧偏角、稳态增益三件事4.1 纯前轮转向的基线结果先校准你的模型搭好模型后别急着加后轮转向先把δr固定为0做一个纯前轮转向的阶跃响应用来校准模型是否正常。给δf一个0.05 rad约2.86度的阶跃输入车速20 m/s观察横摆角速度和质心侧偏角的稳态值。稳态横摆角速度增益的理论公式是r_ss / δf u / (L·(1 K·u²))把参数代进去u 20L 2.6K约等于5×10⁻⁴得到1 K·u² 1.2所以增益约等于20/(2.6×1.2) ≈ 6.41 rad/s每rad前轮转角。δf取0.05 rad时稳态横摆角速度约0.32 rad/s。如果仿真出来的稳态值离这个数字差太远先检查参数和矩阵符号。稳态质心侧偏角则是负值这是因为稳态转弯时为了产生所需的侧向加速度质心速度方向一定略偏向转弯外侧。这一点要和常见的直觉“转弯时车头朝里”分开质心侧偏角为负恰恰是正常状态。基线结果确认无误你才可以说这个模型是可用的。4.2 加入后轮转角零化质心侧偏角的效果验证四轮转向最经典的验证场景就是看质心侧偏角能否被压下来。我随便用一个比例控制δr k·δf其中k取-1.05左右这个数值来自零化稳态质心侧偏角的推导后面我会讲来历。在Simulink里把δr信号设置为-1.05倍的δf信号重新仿真同样阶跃输入。对比波形会发现两件事一是质心侧偏角稳态值明显接近零响应曲线从原来的负值拉到零附近二是横摆角速度的稳态值和纯前轮转向略有不同因为后轮参与转向后车辆的等效轴距或转向特性发生了改变。这个现象本身没有好坏关键在于你想让后轮转向去优化什么指标。这时候再回头看我前面提到的控制目标框架就清楚了四轮转向通常分低速和高速两种策略。低速时希望后轮与前轮反相位缩小转弯半径高速时希望后轮与前轮同相位减小质心侧偏角、提升稳定性。二自由度模型加上一个比例控制器就能把这两种策略都仿真出来。你只需要把k从正值反相位改成负值同相位观察不同车速下的响应就可以了。4.3 扫不同车速画出横摆角速度增益曲线线性模型最有价值的一点是可以快速扫描不同车速下的稳态增益。我建议你把车速u设成一组值例如10、20、30、40 m/s分别记录稳态横摆角速度增益和稳态β值然后画成曲线。你会在图上看到纯前轮转向时随着车速提高横摆角速度增益先增后减因为1 K·u²出现在分母里四轮转向采用零化β的比例控制时增益曲线形状会变化某些车速区间后轮转向会让横摆增益产生偏移。这张图在整车性能评估里非常实用能直观地看出你的后轮转向控制策略在哪个车速区间收益最大、哪个区间反而偏离目标。只看一条响应曲线很容易被误导扫车速看趋势才是建立全局观的方式。5. 我踩过的几个坑单位、符号约定、低速奇异这类反复出现的问题5.1 角度还是弧度第一个翻车点这个坑几乎每个人都会踩一遍。轮胎侧偏刚度的单位是N/rad所以所有角度变量接头都要用弧度。如果你在Step模块里给的是20度就相当于0.35 rad横摆角速度响应会偏大好几倍而且曲线形状看起来还是“合理的”不易察觉。我的习惯是在MATLAB脚本里统一写deg和rad的换算变量例如delta_f_deg 5delta_f_rad delta_f_deg·pi/180然后在Simulink中直接引用delta_f_rad。这样信号源和模型内部的连续都保持弧度只在输入口做一次换算。5.2 侧偏刚度符号约定矩阵符号全靠它前面推导时强调过侧偏刚度正负约定这里再补一刀。我见过有人在MATLAB里定义Cf -110000因为教材里用的是负刚度定义然后B矩阵又按正刚度公式填写结果模型要么横摆响应发疯要么β和r完全不成比例。我的自查方法很简单跑一个非常小的δf阶跃如果横摆角速度稳态值的符号与δf相反、β稳态值的绝对值明显过大就优先怀疑刚度符号。正巧手边没有参考模型时就用第4.1节的理论增益公式校准它能帮你快速定位这类错误。5.3 低速和零速模型有一个固有奇点二自由度模型的分母里有车速u20 m/s、10 m/s时没问题但u趋近0时A矩阵和B矩阵里的1/u项会爆炸仿真直接发散或者出现NaN。这是线性模型的固有奇点不是你的错误。处理办法分场景如果你只是做横摆响应分析就避免在u低于5 m/s的工况下运行如果你确实要模拟低速泊车场景得改用运动学模型或者带速度项切换的混合模型。在Simulink里还可以用一个很小的下限值比如u max(0.5, u_base)保证分母不为零但这只能保证数值不发散不能保证物理结果可信。5.4 定步长还是变步长我推荐定步长加ode4Simulink默认变步长求解器在多数情况下挺好用但在这个模型里我建议改用定步长。原因是车辆动力学仿真中响应曲线对时间步长很敏感变步长在某些瞬态阶段可能会产生不够平滑的输出导致你误判响应是否振荡。我用定步长0.001秒加ode4四阶龙格-库塔跑这个模型波形干净和实验数据的吻合度也好。有人觉得0.001秒太小、仿真太慢。其实二自由度模型简单0.001秒完全跑得动10秒仿真只有一万步Matlab内瞬间完成。别省这点计算量换来的是结果可信。5.5 后轮控制信号接入时容易忽略的延迟真实的后轮转向系统是有执行器延迟的线性模型里通常不加延迟但如果你把开环模型直接拿去做控制器设计会发现控制器参数整定结果偏激进。我的习惯是在Simulink中给δr信号串一个Transport Delay模块延迟取0.02秒左右模拟后轮转向执行器的响应滞后。这个小习惯让控制器参数在仿真里调好之后落到实车或高保真模型上时B格大打折扣的情况少很多。6. 线性模型的下半场从开环仿真到控制器设计6.1 零化质心侧偏角的控制律是怎么来的前面提到δr -1.05·δf这个比例数值它是我用两组参数联立稳态方程解出来的。具体做法是令β̇ 0和ṙ 0在稳态条件下求出使β 0的δr/δf比值。把稳态方程组摆出来你会发现δr/δf是一个车速u的函数而不是常数那组参数在20 m/s下恰好算出来约-1.05。如果你换一组整车参数或者换车速这个比值会变。这也是为什么纯比例控制的四轮转向在变工况下效果有限。更常用的做法是状态反馈控制把前轮转角δf当作参考输入把β和r当作状态反馈量设计δr k1·δf k2·β k3·r。有了二自由度线性模型就可以用极点配置、LQR之类的标准方法来确定k1、k2、k3。6.2 用线性模型验证控制器的鲁棒性线性模型还可以用来做简单的鲁棒性验证。你可以把Cf和Cr在±15%范围内随机微调重新跑仿真看横摆角速度响应和质心侧偏角控制效果是否仍然在可接受范围。这个思路在项目早期非常有用不需要上一套复杂的高保真模型就能对控制方案的底子做到心里有数。我曾在某一个底盘控制预研项目里用这个手段快速否决了一个看似简洁但鲁棒性很差的后轮转向控制方案。如果当时直接搭整车模型可能要多花两周时间才知道方案不行。二自由度线性模型的价值在这里体现得淋漓尽致它不是用来做最终交付的而是用来在关键分岔路口快速给出判断依据的。6.3 模型的边界什么时候必须往线性模型外面走最后必须说清楚二自由度线性模型的边界。当侧向加速度超过0.4g左右时轮胎侧偏特性明显进入非线性区线性模型给出的侧偏刚度会变得不准此时质心侧偏角、横摆角速度的预测偏差会显著增加。另外该模型默认纵向车速恒定没有考虑轮胎纵向力与侧向力的耦合急加速或重制动工况下也不能用。所以我的使用原则是**概念设计、控制策略初选、参数趋势分析用二自由度模型接近量产级的性能评估至少换到七自由度以上、带轮胎非线性特性的模型甚至用多体动力学模型。**从线性到非线性不是谁替代谁而是项目阶段不一样工具随之升级。用这个思路处理四轮转向建模你会发现自己不会在前期被细节困住又能在后期知道该往哪个方向深化。希望这篇文章能帮你把第一个四轮转向Simulink模型顺利搭起来并且搭得心里有数。