找回密码
 立即注册
首页 业界区 业界 自动驾驶 | 为CarLA添加一辆小米SU7 Part I

自动驾驶 | 为CarLA添加一辆小米SU7 Part I

丧血槌 2025-6-2 00:37:49
自动驾驶 | 为CarLA添加一辆小米SU7 Part I

1.png

导言

什么是CarLA?

CarLA是一款基于虚幻引擎4(Unreal Engine 4)构建的开源自动驾驶仿真平台,为自动驾驶算法的研发、测试与验证提供高保真的虚拟环境。其核心特性包括:

  • 高精度地图与传感器模拟:支持激光雷达、摄像头、毫米波雷达等多种传感器的物理级仿真。
  • 动态交通场景:内置行人、车辆、交通信号等交互元素,可模拟复杂城市路况。
  • 模块化设计:用户可通过Python或C++ API灵活控制环境参数、交通流及智能体行为。
通过从源码构建CarLA,我们可以通过UE4编辑器快速便捷地为它添加一款载具。
准备工作

为了将自定义的一款载具添加到CarLA中,你需要做好如下准备工作:

  • 已经准备好的载具模型
  • 一份从源码构建的CarLA和UE4编辑器(详见https://carla.readthedocs.io/en/latest/build_windows/#windows-build)
  • 安装好CarLA API的Python环境
  • 最新版本的Blender
在本文中,我将以小米 SU7为例,将这款载具添加到CarLA中,你可以在Sketchfab中下载到所需要的资源:https://sketchfab.com/3d-models/xiaomi-su7-ca2cda599f5341068c992c9f44551bf9
2.png

准备要导入的载具

模型准备

首先将你所需要的模型下载到本地并解压,在这里我选择了gltf格式
3.png

打开blender,选择file -> import -> gltf即可导入:
4.png

接下来我们开始检查并整理模型,打开face orientation,检查所有面的内外朝向都没问题(确保没有面的外侧是红色的)
5.png

为了方便后续骨骼绑定,我强烈建议将模型划分为四个轮子和车身两个部分:
6.png

7.png

接下来,我们将模型缩放到以米为单位,并且以x轴为正前方,z轴朝上,并且车轮是刚好接地的:
8.png

(Optional)如果你希望给载具更多细节,可以从官方下载车牌并置于车头和车尾(https://carla-assets.s3.us-east-005.backblazeb2.com/fbx/LicensePlate.rar)
9.png

骨架对齐

接下来,我们从官网下载所需要的载具骨架(https://carla-assets.s3.us-east-005.backblazeb2.com/fbx/VehicleSkeleton.rar),选择file -> import -> fbx导入到blender中
10.png

五个骨骼为:Vehicle_Base,Wheel_Front_Left,Wheel_Front_Right,Wheel_Rear_Left以及Wheel_Rear_Right,分别对应车身,左前轮,右前轮,左后轮以及右后轮。
小心地将四个轮子的骨骼尾部对齐到车轮的中心
11.png

12.png

接下来为Base和Wheels各添加一个Modifier -> Deform -> Armature,object选择我们的骨架
13.png

顶点组绑定

接下来为每个轮子绑定到和四个骨骼同名的顶点组上:
14.png

车身绑定为Vehicle_Base:
15.png

做完这些工作之后,理论上你就已经完成了骨骼绑定,你可以通过在Pose Mode下进行摆布验证骨骼是否都被正确绑定了
16.gif

材质命名

在导出之前,强烈建议按照CarLA的材质命名标准(M_CarPart_CarName)进行重新命名:
17.png

导出模型

上述工作都就绪之后,我们可以导出模型,选择file -> export -> fbx,按照图中的设置导出模型
18.png

导入UE4 Editor

首先打开UE4 Editor,进入Content->Carla->Static->Car->4Wheeled下新建一个文件夹命名为我们的载具,并将我们导出的fbx进行导入,在导入的时候选择材质继承M_CarPaint_Master,并重载Base Color(不要吐槽画质为什么突然变低了,因为我的UE4是编译在远程的工作机上的)
19.png

导入完成之后,我们打开骨骼模型
20.png

但是看着好像和我们在blender看到的模型不太一样
21.png

不用担心,接下来我们把车灯和车窗换成已经有的透明材质(我这里为了偷懒,直接使用了特斯拉现成的车灯材质,大家不要学我,为了美观我还把车漆调成了小米SU7的经典配色)
22.png

创建物理资产

如图打开物理资产
23.png

如图选择四个轮子,选择sphere后重新生成碰撞体
24.png

再把物理类型调成Kinematic
25.png

同理vehicle_base选择为Single Convex Hull之后再重新生成(这样的碰撞基本够用,如果你还需要更精细的类型就需要自行创建模型),物理类型是Default
26.png

创建动画

首先右键新建一个动画蓝图
27.png

父类选择VehicleAnimIsntance,骨骼选择我们已经有的骨骼
28.png

接下来,我们找到Content->Carla->Static->Car->4Wheeled->Tesla->Tesla_Animation并打开,复制蓝图中的所有节点
29.png

再见这些节点粘贴到我们刚才新建的动画蓝图中,完成连线并点击左上角的编译,保存并退出
30.png

配置载具蓝图

打开Content->Carla-Blueprints->Vehicles,创建一个新的文件夹并命名为我们的载具
右键选择新建蓝图,选择VehicleWheel,分别为BP_SU7_FrontWheel和BP_SU7_RearWheel
31.png

其中FrontWheel如下配置:
Collision Mesh选择为Wheel_Shape,Radius和Width按照实际模型填写(这里因为和特斯拉的车辆尺寸差不多,所以我偷懒了直接使用特斯拉的尺寸),选择不被手刹影响,并且舵角为70
32.png

RearWheel也同理,只是勾选可以被手刹影响,并且舵角为0
33.png

保存并点击左上角编译之后,我们在原地右键新建一个蓝图,选择BaseVehiclePawn
34.png

点击打开,分别在Mesh配置我们刚才准备好的动画、骨骼模型以及VehicleMovement中配置四个轮子的蓝图
35.png

36.png

点击左上角编译并保存退出
注册载具

打开Content->Carla-Blueprints->Vehicles->VehicleFactory,点开Vehicles
37.png

新建一个元素,填入汽车厂商以及型号,并指定为我们刚才创建的载具蓝图,完成之后保存编译退出
38.png

测试载具

完成上述所有工作之后,点击右上角的Launch,启动CarLA
待CarLA启动之后,我们打开控制台进入安装有CarLA API的环境,找到官方提供manual_control.py脚本,增加参数--filter su7并启动
39.png

接下来请通过轻推w键以享受你的驾驶之旅!
40.png

结语

本文讲述如何将一个模型作为载具添加到CarLA模拟器中,但是注意,目前这个载具还不支持灯光开关车门开闭以及LiDAR光线反射,我们会在下一个部分进行讲述(如果我还没有弃坑的话)
参考文献

https://carla.readthedocs.io/en/latest/tuto_A_add_vehicle/#add-a-new-vehicle
https://www.youtube.com/watch?v=0F3ugwkISGk
https://github.com/carla-simulator/carla/issues/1779
https://sketchfab.com/3d-models/xiaomi-su7-ca2cda599f5341068c992c9f44551bf9

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册