本文详细介绍CARLA的动力学模型,以便开发者能更加得心应手地使用CARLA。
什么是车辆动力学?
车辆动力学是研究车辆在不同驾驶条件下的运动和力学特性的学科。它涉及到汽车的运动、操作和控制,以及汽车所受到的各种力和力矩。
-
车辆模型:通常会采用一些简化的车辆模型,如集中质量模型、弹簧-阻尼模型等,以便于分析车辆的动力学特性; -
牛顿运动定律:包括惯性定律、动量定律和能量定律等。这些定律描述了物体运动的基本规律,可以用来分析车辆的运动状态; -
车辆动力学特性:包括车辆的加速度、速度、角速度等运动参数,以及轮胎的力-滑移特性、发动机的扭矩-转速特性等。这些特性决定了车辆在不同条件下的运动表现; -
稳定性分析:稳定性是车辆动力学的一个重要问题,包括纵向稳定性、横向稳定性和垂向稳定性等。稳定性分析可以用来研究车辆在行驶过程中的平衡状态和失稳条件; -
操纵性分析:操纵性是评价车辆动力学性能的重要指标之一,包括转向性能、制动性能和加速性能等。操纵性能的好坏直接影响到驾驶者的操控感受和车辆的安全性能; -
空气动力学:如空气阻力、升力、侧向力和压力分布等。空气动力学对车辆的动力学性能和行驶稳定性有一定的影响; -
轮胎力学:轮胎是车辆与地面接触的唯一部分,其力学特性对车辆的动力学性能有很大的影响。轮胎力学包括轮胎的力-滑移特性、轮胎的侧向力和纵向力等;
UE的物理引擎
UE 的车辆动力学
CARLA当前版本(0.9.15)基于UE4.26,这个版本的UE同时支持PhysXVehicles和ChaosVehicles(前者被标记为deprecated),但基于上面的分析,CARLA中依旧选用了PhysXVehicles。
我们来对比一下这两个插件的组成部分,可以看出二者功能是相似的:
可以在 UnrealEditor -> Edit -> Plugins 中搜索到PhysXVehicles插件。
车轮
-
车轮半径(ShapeRadius) -
车轮宽度(ShapeWidth) -
车轮质量(Mass) -
阻尼率(DampingRate):阻尼系数,用于衡量车轮在受到外部冲击时吸收冲击能量的能力。阻尼率的值越大,车轮的减震效果越好,车辆行驶更加平稳。 -
转向角度(SteerAngle):车轮与车辆直行方向之间的夹角,以度数表示。 -
轮胎摩擦力(TireConfig):轮胎的摩擦系数和摩擦角度。 -
横向刚度值(LatStiffValue):轮胎在受到横向力时的刚度表现或者对该横向力的抵抗能力。高横向刚度值表示轮胎具有更好的操控性和稳定性。 -
纵向刚度值(LongStiffValue):轮胎在受到纵向力时的刚度表现或者对该纵向力的抵抗能力。较高的纵向刚度值表示轮胎具有更好的加速和制动性能,并能更好地传递动力和提供牵引力。 -
最大制动扭矩(MaxBrakeTorque):车轮能够承受的最大制动力矩,反映了车轮和制动系统的极限能力。制动扭矩越大,车辆在制动过程中的减速速度越快,制动距离越短。 -
最大手刹制动扭矩(MaxHandBrakeTorque):车轮能够承受的最大手刹制动力矩,用于评估手刹系统的性能和可靠性。
车辆运动组件
汽车运动组件的核心在于UWheeledVehicleMovementComponent4W,它实现了四轮车辆的动态表现。其中包含的参数集不容忽视,包括但不限于以下几个:
-
车辆引擎数据:涉及车辆引擎性能方面的各种参数,如扭矩曲线、最大转速、转动惯量等。 -
车辆差速器数据:车辆前后轮及左右轮之间的扭矩分配比例。 -
车辆变速器数据:车辆换挡及各种齿轮比率、换挡时间等参数。 -
方向盘曲线:表示允许的最大转向角度与前向速度的关系曲线。随着车速的提高,允许的最大转向角度也相应减小。
车辆引擎
-
扭矩曲线(TorqueCurve):用以描述引擎在给定转速下扭矩(Nm)的变化曲线。其对于揭示引擎的动力输出与转速之间的关系具有重要意义。 -
最大转速(MaxRPM):该属性代表着引擎的最高转速,以每分钟转数(RPM)为单位进行度量。这个属性限制了引擎最高可以旋转的速率。 -
转动惯量(MOI):用于描述引擎在旋转时的惯性,以千克米平方(Kgm^2)为单位。其值的高低对于引擎在不同转速下的稳定性和响应性具有决定性作用。 -
阻尼率(DampingRate):阻尼率用于描述物体在振动过程中衰减的速率,对于控制引擎的振动特性具有至关重要的作用。阻尼率在不同转速下也有所不同,可分为全油门、零油门、离合器接合、离合器分离四种状态。 -
峰值扭矩(PeakTorque):峰值扭矩是引擎动力输出的最高点,其位置取决于引擎的结构和设计。通过扭矩曲线找到峰值扭矩可用于测算引擎最大动力输出。
变速器
-
bUseGearAutoBox:表示是否使用自动变速器。如果为true,则车辆将自动选择最适合当前行驶条件的传动档位;如果为false,则需要手动选择档位。 -
GearSwitchTime:表示切换档位所需的时间(以秒为单位)。它定义了从一个挡位到另一个挡位的过渡时间。较短的过渡时间意味着换挡速度更快。 -
GearAutoBoxLatency:表示自动变速器发起换挡所需的最小时间,以秒为单位。在车辆使用自动变速器时,该时间定义了自动变速器检测到需要换挡并实际发起换挡之间的延迟。 -
FinalRatio:最终挡位比例,用于乘以传动挡位比例。它决定了最终挡位的效果。通过调整这个比例,可以改变车辆的加速性能和最高速度。 -
ForwardGears:一个存储正向挡位比例的数组。它可以包含多达30个正向挡位。每个正向挡位比例定义了车辆在不同挡位下的传动比例,影响了车辆的速度和加速能力。 -
ReverseGearRatio:表示倒挡的比例。它定义了车辆在倒挡时的传动比例,用于控制倒车速度。 -
NeutralGearUpRatio:定义了引擎转速(engineRevs)相对于最大引擎转速(maxEngineRevs)的一个高值比例。当引擎转速达到这个比例时,车辆会递增挡位,正常情况下是从空挡转到第一挡。 -
ClutchStrength:这个变量表示离合器的强度,以Kgm^2/s为单位。离合器用于控制发动机输出转矩到变速器的传递。离合器强度越大,传递给变速器的转矩越高,车辆的加速能力也就更强。
CARLA的车辆动力学
CARLA车辆的基类是CarlaWheeledVehicle,它继承自PhysXVehicle组件的WheeledVehicle。生成车辆时,这个类的构造函数初始化了VehicleBounds和BaseMovementComponent,前者用于保存和获取车辆的长宽高,后者是继承于UE的MovementComponent的移动组件类。在这个类的BeginPlay函数中,设置了车门以及初始化了轮胎摩擦力。另外类中有一些设置(Setter)和获取(Getter)函数,包括车辆状态、控制信号、BoundingBox、物理(动力学)特性等。
CARLA支持UE PhysX车辆动力学,也支持CarSim车辆动力学,默认为前者。
VehicleControl是一个结构体,包括了控制车辆所需的所有变量,即油门、转向、刹车等。当车辆接收到输入的控制信号时,CARLA车辆移动组件会调用ProcessControl函数来将控制信号应用到车辆上。
-
DragCoefficient:空气阻力系数,是衡量车辆在行驶过程中所受空气阻力的一个重要参数。它是由一定特征面积计算得出的单位面积,表示空气对行驶中的车辆形成的一种反向力。空气阻力与速度的平方成正比,因此,高速车对空气阻力的影响非常明显。如果汽车的风阻系数较高,意味着行驶时所受的空气阻力较大,会导致更高的油耗和更低的车辆稳定性。 CenterOfMass:质心位置,对于车辆的控制比较重要。当质心位置在车辆前方时,会降低车辆的转向灵敏度(Understeering),当质心位置在车辆后方时,会增加车辆的转向灵敏度(Oversteering)。因此如果要调整车辆的转向性能,质心时不可忽视的点。
如果要在CARLA中设置车辆的动力学参数,例如下面这样即可:

CARLA Vehicle的apply_physics_control方法会在被调用的下一帧将参数应用到车辆上。
总结

图灵奖得主姚期智等三位院士、陕西省科技厅厅长姜建春一行莅临深信科创
再获殊荣!深信科创荣获「年度智能汽车软件及数据工具链平台TOP10供应商」奖项

