本文详细介绍CARLA的动力学模型,以便开发者能更加得心应手地使用CARLA。
什么是车辆动力学?
车辆动力学是研究车辆在不同驾驶条件下的运动和力学特性的学科。它涉及到汽车的运动、操作和控制,以及汽车所受到的各种力和力矩。
UE的物理引擎
UE 的车辆动力学
CARLA当前版本(0.9.15)基于UE4.26,这个版本的UE同时支持PhysXVehicles和ChaosVehicles(前者被标记为deprecated),但基于上面的分析,CARLA中依旧选用了PhysXVehicles。
我们来对比一下这两个插件的组成部分,可以看出二者功能是相似的:
可以在 UnrealEditor -> Edit -> Plugins 中搜索到PhysXVehicles插件。
车轮
车辆运动组件
汽车运动组件的核心在于UWheeledVehicleMovementComponent4W,它实现了四轮车辆的动态表现。其中包含的参数集不容忽视,包括但不限于以下几个:
车辆引擎
变速器
CARLA的车辆动力学
CARLA车辆的基类是CarlaWheeledVehicle,它继承自PhysXVehicle组件的WheeledVehicle。生成车辆时,这个类的构造函数初始化了VehicleBounds和BaseMovementComponent,前者用于保存和获取车辆的长宽高,后者是继承于UE的MovementComponent的移动组件类。在这个类的BeginPlay函数中,设置了车门以及初始化了轮胎摩擦力。另外类中有一些设置(Setter)和获取(Getter)函数,包括车辆状态、控制信号、BoundingBox、物理(动力学)特性等。
CARLA支持UE PhysX车辆动力学,也支持CarSim车辆动力学,默认为前者。
VehicleControl是一个结构体,包括了控制车辆所需的所有变量,即油门、转向、刹车等。当车辆接收到输入的控制信号时,CARLA车辆移动组件会调用ProcessControl函数来将控制信号应用到车辆上。
CenterOfMass:质心位置,对于车辆的控制比较重要。当质心位置在车辆前方时,会降低车辆的转向灵敏度(Understeering),当质心位置在车辆后方时,会增加车辆的转向灵敏度(Oversteering)。因此如果要调整车辆的转向性能,质心时不可忽视的点。
如果要在CARLA中设置车辆的动力学参数,例如下面这样即可:
CARLA Vehicle的apply_physics_control方法 会在被调用的下一帧将参数应用到车辆上。
总结