用AI在Carla中生成车辆3D模型

2026-09-14

15
0

在worldsim/HIL-Sim仿真中,需要拿到实车几何参数构建自车3D模型,一般需要这些几何参数:整车长宽高、轴距、轮距、车轮半径、前轴到车头距离、后轴到车尾距离。其他信息比如外观、车牌、后视镜、车灯等不影响仿真测试结果,所以可以忽略。

在Carla官方文档中,对于如何构建车辆3D模型有非常详细两篇文档,见:Content authoring - vehicles 和 Add a new vehicle 。官方办法需要在blender中构建车辆3D模型,然后导入Unreal Editor中做一系列复杂操作,门槛较高,而且里面关于外观建模的部分对仿真测试无用。因此我们不用官方办法,直接在UE4中拿现有的车辆3D模型修改几何参数反而更加简单高效。

今天来尝试基于AI来控制Unreal Editor自动生成自车3D模型。这里我用的carla0.9.16版本对应Unreal Engine4.26,所以先安装这个针对UE4.26优化过的mcp插件unreal-mcp-ue4,安装好之后在vscode的对话框中告诉AI相关信息,让它自行完善相关配置,如下图:

image-VaOp.png

首先,我们假定一个虚拟车辆几何参数为:车轴宽为1.995m,轴距为2.915m,前车轴到车头距离0.917m,后车轴到车尾距离1.022m,车宽度2.209m,底盘高度0.362m,车身高度1.706m,车轮半径36.65cm。我们直接告诉AI随便复制一个现成的车辆模型,调整几何参数,如下图:

image-PIOB.png

AI完成模型修改之后,在Unreal Editor中不太方便检查尺寸,可以让AI把模型导出FBX然后导入Blender中细细检查几何参数尺寸。这里我们检查无误后,告诉AI把新建的模型键入VehicleFactory中注册好,然后重新编译打包carla之后,就可以使用新建的自车模型了。

image-NThT.png

下图为卡朗仿真科技自研的基于carla的HIL-Sim方案中,基于AI修改生成的自车模板。由于长宽高和实车一致,所以碰撞检测是正确的。由于车轴、车轮、轴距等参数和实车一致,因此车辆动力学也和实车一致。

image-tCxx.png

可以让AI使用carla的api打印自车的3D几何信息,确保参数无误,如下:

车辆: 长/宽/高=4.854/2.209/1.706m, 轴距(前后轴中心距)=2.915m, 前/后轮距(左右轮中心距)=1.995/1.995m, 轮半径=0.370m, 前/后悬(车轴中心到保险杠)=0.917/1.022

需要注意的是,车轮半径和前轮最大转向角是在carla的PhysicsControl中单独设置的,3D模型中的值不作数,如下:

            physics_control = self.actor.get_physics_control()
            wheel_radius = 36.650
            wheel_max_degree = 37.0
            front_left_wheel  = carla.WheelPhysicsControl(max_brake_torque=3000,radius=wheel_radius, tire_friction=10, max_steer_angle=wheel_max_degree)
            front_right_wheel = carla.WheelPhysicsControl(max_brake_torque=3000,radius=wheel_radius, tire_friction=10, max_steer_angle=wheel_max_degree)
            rear_left_wheel   = carla.WheelPhysicsControl(max_brake_torque=3000,radius=wheel_radius, tire_friction=10, max_steer_angle=0.0)
            rear_right_wheel  = carla.WheelPhysicsControl(max_brake_torque=3000,radius=wheel_radius, tire_friction=10, max_steer_angle=0.0)
            wheels = [front_left_wheel, front_right_wheel, rear_left_wheel, rear_right_wheel]
            physics_control.mass = 1000
            physics_control.wheels = wheels
            physics_control.max_rpm=15000
            #print(physics_control)
            self.actor.apply_physics_control(physics_control)

每次修改完3D模型或者PhysicsControl之后,方向盘和刹车油门都需要从新标定,标定方法参考:车辆动力学。

欢迎了解卡朗仿真科技自研的HIL-Sim方案:

  1. 完全基于carla二次开发而来(有合作意向的提供源码),非常适合熟悉carla api的同学

  2. gmsl视频注入板卡硬件完全自研,软硬一体把视频链路延迟做到20ms,业界遥遥领先(低延迟对hil-sim置信度不言而喻)

  3. 域控注入链路适配一条龙,创业初期主打性价比