首页/文章/ 详情

最新版CARLA 0.9.16通过NuRec应用3DGS仿真效果抢先看!

10月前浏览568

作者 | 张峻川

编辑 | 李慢慢

出品 | 车路漫漫


大家好,我是峻川。


上个月,CARLA官方发布了0.9.16的最新版本,其中包含了和NVIDIA联合开发的3项功能:Cos mos Transfer、SimReady和NuRec,今天笔者就NuRec功能进行简单尝试。

在去年笔者曾经发过公 众号文章,将Luman AI的3DGS插件集成进CARLA:LumaAI+CARLA=无痛拥有自己的3DGS自动驾驶仿真器,使CARLA能够实时渲染训练好的3DGS模型,而今年,随着NVIDIA NuRec工具链的成熟,CARLA官方也终于将3DGS模型的渲染功能集成进自己最新版本中,形成了一套可用的自动驾驶仿真工具链。这也是本文将要着重复现的内容。


注:NVIDIA的NuRec工具链不仅可以应用到CARLA中,还能集成到旗下Omniverse的其他仿真平台中,例如Isaac Sim,详情可以见笔者的另一篇文章:一文尽览神经渲染(NERF/3DGS)技术在具身仿真框架Isaac Sim中的实现


1、实现过程


Step 1:安装

我们从CARLA的官方github地址:https://github.com/carla-simulator/carla 可以获取其发布的0.9.16版软件,按照官方文档安装编译即可。


在此提醒大家注意,CARLA github仓库中的default分支是ue5-dev,是基于UE5.5开发的最新分支,但并不是0.9.16版,不包含本文所述的NuRec相关功能。0.9.16版仍然是基于UE4开发的。大家从github中获取CARLA代码后可以切换到0.9.16 tag。


在此我选择的是build from source的方式安装编译,运行以下功能的系统配置是操作系统:Ubuntu22.04;GPU:RTX 3090,CPU 40核,内存128GB。


安装编译0.9.16版CARLA后,还需要按照文末参考链接[1]中的描述部署NuRec相关内容:主要是部署一个docker,内部运行Neural Reconstruction Engine,实现3DGS模型渲染的功能;另外就是从NVIDIA的huggingface仓库[2]中下载NuRec工具链所需的制作好的3DGS模型等原始数据。需要注意的是,编译后的CARLA加上对应的UE,再加上刚刚提到的PhysicalAI-Autonomous-Vehicles-NuRec数据集,共会占约300GB的硬盘空间。


Step 2:运行

接下来运行CARLA server,再运行下面这个脚本即可激活功能。该脚本的命令行参数详见文末参考链接[1]。


PythonAPI/examples/nvidia/nurec/example_nurec_replay_save_images.py

效果如下:

图1-UE4运行界面(Server端)和pygame运行界面(Client端)


CARLA server中可以看到脚本启动的world,其中可以看到地图和动态交通参与者,同时脚本还会启动一个pygame窗口,展示实时的NuRec渲染结果:前视、左视和右视图像。脚本可以选择保存这些渲染图像。


2、自车轨迹和动态物体轨迹


NuRec和CARLA联合仿真的架构如下图所示:

图2-NuRec和CARLA联合仿真的架构


example_nurec_replay_save_images.py是一个单纯的数据回放脚本,脚本从PhysicalAI-Autonomous-Vehicles-NuRec数据集的某条切片中提取主车轨迹、动态交通参与者轨迹和地图,在CARLA server中构建一个仿真场景,接下来在每一步的仿真运算中,根据数据切片中的主车轨迹、动态交通参与者轨迹更新CARLA world中的主车位姿和动态交通参与者这些actor的位姿,同时将ego位姿转化为相机位姿,和其他actor的信息一起传输给docker中的NuRec渲染引擎,获取该步的RGB图片。


在CARLA world中的主车以外的actor是根据记录的数据做匹配选择的CARLA actor模型,这些动态交通参与者在CARLA中的位姿是脚本中提取的数据集中记录的轨迹控制的,如下图。


图3-数据集中的目标物和CARLA中的目标物


