当前位置:首页 > 技术 > 正文内容

汽车动力学模型对比:线性二自由度、Carsim与运动学模型

访客 技术 2026年5月23日 3

线性二自由度模型

该模型将车辆简化为具有侧向与横摆两个自由度的刚体。设质心位置为 \( G \),纵向速度为 \( u \),侧向速度为 \( v \),横摆角速度为 \( \omega_r \)。运动方程可通过以下Python代码(使用SymPy库)表达:

from sympy import symbols, Function, Derivative

t_var = symbols('t')
long_vel = symbols('u')
lat_vel = Function('lat_vel')(t_var)
yaw_rate = Function('yaw_rate')(t_var)
steer_angle = symbols('steer_angle')
mass = symbols('mass')
inertia_z = symbols('inertia_z')
front_axle_dist = symbols('front_axle_dist')
rear_axle_dist = symbols('rear_axle_dist')
front_stiff = symbols('front_stiff')
rear_stiff = symbols('rear_stiff')

front_lateral_force = -front_stiff * (lat_vel + front_axle_dist * yaw_rate) / long_vel
rear_lateral_force = -rear_stiff * (lat_vel - rear_axle_dist * yaw_rate) / long_vel

lateral_eq = mass * (Derivative(lat_vel, t_var) + long_vel * yaw_rate) - front_lateral_force - rear_lateral_force
yaw_eq = inertia_z * Derivative(yaw_rate, t_var) - front_axle_dist * front_lateral_force + rear_axle_dist * rear_lateral_force

其中,lateral_eq为侧向力平衡方程,yaw_eq为横摆力矩平衡方程。此模型忽略轮胎非线性和悬架影响。

线性二自由度模型示意图

Carsim模型

Carsim为专业整车动力学仿真软件,整合轮胎、悬架、传动系等子系统。其模型采用魔术公式等轮胎模型,精确描述非线性特性。

Carsim模型组件 Carsim仿真界面

用户可设置几何参数、质量分布及工况(如转向角、路面条件),输出高精度动力学响应。

运动学模型

此模型描述车辆位置变化,忽略力学因素。基于自行车假设,实现轨迹预测:

import numpy as np
import matplotlib.pyplot as plt

def simulate_trajectory(init_x, init_y, init_heading, velocity, steer_angle, wheelbase, time_step, steps):
    x_pos = np.zeros(steps)
    y_pos = np.zeros(steps)
    heading_angle = np.zeros(steps)
    x_pos[0] = init_x
    y_pos[0] = init_y
    heading_angle[0] = init_heading
    
    for step in range(1, steps):
        dx_dt = velocity * np.cos(heading_angle[step - 1])
        dy_dt = velocity * np.sin(heading_angle[step - 1])
        dtheta_dt = velocity * np.tan(steer_angle) / wheelbase
        x_pos[step] = x_pos[step - 1] + dx_dt * time_step
        y_pos[step] = y_pos[step - 1] + dy_dt * time_step
        heading_angle[step] = heading_angle[step - 1] + dtheta_dt * time_step
    
    return x_pos, y_pos

start_x = 0
start_y = 0
start_heading = 0
speed = 5  
steer_input = np.deg2rad(5)  
base_length = 2.5  
delta_t = 0.1  
iterations = 100

x_coords, y_coords = simulate_trajectory(start_x, start_y, start_heading, speed, steer_input, base_length, delta_t, iterations)

plt.plot(x_coords, y_coords)
plt.xlabel('X坐标 (m)')
plt.ylabel('Y坐标 (m)')
plt.title('基于运动学模型的车辆轨迹')
plt.grid(True)
plt.show()

模型计算量小,适用于路径规划。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。