一文看懂CARLA中的车辆动力学

   日期:2024-12-29    作者:feitengjingxi 移动:http://oml01z.riyuangf.com/mobile/quote/79288.html

前言

本文详细介绍CARLA的动力学模型,以便开发者能更加得心应手地使用CARLA。


什么是车辆动力学?

车辆动力学是研究车辆在不同驾驶条件下的运动和力学特性的学科。它涉及到汽车的运动、操作和控制,以及汽车所受到的各种力和力矩。

在车辆动力学的研究中,需要考虑多种复杂的因素,如车辆的重量、重心位置、空气阻力、摩擦力、惯性等。这些因素会对车辆的运动产生影响,从而影响驾驶者的操控感受和车辆的安全性能。车辆动力学主要研究以下几个方面: 为了在仿真世界中实现车辆动力学,首先需要实现物理引擎;下面简要介绍一下CARLA底层采用的Unreal Engine(虚幻引擎,简称UE)的物理引擎。


UE的物理引擎

目前业界主要有三大物理引擎,分别是PhysX、Havok、Bullet。PhysX:由NVIDIA开发的实时物理模拟引擎,广泛用于游戏开发,提供高性能、精确和逼真的物理模拟功能。Havok:一款可靠且广泛应用的物理引擎,提供出色的碰撞检测和物体模拟功能,被广泛应用于游戏和影视制作领域。Bullet:开源的物理引擎,具有广泛的跨平台支持,并以其稳定性和高性能而闻名,被广泛应用于游戏和动画领域。Unreal Engine(简称UE)原生默认支持PhysX物理引擎解决方案,这也是大部分项目常用的技术方案。与此同时,UE 从4.23版本之后,也推出了Unreal Chaos物理系统。对于大多数项目而言,Unreal PhysX基本能够满足需求,可以良好地支持常规场景查询和物理模拟。Chaos的主要技术目标是实现大规模物理可破坏组件的使用。如果项目具有大量高级物理模拟和可破碎建筑,那么使用Chaos会带来更稳定和高效的性能。在一般场景查询方面,PhysX的性能优于Chaos,只有在处理高级大规模可破坏物体模拟时,Chaos才能展现其优势。CARLA用于模拟车辆在各种复杂交通场景下的自动驾驶性能,较少涉及破碎效果的模拟。因此,对于CARLA来说,PhysX物理系统是个不错的选择(UE从V5开始,抛弃了PhysX,如果要使用UE5或为更长远做打算,也建议选用Chaos)。


UE 的车辆动力学

CARLA当前版本(0.9.15)基于UE4.26,这个版本的UE同时支持PhysXVehicles和ChaosVehicles(前者被标记为deprecated),但基于上面的分析,CARLA中依旧选用了PhysXVehicles。

我们来对比一下这两个插件的组成部分,可以看出二者功能是相似的:

可以在 UnrealEditor -> Edit -> Plugins 中搜索到PhysXVehicles插件。


车轮

车轮作为汽车基础部件,被定义在名为VehicleWheel的类中。车轮拥有多个参数,其中部分重要的参数如下:

车轮位置(Location)和速度(Velocity)也是车轮参数的一部分,可以用于定位和测量车轮的状态。


车辆运动组件

汽车运动组件的核心在于UWheeledVehicleMovementComponent4W,它实现了四轮车辆的动态表现。其中包含的参数集不容忽视,包括但不限于以下几个:


车辆引擎

车辆引擎是汽车动力组件中不可或缺的一部分,下面是该部分的各项参数和功能。


变速器

变速器是车辆运动组件的一个部分,数据详细如下:


CARLA的车辆动力学

CARLA车辆的基类是CarlaWheeledVehicle,它继承自PhysXVehicle组件的WheeledVehicle。生成车辆时,这个类的构造函数初始化了VehicleBounds和baseMovementComponent,前者用于保存和获取车辆的长宽高,后者是继承于UE的MovementComponent的移动组件类。在这个类的BeginPlay函数中,设置了车门以及初始化了轮胎摩擦力。另外类中有一些设置(Setter)和获取(Getter)函数,包括车辆状态、控制信号、BoundingBox、物理(动力学)特性等。

CARLA支持UE PhysX车辆动力学,也支持CarSim车辆动力学,默认为前者。

VehicleControl是一个结构体,包括了控制车辆所需的所有变量,即油门、转向、刹车等。当车辆接收到输入的控制信号时,CARLA车辆移动组件会调用ProcessControl函数来将控制信号应用到车辆上。

其中第3行GetVehicleMovementComponent函数是PhysXVehicle组件的一个API,用于获取车辆的移动组件:

最后,CARLA车辆的物理特性用VehiclePhysicsControl来表示,其包含了上文中的部分物理特性,另外还有2个关于车辆本身的物理特性:

如果要在CARLA中设置车辆的动力学参数,例如下面这样即可:

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


总结


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号