笔者认为在此基础上进行进一步开发,完全可以实现联合NuRec的闭环仿真,即借助CARLA成熟的工具链体系和3DGS模型渲染实现能够给算法提供高保真度图像的闭环仿真。


首先很显然地,在闭环测试中,自车轨迹可以用算法输出的控制指令更新的主车位姿来代替。重点在于动态交通参与者的位姿是否可编辑,是否和主车可交互。


即使不对动态交通参与者的轨迹进行改动,由于在CARLA world里,这些已经是actor了,因此起码可以进行碰撞检测等操作来丰富闭环测试功能。此外笔者认为对数据集中的动态交通参与者轨迹文件进行预编辑,以形成新的动态场景应该也是可行的。最后,动态交通参与者是否也可以实现单步控制位姿,以实现和主车的实时动态交互,从当前的示例代码来看应该是可以的,毕竟脚本每一步向Neural Reconstruction Engine发送的gRPC请求对象RGBRenderRequest中都包含了dynamic_objects列表。当然,如果被控的主车轨迹和动态交通参与者轨迹和原始数据相差太大,图像重建效果肯定会受很大影响。


3、数据集解析


最后我们来看PhysicalAI-Autonomous-Vehicles-NuRec数据集每一个切片都包含哪些信息,挑选一个切片直接解压缩,可以看到包含如下文件:

图4-数据集切片的文件组成情况

其中包含我们熟悉的map.xodr,用在线的读取OpenDrive地图的工具打开可以看到地图内容,如下所示。

图5-数据集中的OpenDRIVE地图


还有一些usda、usd、nurec后缀的文件,我们有了之前在Isaac Sim中应用NuRec的经验,可以知道这些就是和NuRec渲染3DGS模型有关系的文件了,因此我们打开Isaac Sim,加载default.usda,可以打开这一系列文件,如下所示。

图6-Isaac Sim中加载usda文件


可以看到,这和之前笔者文章中的应用3DGRUT模型的操作类似,模型除了渲染用的volume数据外,还连接了mesh文件,其中最主要的静态背景mesh用meshlab打开的效果如下所示。

图7-meshlab打开mesh文件


不过之前文章中用Isaac Sim打开usda文件加载3DGS模型后,Isaac Sim窗口显示的场景还带有色彩属性,如下图:

图8-Isaac Sim打开usda文件的色彩


这也许是因为CARLA中应用的NuRec和Isaac Sim中应用的NuRec在渲染方法上有一些差异,因为如果我们将数据集中的checkpoint.ckpt去掉,再运行example_nurec_replay_save_images.py,docker中就会报出checkpoint缺失的错误,可见在CARLA中应用NuRec时,模型训练出的checkpoint是必要的。而且图6中我们只看到了静态背景,我们必然需要额外信息来渲染动态物体。


此外数据集中的一些json文件大多是track数据,包含主车轨迹、动态交通参与者轨迹等。


深入了解NuRec数据集之后,我们就可以应用自己的方法来产生更多数据集,如可以选用一些更为先进的重建方法。现行的NuRec数据集在重建效果上还存在大量瑕疵,如下图的地面人行横道线。

图9-NuRec重建技术的人行横道线的瑕疵


更多CARLA相关视频,可关注作者阿b账号:https://space.bilibili.com/357483440


本文参考链接:

https://carla.readthedocs.io/en/latest/nvidia_nurec/

https://huggingface.co/datasets/nvidia/PhysicalAI-Autonomous-Vehicles-NuRec


以上,本文完。


来源:车路漫漫
ACT碰撞UGpythonUM自动驾驶机器人控制渲染
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-11
最近编辑:10月前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 14粉丝 93文章 325课程 0
点赞
收藏
作者推荐

3DGS落地应用的25个热点问题解答

