线性二自由度模型,对比carsim模型,运动学模型

在汽车动力学研究领域,线性二自由度模型、Carsim模型以及运动学模型各自有着独特的地位和应用场景,今天咱就来唠唠它们之间的对比。

线性二自由度模型

线性二自由度模型算是汽车动力学里比较基础且经典的模型啦。它主要考虑了车辆的侧向运动和横摆运动,将汽车简化为一个具有两个自由度的刚体。

假设车辆的质心位置为 $G$,纵向速度为 $u$,侧向速度为 $v$,横摆角速度为 $\omega_r$。那么,线性二自由度模型的运动方程可以用下面代码中的公式来近似描述(这里用Python代码结合符号运算库sympy来展示,实际工程应用可能会用更高效的数值计算库):

from sympy import symbols, Function, diff

# 定义变量
t = symbols('t')
u = symbols('u')
v = Function('v')(t)
omega_r = Function('omega_r')(t)
delta_f = symbols('delta_f')
m = symbols('m')
Iz = symbols('Iz')
lf = symbols('lf')
lr = symbols('lr')
Cf = symbols('Cf')
Cr = symbols('Cr')

# 侧向力方程
Fyf = -Cf * (v + lf * omega_r) / u
Fyr = -Cr * (v - lr * omega_r) / u

# 侧向力平衡方程
eq1 = m * (diff(v, t) + u * omega_r) - Fyf - Fyr

# 横摆力矩平衡方程
eq2 = Iz * diff(omega_r, t) - lf * Fyf + lr * Fyr

这里 eq1 是侧向力平衡方程,表示车辆在侧向方向上所受合力与质量和加速度的关系;eq2 是横摆力矩平衡方程,体现了车辆绕质心的横摆力矩与转动惯量和角加速度的联系。 delta_f 是前轮转角,m 是车辆质量,Iz 是绕质心的转动惯量,lflr 分别是质心到前轴和后轴的距离,CfCr 是前后轮的侧偏刚度。这个模型的优点是简单易懂,能快速地对车辆动力学特性进行初步分析,比如计算车辆的稳态响应等。不过它的局限性也很明显,忽略了很多实际因素,像轮胎的非线性特性、车辆悬架系统的影响等。

Carsim模型

Carsim可是汽车行业里大名鼎鼎的专业整车动力学仿真软件,它建立的Carsim模型那可复杂且精确多了。Carsim涵盖了车辆的各个主要系统,包括轮胎、悬架、传动系、转向系等等。

线性二自由度模型,对比carsim模型,运动学模型

与线性二自由度模型相比,Carsim模型能更真实地模拟车辆在各种工况下的实际运动。例如,在轮胎模型方面,Carsim可以选用多种先进的轮胎模型,像魔术公式轮胎模型等,能精确描述轮胎力与轮胎运动状态之间复杂的非线性关系。

虽然没法像写简单代码一样展示Carsim的内部模型,但从使用角度来说,在Carsim软件里,用户可以方便地设置各种车辆参数,如车辆几何参数、质量分布、轮胎特性参数等等。然后通过设定不同的输入工况,比如不同的转向盘转角、车速、路面条件等,就能得到非常详细且接近实际的车辆动力学响应结果,包括纵向、侧向、垂向的力和运动状态等。

运动学模型

运动学模型相对更侧重于描述车辆的位置和姿态随时间的变化关系,不涉及力和力矩这些动力学因素。简单的自行车式运动学模型假设车辆的前轮和后轮始终保持纯滚动,车辆的转向是通过前轮转向来实现。

以下是一个简单的Python代码示例展示自行车式运动学模型的车辆位置更新:

import numpy as np
import matplotlib.pyplot as plt


def kinematic_model(x0, y0, theta0, v, delta, L, dt, num_steps):
    x = np.zeros(num_steps)
    y = np.zeros(num_steps)
    theta = np.zeros(num_steps)
    x[0] = x0
    y[0] = y0
    theta[0] = theta0

    for i in range(1, num_steps):
        x_dot = v * np.cos(theta[i - 1])
        y_dot = v * np.sin(theta[i - 1])
        theta_dot = v * np.tan(delta) / L
        x[i] = x[i - 1] + x_dot * dt
        y[i] = y[i - 1] + y_dot * dt
        theta[i] = theta[i - 1] + theta_dot * dt

    return x, y


# 参数设置
x0 = 0
y0 = 0
theta0 = 0
v = 5  # 车速 m/s
delta = np.deg2rad(5)  # 前轮转角,这里设为5度
L = 2.5  # 轴距 m
dt = 0.1  # 时间步长 s
num_steps = 100

x, y = kinematic_model(x0, y0, theta0, v, delta, L, dt, num_steps)

plt.plot(x, y)
plt.xlabel('X position (m)')
plt.ylabel('Y position (m)')
plt.title('Vehicle Trajectory based on Kinematic Model')
plt.grid(True)
plt.show()

在这个代码里, x0, y0, theta0 是车辆初始位置和方向,v 是车速,delta 是前轮转角,L 是轴距,dt 是时间步长。通过循环不断更新车辆的位置 xy 以及方向 theta。运动学模型简单直观,计算量小,常用于路径规划、自动驾驶的初步轨迹预测等场景。但它不考虑车辆实际受力情况,所以在精确描述车辆动力学响应方面有所欠缺。

对比总结

线性二自由度模型作为理论分析的基础工具,能快速抓住车辆动力学的关键特性,但过于简化。Carsim模型就像汽车动力学仿真领域的“大杀器”,精确但复杂且计算成本高。运动学模型则凭借简单高效,在特定应用场景如路径规划中发挥重要作用。在实际的汽车工程研发中,往往会根据不同的需求和阶段,灵活选用这些模型,或者结合使用,来全面深入地研究车辆动力学特性,助力更安全、更智能、性能更优的汽车产品诞生。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