基于分布式驱动电动汽车的车辆状态估计,分别采用无迹卡尔曼,容积卡尔曼,高阶容积卡尔曼观测器等,可估计包括纵向速度,质心侧偏角,横摆角速度,以及四个车轮角速度七个状态。 模型中第一个模块是四轮驱动电机;第二个模块是carsim输出的真实参数,包括汽车所受横向力,纵向力,驱动力矩等:第三个模块是基于dugoff计算轮胎力模块,该模块可以计算纵向力和横向力。 后面的模块是关于无迹卡尔曼,容积卡尔曼,高阶容积卡尔曼对车辆状态进行估计,可估计包括纵向速度,横摆角速度,质心侧偏角以及四个车轮角速度七个状态。 模型和代码,可供自己参考和学习。 本模型是基于simulink与carsim联合仿真,ckf是由s function进行编写,提供相关文献。 如果需要在电机无传感器控制和车辆状态估计上改进卡尔曼滤波,比如平方根容积卡尔曼等

在电动汽车领域,车辆状态估计至关重要,它如同车辆的“智慧之眼”,为车辆的稳定运行和精准控制提供关键信息。今天就来聊聊基于分布式驱动电动汽车的车辆状态估计那些事儿。

模型模块解析

  1. 四轮驱动电机模块

这是车辆动力的源头,如同汽车的“心脏”,为车辆提供前进的动力。在代码实现上,可能类似这样(以简单伪代码示意):

class FourWheelDriveMotor:
    def __init__(self, power):
        self.power = power

    def generate_power(self):
        return self.power

这里简单定义了一个FourWheelDriveMotor类,初始化时传入功率参数,generate_power方法返回电机产生的功率。

  1. Carsim输出真实参数模块

Carsim就像是一个车辆的“真实模拟器”,它输出汽车所受横向力、纵向力、驱动力矩等真实参数。这些参数是后续分析和估计的重要依据。在实际应用中,可能通过接口获取这些数据,类似这样(假设是Python通过某种特定接口获取数据):

import carsim_interface

def get_carsim_data():
    lateral_force = carsim_interface.get_lateral_force()
    longitudinal_force = carsim_interface.get_longitudinal_force()
    driving_torque = carsim_interface.get_driving_torque()
    return lateral_force, longitudinal_force, driving_torque
  1. 基于Dugoff计算轮胎力模块

该模块可以计算纵向力和横向力,是车辆动力学中关键的一环。以Python代码简单示意如下:

def dugoff_tire_force_calculation(parameters):
    # 根据Dugoff理论进行计算
    longitudinal_force = parameters['longitudinal_input'] * some_coefficient
    lateral_force = parameters['lateral_input'] * some_other_coefficient
    return longitudinal_force, lateral_force

这里通过传入相关参数,依据Dugoff理论计算轮胎的纵向力和横向力。

状态估计之卡尔曼滤波家族

  1. 无迹卡尔曼观测器(UKF)

无迹卡尔曼观测器在车辆状态估计中发挥着重要作用。它能够对纵向速度、质心侧偏角、横摆角速度以及四个车轮角速度这七个关键状态进行估计。UKF的核心在于通过一组Sigma点来近似状态分布。代码实现上,可能会有类似这样的核心步骤(以下为简化的示意代码):

# 初始化UKF参数
def ukf_initialize():
    # 省略具体参数初始化
    pass

# 预测步骤
def ukf_predict(state, covariance):
    # 通过状态转移方程预测状态和协方差
    new_state = state_transition_function(state)
    new_covariance = covariance_update_function(covariance)
    return new_state, new_covariance

# 更新步骤
def ukf_update(new_state, new_covariance, measurement):
    # 根据测量值更新状态和协方差
    kalman_gain = kalman_gain_calculation(new_covariance)
    updated_state = new_state + kalman_gain * (measurement - measurement_prediction(new_state))
    updated_covariance = (np.eye(state_dimension) - kalman_gain * measurement_jacobian) * new_covariance
    return updated_state, updated_covariance

UKF通过预测和更新两个主要步骤,不断调整对车辆状态的估计。

  1. 容积卡尔曼观测器(CKF)

CKF同样用于车辆状态估计,它采用容积准则来近似状态分布。在Simulink中,CKF是由S function进行编写。CKF的实现可能有其独特的积分点选取和计算方式,以下是简单的概念性代码结构:

function [sys,x0,str,ts] = cksf_sfunction(t,x,u,flag)
    switch flag
        case 0
            [sys,x0,str,ts] = mdlInitializeSizes();
        case 1
            sys = mdlDerivatives(t,x,u);
        case 2
            sys = mdlUpdate(t,x,u);
        case 3
            sys = mdlOutputs(t,x,u);
        case 4
            sys = mdlGetTimeOfNextVarHit(t,x,u);
        case 9
            sys = [];
        otherwise
            DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
    end
end

这个S function框架包含了初始化、导数计算、更新、输出等不同功能的子函数,通过这些函数实现CKF对车辆状态的估计。

  1. 高阶容积卡尔曼观测器

高阶容积卡尔曼观测器相比基础的CKF,在状态估计精度上可能更上一层楼。它可能在积分点的选取和计算精度上进行了优化,以更好地估计车辆的复杂状态。虽然代码实现会更加复杂,但原理上同样是基于容积准则对状态分布进行近似。

联合仿真与文献参考

本模型基于Simulink与Carsim联合仿真,这种联合方式能够充分利用两者的优势,为车辆状态估计提供更真实可靠的环境。同时,如果想要在电机无传感器控制和车辆状态估计上改进卡尔曼滤波,比如采用平方根容积卡尔曼等方法,可以参考相关文献进一步深入研究。

基于分布式驱动电动汽车的车辆状态估计,分别采用无迹卡尔曼,容积卡尔曼,高阶容积卡尔曼观测器等,可估计包括纵向速度,质心侧偏角,横摆角速度,以及四个车轮角速度七个状态。 模型中第一个模块是四轮驱动电机;第二个模块是carsim输出的真实参数,包括汽车所受横向力,纵向力,驱动力矩等:第三个模块是基于dugoff计算轮胎力模块,该模块可以计算纵向力和横向力。 后面的模块是关于无迹卡尔曼,容积卡尔曼,高阶容积卡尔曼对车辆状态进行估计,可估计包括纵向速度,横摆角速度,质心侧偏角以及四个车轮角速度七个状态。 模型和代码,可供自己参考和学习。 本模型是基于simulink与carsim联合仿真,ckf是由s function进行编写,提供相关文献。 如果需要在电机无传感器控制和车辆状态估计上改进卡尔曼滤波,比如平方根容积卡尔曼等

总之,基于分布式驱动电动汽车的车辆状态估计涉及多个模块和复杂的卡尔曼滤波算法,通过不断学习和实践,我们能够更好地理解和优化这一关键技术,为电动汽车的发展添砖加瓦。

Logo

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

更多推荐