作者 | 李慢慢编辑 | 李慢慢出品 | 车路漫漫 大家好,我是李慢慢。 之前邀请康谋的大佬做了一期关于3DGS的直播:直播预告 | 从三维重构到仿真革新:3DGS技术解析与实践应用,直播中大家的问题比较多,本文汇总了25个热点问题,并邀请讲师做了详细解答,整理如下: 1 问:与传统三维重构技术相比,3DGS的独特优势在哪? 答:3DGS最核心的优势在于用较短的训练时间能达到逼真的仿真效果,同时能进行实时性的渲染。它摒弃了传统方法中缓慢的光线追踪或难以表达细节的三角网格,通过数以百万计、可灵活优化形状的“高斯球”来表征场景,并利用高效的GPU光栅化技术进行渲染,从而既能完美再现物体边缘、纹理等细微之处,又能达到每秒过百帧的流畅速度。 2 问:3DGS的数学原理和算法基础是什么? 答:3DGS的数学核心是用数百万个可优化的3D高斯球作为场景基元。每个高斯球由其位置(均值μ)、形状(协方差矩阵Σ,通过缩放和旋转分解以利优化)、不透明度α和外观颜色(用球谐函数编码)共同定义。 3 问:3DGS开源工具链包含哪些主要组件?/ 如何利用开源工具链搭建一个简单的实战Demo? 答:首先,初始化阶段需要使用COLMAP工具获取初始化点云。接着,可以将初始化点云数据放到3DGS模型中进行训练。训练完成后,就可以得到重建好的点云文件,将其放入到点云编辑软件中就可以进行修改和渲染。 4 问:现在做仿真大都提到自家产品也是支持3DGS ,你们这个aiSim的核心优势是什么? 答:主要核心优势有以下三个: aiSim对3DGS地图的渲染做了特定的优化,能够进行高保真度场景的仿真,并且在大FoV相机视角下具有一致性。aiSim具有完整的数据提取工具链,利用world extractor可以将原始的传感器数据转换为统一格式,可以直接得到3DGS的文件,从而可以直接导入到aiSim中做场景仿真,而不需要自己训练一个3DGS模型去完成数据文件的生成。aiSim中针对3DGS技术做了nerf相关的弥补,相当于利用了nerf相关的先验信息,从而获得高保真的仿真地图。5 问:在智能驾驶仿真中,3DGS有哪些具体应用场景? 答:在智能驾驶仿真中,3D高斯泼溅的核心应用是快速构建照片级的真实路况环境,并支持动态编辑。它能将采集的街道数据自动重建为高保真三维场景,用于大规模测试自动驾驶系统;同时允许直接调整场景元素(如移动车辆、改变天气),高效生成各种极端案例,极大提升了仿真测试的真实度和覆盖范围。 6 问:在实际应用中,3DGS面临的主要挑战/突破点和发展方向是什么? 答:具体可阅读此篇文章最后一部分:拆解3DGS:原理框架、实战 demo 与自动驾驶仿真落地 7 问:随着技术的发展,3DGS可能会对哪些行业产生重大影响? 答: 娱乐媒体:变革电影虚拟制片与游戏开发,实现逼真开放世界的快速创建。数字孪生:为城市管理、工业设计构建高保真、可交互的虚拟副本。电子商务:实现产品的超真实3D化展示与虚拟试用,提升消费体验。文化遗产:为文物和遗址提供永久性的、可沉浸式体验的数字档案。自动驾驶:提供高真实度的仿真环境,用于安全、高效地训练和测试AI系统。8 问:3DGS优化训练涉及哪些内容? 答:优化训练过程中主要使用到了自适应密度技术。主要在4个方面对3DGS椭球做优化: 克隆:对于重建不足的场景,会将相关的椭球体做克隆。分裂:重建过度的场景,做分裂处理。删除:对不透明度过低的椭球体做删除处理。重置:定期对椭球的不透明度做重置处理。9 问:自适应密度控制的优势有哪些? 答:自适应密度控制是3DGS的核心优势,它通过智能地“分裂”过大高斯球以捕捉细节、“克隆”以填补缺失视角、并“删除”冗余或无效高斯球,实现了模型复杂度与重建精度的动态平衡。这一过程不仅能将计算资源精准分配给纹理复杂的区域以呈现丰富细节,还能避免在平坦区域的资源浪费,从而自动生成一个既紧凑又高质量的3D场景。 10 问:搭建过程中可能遇到哪些常见问题及解决方法? 答: 环境配置问题:可能会出现版本对不上,起各种冲突的问题。建议按照官方推荐的版本安装,特别是torch版本。起冲突时,可以降低包的版本,往往低版本会比较适配。初始化点云:训练3DGS模型需要初始化点云信息,建议使用COLMAP工具直接获取初始化信息。可视化:可以使用官方的可视化工具,但要下载对应的库,并进行编译。也可以使用点云可视化工具,例如https://superspl.at/11 问:对显卡有要求么? 答:使用3060可以进行正常训练,所以显卡型号在3060之上的应该都没有什么问题。 12 问:3D模型和3DGS如何同时渲染? 答:实现3D模型与3DGS同步渲染的核心流程是:首先通过预渲染深度通道建立网格模型的精确遮挡关系;随后,在主体渲染流程中,将3D高斯球与网格三角形共同纳入统一管理——通过图块化屏幕,对每个图块内的所有图元(三角形与高斯球)进行严格的从后向前深度排序;最后,按此排序进行Alpha混合渲染,并在此过程中强制高斯球接受第一步生成的深度缓冲区测试,确保其被正确遮挡,从而无缝融合二者。 13 问:车载数据进行3DGS的挑战是什么? 答:使用车载数据构建3DGS面临五大核心挑战:数据层面,车辆高速移动导致图像存在严重运动模糊与滚动快门扭曲,破坏重建一致性;场景层面,城市道路规模巨大且边界无限,对计算与内存构成压力;环境层面,大量动态车辆与行人会产生拖影鬼影,干扰静态背景重建;外观层面,多变光照与天气使模型难以区分外观变化与真实几何;应用层面,自动驾驶仿真要求严格的几何精度,而3DGS的视觉优化本质难以直接满足物理级尺寸精确的需求。 14 问:3DGS的最终输出是什么文件?能否进行高精度尺寸测量?如果采集了很多真实交通事故的车载视频数据,如何利用这些视频数据和3DGS技术服务于自动驾驶系统开发训练? 答:3DGS的最终输出是一个包含数百万个带属性高斯球的.ply文件,它虽能进行有尺度的几何测量,但其边界模糊性导致精度不及专业扫描设备。若利用大量真实交通事故视频,可通过3DGS自动重建出事发瞬间的高保真动态三维场景,进而为自动驾驶系统生成海量、可重复的极端案例库,用于大幅提升感知算法的鲁棒性和决策系统的安全性测试。 15 问:4DGS目前在自动驾驶仿真有什么代表性论文工作吗? 答: 4D Gaussian Splatting for Real-Time Dynamic Scene RenderingDrivingGaussian:Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes16 问:3DGS建的模型如何做坐标对齐? 答:将3DGS模型与真实世界坐标对齐,最核心的方法是利用其重建过程中产生的相机位姿先验。通过计算SfM定义的世界坐标系与目标坐标系(如激光雷达或全球坐标系)之间的变换矩阵,并将该矩阵统一作用于所有高斯球的位置、旋转及协方差属性,从而实现精准配准;若无精确先验,则需通过点云配准算法(如ICP)或依赖控制点进行手动调整来完成空间对齐。 17 问:请问3DGS生成的点云没有碰撞体,也不太能响应光照和其他渲染效果,怎么能利用起来呢? 答:3DGS生成的点云虽缺乏物理属性,但可通过多种方式高效利用: 可将其作为生成简化网格的蓝图,通过泊松重建或神经隐式表面提取技术转化为带碰撞体的轻量级模型,用于物理仿真通过提取其空间分布信息(如高斯中心密度)作为语义掩码或导航数据,直接服务于自动驾驶的路径规划或场景理解 将其渲染结果作为图像输入,驱动传统图形引擎的光照计算,间接实现复杂光影效果。核心思路是将其视为高质量的中介数据源,通过下游处理管线桥接物理与交互功能。18 问:3DGS使用球谐函数对颜色的表达和MLP的方式进行颜色表达,会有多大区别?这种颜色的影响对自动驾驶仿真有什么影响吗? 答:在自动驾驶仿真中,3DGS使用球谐函数表达颜色是一种显式、快速但记忆密集型的方案,它能精准复现训练视角下的外观(如车辆漆面反光),但难以泛化到未见过的新光照条件;而NeRF采用的MLP是一种隐式、计算慢但紧凑的方案,其内在的神经约束能更好地插值和外推光照变化,生成更一致的视觉效果。这种区别对仿真至关重要:球谐函数能保证特定场景的视觉高保真,但若仿真测试需模拟动态天气、时段,MLP的泛化能力可能提供更稳定、可靠的传感器数据。 19 问:3DGS的训练对原始数据集有啥要求?没有imu数据可能吗? 答:3DGS训练的核心要求是一组覆盖场景多视角的高质量图像及其精确的相机位姿,包括相机内参(焦距、畸变等)和外参(位置与朝向)。它完全不需要IMU数据,因为相机位姿可以通过运动恢复结构技术从图像本身计算得到;但若图像存在严重模糊或缺失纹理,仅依赖SfM估算的位姿可能不够精确,从而影响最终重建质量。 20 问:当场景规模较大时,并且车辆模型快速移动时,能否达到实时渲染的要求(即视觉上是否会出现稀疏椭球的问题)? 答:在大规模动态场景中,3DGS要实现稳定实时渲染仍面临根本性挑战。由于高斯球密度分布与计算负载的固有矛盾,车辆快速移动时易出现两类问题:视觉层面会因远处高斯球简化调度和近处新视角加载延迟,引发表面稀疏孔洞与闪烁伪影;系统层面则因瞬时算力过载导致帧率骤降。虽可通过动态负载均衡等优化手段缓解,但如何在高速运动中始终保持视觉完整性仍是待解决的核心难题。 21 问:结合非3DGS的渲染管线也可以达到这种效果吗?例如放置其他较多非高斯模型时? 答:3DGS与传统渲染管线结合不仅能达到较好效果,更能实现优势互补。具体可通过分层渲染架构实现:使用3DGS承载照片级静态背景(如复杂地形植被),同时用传统多边形管线渲染动态对象(如车辆人物),最后通过深度缓冲同步与光照协议统一合成;当场景中非高斯模型激增时,只需对3DGS区域进行视锥裁剪与细节等级调控,即可在保障视觉一致性的前提下,维持整体渲染效率。 22 问:目前的场景可以结合xodr高精地图吗?是自动生成的还是需要手动搭建? 答:当前将3DGS场景与XODR高精地图结合已具备可行性,但尚未实现完全自动化。典型流程是:首先通过采集的街景数据自动生成3DGS模型,接着将其与XODR地图在统一坐标系中进行半自动配准,最后手动建立交通元素逻辑关联。 23 问:三维场景重建中,3DGS和nerf算法的区别? 答:3DGS与NeRF的核心区别在于场景表示与渲染方式。NeRF使用神经网络隐式建模场景的辐射场,通过体积渲染合成新视图,质量高但计算密集。3DGS则显式地使用可优化的3D高斯球作为图元,通过高效的光栅化进行渲染,实现了实时速度但可能在光滑表面产生瑕疵。NeRF是“基于神经网络的体积渲染”,而3DGS是“基于高斯椭球的光栅化” 24 问:aiSim如何将3DGS和nerf结合使用的? 答:基于预处理后的数据,aiSim 启动神经网络重建流程:融合 NeRF 的几何泛化能力与 3DGS 的实时渲染特性,构建跨模态信息传递机制,将 NeRF 学习的深度、法线、外观等监督信号,通过多模态数据协同训练(引入 LiDAR 深度约束),迁移至 3DGS 的高斯参数优化中。最终,离散点云与图像数据被转化为连续的 3D 高斯场景表示,实现 “真实场景到数字孪生” 的高效映射。 25 问:3DGS技术中,为什么将高斯椭球的协方差矩阵拆解为旋转矩阵和缩放矩阵? 答:在3DGS中,将协方差矩阵分解为旋转矩阵和缩放矩阵,是为了确保优化过程中协方差矩阵始终保持数学上的正定性,同时将优化变量转换为无约束的旋转四元数和缩放向量,从而大幅提升数值稳定性和训练效率。 以上,本文完。 来源:车路漫漫

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