Prescan自动驾驶仿真:从安装配置到传感器建模联合仿真实战 如果你在做自动驾驶或者ADAS相关的开发Prescan这个名字大概率已经绕不开了。它是一款环境感知级的仿真软件核心价值是把摄像头、毫米波雷达、激光雷达这些传感器的测试场景搭起来并输出可供下游算法使用的真值数据再配合Simulink或ROS做闭环验证。最近后台不少朋友都在问Prescan安装和上手的问题我把自己从零开始到现在整理出的这套学习笔记放出来暂时完结。如果你正准备入门或者已经在用但总被各种报错和仿真结果不理想卡住这份笔记应该能给你省下不少时间。1. Prescan到底解决什么问题1.1 我在开发链路里看到的位置先明确一点Prescan不是做车辆动力学仿真的工具它更偏向于环境感知和场景级仿真。如果拿整车开发流程打比方实车测试成本高、重复性差尤其是AEB、ACC这类主动安全功能需要在各种极端工况下反复验证。Prescan的作用就是把C-NCAP、Euro NCAP里那些标准化场景变成可编辑的软件场景批量跑并记录测试结果。我们算法团队和测试团队现在经常共用一套Scenario库需求变更后先在仿真环境里跑一轮能过滤掉大量低级问题再上试验场。从技术链路看真实的自动驾驶系统包括感知、决策、规划、控制这几个大模块。Prescan在这个链路里两端都沾上游给你传感器原始数据和带标注的真值下游通过接口把控制指令送给虚拟车辆执行。它并不是一个“完全替代真实世界”的万能环境而是一台能够精确控制变量的“场景放映机”。尤其是对传感器仿真的理解不能停留在“按距离出目标”这种粗粒度层面Prescan在建模时会考虑光线传播、反射、天气影响、多路径效应等这样做出来的感知数据才有调算法的价值。工具本身来自荷兰TASS International后来被西门子收购纳入Simcenter产品线所以现在也叫Simcenter Prescan。这点在查资料时要注意很多旧教材还停留在TASS PreScan界面虽然差不多但安装方式和授权管理已经有差异网上搜资料时不要被老版本带偏。1.2 开跑之前必须分清楚的名词刚开始接触Prescan最容易被一堆术语挡在门外。我整理了一份必须提前搞懂的名词表省得连官方文档都翻不明白Scenario场景包含道路网、基础设施、车辆、行人、天气、传感器配置的整体文件扩展名一般是.pxc。Actor交通参与者比如轿车、卡车、自行车、行人。它是场景里的最小运动单元可以设定速度、轨迹、加速度。Ego Vehicle自车通常是装载传感器和控制算法的那个被控对象。一套场景里可以有多个自车但新手阶段建议只放一个避免输入输出接口混乱。Traffic预定义的交通流可以设置车流密度、速度分布、跟车模型等参数。这一块对“测试路测安全性”非常有用。Sensor传感器包括理想传感器、摄像头、毫米波雷达、激光雷达、GPS/IMU等。传感器必须挂在某个Actor上而不是孤零零放在场景里。Ground Truth真值数据就是从场景本身拿到的“标准答案”数据比如目标物真实位置、真实速度、语义分割标签。想省标注成本靠的就是这些输出通道。Generated ModelPrescan根据场景生成的Simulink模型也就是下游算法接进去的地方。另一个容易踩坑的概念是坐标系。Prescan里至少有三套坐标系世界坐标系固定在地面上、车辆坐标系原点在车辆质心、传感器坐标系原点在传感器安装点。传感器输出的目标方位角、距离都是在传感器坐标系下算出来的。如果后面做数据融合把雷达和摄像头的坐标系对齐时搞错方向仿真结果会莫名其妙地错误。我之前就因为摄像头外参的Y轴方向写反导致融合模块全部串线查了两天才定位到问题。2. prescan安装从环境检查到License激活2.1 硬件与软件版本检查很多人一上来就下载安装包结果装完打不开或者生成Simulink模型疯狂报错。安装前先检查硬件配置。Prescan GUI本身对显卡有要求因为要实时渲染3D场景。我自己的经验是CPU六核以上比较稳内存16G只能算及格线32G跑复杂场景才不容易卡显卡最好用NVIDIA独立显卡显存不低于4G否则在多传感器同步仿真时渲染线程会严重拖慢整体速度。硬盘建议留出30G以上空间给软件和场景缓存。软件版本匹配是最容易栽跟头的地方。Prescan和MATLAB/Simulink之间存在版本对应关系不是随便配就能用。我最早就是拿Prescan 2021.1去配MATLAB R2020b结果生成模型时直接弹“版本不支持”折腾了一天。正确做法是安装前先上官网查一下兼容性列表确定你要装的Prescan版本对应哪个MATLAB版本区间然后严格按这个列表装。系统方面Windows 10/11专业版最省心家庭版偶尔会出现服务权限不足的问题。安装过程中尽量临时关闭杀毒软件和系统防火墙否则安装目录下的dll文件可能被误删导致后面启动报错。2.2 安装流程和License配置基于官方渠道的安装流程其实不复杂但要每一步都做对。以下是相对通用的步骤从西门子官网申请试用许可或者让公司IT统一获取正式授权文件。解压安装包右键以管理员身份运行setup.exe。选择安装组件。重点看有没有“传感器模块”“地图导入模块”“ROS接口”等扩展包按自己需求勾选不需要的别装省得后面被一堆插件依赖困扰。设置安装目录。我推荐装到纯英文且不带空格的路径下比如D:\Simcenter\Prescan2021.1不建议放在C:\Program Files里。安装过程中会让你选择MATLAB版本。这里务必选择和Prescan匹配的那个版本并确认能找到对应的MATLAB安装根目录。完成主程序安装后配置License。打开License Manager客户端把授权文件导入或者填写服务器地址。重启电脑再启动Prescan GUI验证安装是否成功。安装完成后的第一件事不是做项目而是跑一遍官方的环境检查脚本。不同版本可能叫法不同但一般在安装目录下会提供类似CheckInstallation的工具。它会自动检测MATLAB路径、编译器、License状态、附加传感器库是否完整。这个步骤能帮我提前发现90%的后续问题建议一定跑一次。至于网上流传的各种“绿色免安装”“永久激活”方案我不建议碰一来安全合规风险太高二来后续升级、补丁都会出问题真到项目交付阶段会很麻烦。2.3 工程目录规划安装不是终点目录规划是否合理直接影响后面输出了多少脏数据。我的习惯是每个场景建一个独立目录目录结构大致是D:\PrescanProjects\ ACC_Demo\ scenes\ // 存放.pxc场景文件 matlab\ // 生成的Simulink模型和脚本 results\ // 仿真结果、日志、曲线导出 AEB_Demo\ ...路径里绝对不能有中文和空格。Prescan生成Simulink模型时会调用MATLAB工作目录如果父路径带中文或空格轻则生成失败重则模型运行时找不到引用文件。我同事就吃过这个亏项目目录叫“紧急制动测试”结果MATLAB直接无法解析路径。另外在MATLAB里要把Prescan的脚本目录加到路径中。具体是在MATLAB主界面执行路径添加操作把Prescan安装目录下的相关文件夹和你的工程代码文件夹都加进去。每换一台电脑这一步都要重新做一次。输出文件命名我建议带上日期和场景名比如20250217_ACC_highway_01.mat不然同一个场景跑几十次你根本分不清哪个结果对应哪种参数组合。3. 场景搭建与传感器建模3.1 场景编辑器的使用逻辑第一次打开Prescan GUI的人多半会被左侧那个部件库震住道路、基础设施、车辆、行人、天气、树木、交通标志……看起来像在搭积木。但它的核心逻辑不是“画得好看”而是“把测试场景需求结构化”。编辑器的操作链路一般是这样先选一段道路或建立一个道路网络然后用连接器把道路段拼起来再在道路网上放置车辆、行人、目标物最后给每个运动物体添加路径和速度曲线。等场景搭建完成再挂传感器进入仿真。道路参数是容易被忽视的地方。点击某条道路段右边属性面板可以设置车道数、车道宽度、曲率、超高、路面摩擦系数等。做AEB测试时路面摩擦系数直接决定了制动距离如果你把标准工况里的高附路面调成了低附路面制动结果肯定不符合预期。这里要特别注意“逻辑连接”不要只靠眼睛看。两条道路段在视觉上接在一起不代表路径是连通的。你需要检查连接器并确保道路段的起始点和长度能正确衔接。我曾经搭过一个交叉口看着没问题但车一到路口就消失后来发现是两条路的Z值差了0.1米。给车辆设置路径时可以直接在编辑器中画关键点也可以通过路径选择器生成一条沿车道的轨迹。设置完成后在Scenario树上要能看到该车辆对应的Path节点。关键操作是右键车辆选择“设置初始速度”和“添加驾驶员模型/路径约束”。如果只想让车匀速走用ConstantSpeed模型就够了要跑跟车逻辑则需要让车辆按路径跟随前车这里要注意设置最大加速度和最小安全距离。3.2 三种传感器的建模参数Prescan的传感器建模是这个软件最值钱的部分也是参数设置最容易出问题的地方。我平时用得最多的是摄像头、毫米波雷达和激光雷达它们各有各的套路。摄像头建模关键参数是分辨率、帧率、水平视场角FOV和焦距。假设我要模拟一个前视单目相机分辨率设为1280x720帧率30fpsFOV设到50度左右。官方还提供了一组内参校准文件可以直接生成畸变图像。如果只是做车道线检测畸变不修正问题不大但如果是把检测结果和雷达目标做像素级融合那内参和外参就必须对齐。深度和语义分割输出通道需要通过配置选项打开。毫米波雷达建模我更关注距离分辨率、速度分辨率和视场角。雷达输出的是目标列表Object List里面包含距离、相对速度、方位角、RCS散射截面等字段。实际工程中雷达的检测距离和角度范围要精确匹配硬件规格比如某款前雷达探测距离150米水平FOV±60度。如果把参数设置成2000米、±90度算法在仿真环境里的表现会“过分乐观”一换到真实雷达就直接失效。RCS值也很重要行人、轿车、卡车默认散射特性不同如果不设置雷达会把所有目标都当成一样的RCS测距虽然没问题但做目标分类就会失真。激光雷达建模最核心的点位是线数、垂直视场角和水平分辨率。仿真里常见64线、128线机械式LiDAR点云数量大能还原出非常细腻的环境轮廓。但要清楚精度越高计算开销越大。我在刚开始跑感知算法时用32线就够验证聚类效果了没必要一上来就上128线。LiDAR还可以设置噪声模型、反射强度和回波模式对做点云预处理的同学来说这些参数影响很大。有一个所有传感器共通的坑安装位置。传感器必须挂在Actor的指定“锚点”上你要通过Transform设置相对车辆坐标系的安装位置。不要图省事把所有传感器都叠在车顶同一个坐标点上摄像头和激光雷达因为安装位置不同产生的视差会影响前期融合效果。另一个需要注意的点是传感器输出频率。雷达30ms输出一帧摄像头33ms输出一帧两个数据的到达时序要自己对好。如果你设定Simulink仿真步长是10ms传感器每个计算步长都采一遍数据量会非常爆炸仿真速度直线下降。3.3 车辆动力学和控制接口Prescan自带的车辆动力学模型属于中等保真度能模拟纵向加速、制动、转弯但悬架、轮胎滑移、横向载荷转移这些细节是没有的。如果项目目标是做底盘控制或车辆稳定性研究建议联合CarSim或者用Simulink自建车辆动力学模型。如果只做感知算法验证自带的简化模型完全够用反而计算更稳定。控制接口这一块Prescan生成的Simulink模型里车辆动力学模块会输出一系列接口信号比如车速、加速度、航向角、质心位置。输入信号方面最简单的控制方式是直接给“目标速度”或“目标加速度”也可以给“前轮转角”。我们在做ACC时就是让上层PID输出期望加速度再接到车辆模型里。把“加速度”误接到“刹车/油门”踏板上是新手常犯的错误两个信号单位和含义不同接错后车辆会一阵一顿地窜动。Prescan也支持脚本化操作尤其是Python API。用脚本批量创建场景、批量改车辆位置、批量设置天气参数比在GUI里点鼠标高效得多。例如我要生成一百个不同初始距离的AEB场景做参数扫掠用循环脚本十几秒钟就能跑完手动搭得搭一个下午。这些Python脚本在Prescan自带的脚本编辑器里就能执行官方文档也给出了基础API范例入门门槛很低。4. 联合仿真实操从GUI到Simulink4.1 生成Simulink模型的完整流程场景和传感器配置完成之后接下来就是最关键的联合仿真环节。流程其实不长但每一步连接都决定后面是否顺利。第一步在Prescan GUI里打开你的场景文件。第二步点击菜单栏“Simulation”里的“Generate Simulink Model”选择输出目录。第三步等待生成完成Prescan会自动启动MATLAB并加载生成的模型文件。生成出来的Simulink模型结构非常清晰上面是车辆动力学模块下面是传感器模块中间用总线信号连接。比如雷达模块会输出一个带结构的总线信号里面是你需要的目标列表属性。摄像头模块可能输出图像总线也可以直接输出语义分割标签。通常生成的默认模型不会帮你写控制算法需要你自己在Simulink里加一个控制子系统把传感器DATA端口连进去把控制指令端口连回车辆模块。求解器设置一定要记得改仿真步长用固定步长推荐0.01秒控制周期通常可以更慢比如0.05秒。很多新手的仿真结果振荡和步长设置不合理有关系——步长太大控制器和车辆模块之间出现“时间缝隙”数据更新不过来步长太小仿真速度慢到怀疑人生。生成模型之前我还会再检查一遍场景里是否放了传感器如果场景没挂任何传感器却生成了模型算法根本没有数据可用这一步卡住很多人但一时半会儿发现不了。4.2 一个最简单的ACC功能实现用一个ACC纵向跟车案例来说明整体流程。目标很简单本车Ego前方有一辆低速目标车本车通过雷达检测到前车的距离和相对速度然后自动调节车速让本车与前车保持设定时间间隔例如1.2秒。具体步骤是在场景里搭一条500米的直路放Ego和Target两辆车Ego初始速度25m/sTarget初始速度15m/s。给Target设置路径让它沿当前车道匀速15m/s行驶。在Ego上挂一个前向毫米波雷达探测距离100米水平FOV±30度。生成Simulink模型在控制子系统中写一个最简单的离散PID逻辑期望安全间距D_safe 1.2 * v_ego 5.0距离误差Drr D_rel - D_safe期望加速度a_cmd Kp * Drr Kd * (v_rel)注意输出限幅比如[-3, 2] m/s²运行仿真导出本车速度、前车距离、加速度曲线。实际跑的时候你会发现Kp和Kd非常敏感。Kp给大了两车距离会在设定值附近高频振荡Kd给小了接近过程来回超调。我用的一组相对温和的参数是Kp0.8Kd1.2效果比较稳定。另外不能只靠距离误差做控制。如果前车也在变化相对速度这一项必须加到控制律里否则突发情况反应不过来。这个案例跑通后AEB就是在ACC基础上增加紧急制动逻辑行人检测就是把雷达换成摄像头或者做传感器融合一通百通。4.3 与ROS2的对接思路现在很多自动驾驶团队不再用纯Simulink闭环而是跑在ROS2生态里。Prescan对ROS2的支持说白了就是一个消息发布和订阅的桥梁Prescan模拟器启动后把摄像头图像、激光雷达点云、雷达目标列表发布到ROS2的Topic里统治着上层感知、规划、控制节点控制的结果再通过Topic下发回Prescan由虚拟车辆模型执行。具体操作时在Prescan的传感器配置里要勾选“ROS接口”或选择对应的消息类型。图像一般是sensor_msgs/Image点云是sensor_msgs/PointCloud2雷达目标可以自定义消息也可以转成相关标准类型。然后在你自己的工作空间编译消息接口包再启动Prescan的Bridge节点。需要注意时间同步ROS2节点订阅数据的时间戳来自Prescan因此仿真步长与ROS发布频率必须匹配。如果你在Prescan里跑0.005秒步长ROS2消息却只按10Hz发那上层算法的控制周期就得按10Hz来别一下子订阅到每个仿真步长。如果团队不用ROS也可以用Prescan的UDP/TCP自定义协议。很多主机厂的控制器在环HiL测试就是用这种串口或以太网协议来通信的。我在实际项目里更倾向于用ROS2因为资料多、调试工具多而且感知、规划各模块解耦更自然。5. 常见问题与避坑实录5.1 安装与生成模型阶段的经典报错把我在学习和项目里遇到的问题整理成了一张速查表遇到类似情况可以直接对照现象可能原因处理方式GUI启动后直接闪退显卡驱动过旧、硬件加速冲突、杀软拦截更新显卡驱动关闭杀软后重装3D渲染设置改为软件渲染测试生成Simulink模型报版本不兼容Prescan与MATLAB版本不匹配对照官方兼容性列表重新安装匹配的MATLAB版本生成的模型里找不到传感器输出场景里没挂传感器或传感器未配置输出通道回GUI检查传感器确认输出通道已勾选仿真速度极慢仿真步长太小、传感器采样率过高、场景过于复杂步长放宽到0.01s降低高精度传感器频率简化场景层雷达目标为空目标物不在雷达FOV内或雷达挂载位置不对查看雷达视锥预览调整安装位置和方向Simulink运行报错“Bus signal”无法连接总线信号结构对不上用Bus Selector提取需要的字段检查信号名称和层级特别强调一下杀毒软件问题。Prescan安装时会把一些可执行文件和动态库写入安装目录杀软可能会在后台“修复”掉所以安装前先关掉杀软装完再把安装目录加入白名单。这一步我踩过两次尤其是360之类的安全软件最喜欢对不常见的软件“动刀”。5.2 仿真结果不合理的排查程序能跑通不代表结果是对的。仿真结果不合理是学习阶段最折磨人的事情。我总结了一个排查顺序先查场景拓扑再查传感器配置最后查控制算法。场景拓扑层面最典型的问题是目标车压根没动或者走出了路径。比如我设定了目标车沿车道行驶但路径起点离车辆实际位置有一段距离车会先在原地等待一下再突然加速追路径看起来就像卡住了。怎么排查运行仿真后在3D视图窗口观察车辆有没有按预期运动如果位置不对优先检查路径点的起始偏移。传感器层面雷达到底有没有看到目标一个快速验证方法是打开Prescan的传感器“实时预览”窗口能看到雷达检测到的点目标在三维空间的位置。如果预览有数据但Simulink模块输出为空问题基本在总线信号连接上。摄像头图像全黑九成是场景里没有开启光照或TimeOfDay设成了夜晚。LiDAR点云有偏移大概率是传感器外参里的Z值或者旋转方向不对。控制算法层面最常见的量纲错误计划模块输出的是期望加速度但车辆接口期望的是油门开度或刹车压力单位没转换结果一跑起来车辆要么全油门要么急刹。另一个坑是控制频率不匹配。Simulink仿真步长0.01s控制算法却每步执行一次PID高频作用下就会出现抖动。我常用的做法是在控制子系统的采样时间上设置为0.05s让控制节拍比仿真节拍慢。5.3 学习路径和后期扩展对于零基础想学Prescan的人我建议按这个节奏来第一周装好环境打开自带Demo把GUI每个菜单都点一遍弄清场景树、部件库的基本操作。第二周自己搭一个简单直路场景放两辆车跑通Simulink联合仿真别急着加传感器。第三周加入摄像头或雷达写一个最简单的纵向控制算法比如距离保持或碰撞预警。第四周尝试多传感器融合用激光雷达做点云聚类用摄像头做目标识别把它们的输出融合起来。第五周往后用Python API做批量参数扫掠搭出小规模的“仿真回归测试集”把不同工况一次性跑完。这套路线看起来慢但每一步都是在建立正确的直觉。如果你一上来就追求把ACC、AEB、行人检测全部放在一个超大场景里最后只会被一堆垃圾结果淹没根本不知道怎么排查。后续扩展方向上我觉得最有价值的是往硬件在环HiL方向发展。Prescan可以和dSPACE、NI的实时机配合把虚拟场景运行在实时操作系统上和真实的ECU通过CAN/以太网通信这样就能在实验室里完成真实控制器的验证。另一个方向是V2XPrescan支持ITS协议栈可以模拟车车通信、车路通信这是未来自动驾驶验证的重要一环。最后再分享一个小技巧不要花太多时间把场景做得“好看”树木、建筑、标志牌在初期根本用不上。Prescan的核心价值是可控、可重复、可量化先把标准场景跑通再增加环境复杂度。这条经验我反复给团队里的新人强调过无数次能帮你把有限的精力花在真正出活的地方。