线控转向系统:路感模拟与路感力矩控制探索
线控转向系统路感模拟及路感力矩控制 通过参数拟合设计线控转向路感模拟算法,在simulink中建立仿真模型。 模型建立后,验证双纽线工况和中心区工况的路感力矩。 通过PID,模糊PID对路感力矩进行控制。 所有效果如图

在汽车的线控转向系统领域,路感模拟以及路感力矩控制可是相当关键的部分。今天就来跟大家唠唠这其中的门道,顺便穿插点代码分析,给大家更直观的感受。
线控转向路感模拟算法设计
咱通过参数拟合来设计线控转向路感模拟算法。这就好比给车子的转向系统赋予一种“感知”道路的能力。简单来说,我们得找到一些合适的参数,让转向系统能模拟出真实驾驶中路面反馈给方向盘的那种感觉。

假设我们用Python来实现简单的参数拟合相关代码,可能会像这样:
import numpy as np
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * np.exp(-b * x) + c
# 模拟数据
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
np.random.seed(1729)
ydata = y + 0.2 * np.random.normal(size=len(xdata))
p0 = [1, 1, 1]
popt, pcov = curve_fit(func, xdata, ydata, p0=p0)
print("拟合参数 a:", popt[0])
print("拟合参数 b:", popt[1])
print("拟合参数 c:", popt[2])
这段代码中,func 函数定义了我们要拟合的曲线形式,通过 curve_fit 函数对模拟数据进行拟合,得到我们需要的参数 a、b、c。在实际的线控转向路感模拟算法中,这些参数会和转向的各种物理量相关,比如车速、转向角度等,来模拟出不同工况下的路感。
Simulink仿真模型搭建
算法有了,接下来就是在Simulink中建立仿真模型啦。在Simulink里,我们可以把各个模块像搭积木一样搭建起来,来模拟线控转向系统的工作过程。每个模块就像一个小零件,承担着不同的功能,比如信号输入模块、算法处理模块、输出显示模块等等。这里就不详细贴Simulink的模型截图啦,大家可以自行脑补一下各种箭头连接着不同功能方块的画面。
工况验证 - 双纽线工况与中心区工况
模型建好后,就得验证双纽线工况和中心区工况的路感力矩。双纽线工况能模拟一些复杂的转向路径,而中心区工况则侧重于考察转向盘在中间位置附近的路感反馈。

以Matlab代码为例,假设我们要在模拟双纽线工况下计算路感力矩,可能会有类似这样的代码逻辑:
% 双纽线工况参数设置
a = 1;
theta = 0:0.01:2*pi;
x = a * cos(theta)./(1 + sin(theta).^2);
y = a * cos(theta).* sin(theta)./(1 + sin(theta).^2);
% 这里假设根据转向角度和车速计算路感力矩的简单公式
speed = 30; % 假设车速
steering_angle = atan2(y, x);
road_feel_torque = speed * steering_angle;
plot(x, y);
xlabel('X 坐标');
ylabel('Y 坐标');
title('双纽线工况模拟');
在这段Matlab代码里,我们先设置了双纽线的参数并生成双纽线的坐标点,然后假设了一个根据车速和转向角度计算路感力矩的简单公式(实际情况肯定更复杂啦)。通过这样的模拟,我们可以观察在双纽线工况下路感力矩的变化情况。
路感力矩控制 - PID与模糊PID
对于路感力矩的控制,我们采用了PID和模糊PID两种方法。PID控制算是比较经典的控制策略啦,它通过比例(P)、积分(I)、微分(D)三个环节来调整控制量,让系统输出尽可能接近我们想要的目标值。

线控转向系统路感模拟及路感力矩控制 通过参数拟合设计线控转向路感模拟算法,在simulink中建立仿真模型。 模型建立后,验证双纽线工况和中心区工况的路感力矩。 通过PID,模糊PID对路感力矩进行控制。 所有效果如图

以下是一个简单的Python实现PID控制的代码示例:
class PID:
def __init__(self, kp, ki, kd):
self.kp = kp
self.ki = ki
self.kd = kd
self.prev_error = 0
self.integral = 0
def update(self, setpoint, process_variable):
error = setpoint - process_variable
p_term = self.kp * error
self.integral += error
i_term = self.ki * error
d_term = self.kd * (error - self.prev_error)
output = p_term + i_term + d_term
self.prev_error = error
return output
在这个PID类里,init 方法初始化了比例、积分、微分系数,update 方法根据当前的设定值和实际值计算出控制量。
而模糊PID则是在PID的基础上,引入了模糊逻辑,让控制更加智能。模糊逻辑可以根据不同的工况自动调整PID的参数,以达到更好的控制效果。不过模糊PID的实现相对复杂一些,这里就不详细展开代码啦,大家知道它是在PID基础上进行优化,能更灵活地应对不同情况就行。
最后,所有这些算法、模型搭建、工况验证以及控制方法的效果都通过各种图表呈现出来啦。这些图表就像是我们探索过程中的“成果汇报”,清楚地展示了线控转向系统在不同情况下路感模拟和路感力矩控制的表现。通过不断地调整参数、优化算法,我们就能让线控转向系统的路感越来越接近真实驾驶的体验,提升驾驶的安全性和舒适性。希望今天的分享能让大家对这一块内容有更深入的了解!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)