第二章:仿真环境搭建准备
好,咱们正式开始动手之前,先把准备工作做扎实。这一章我带你梳理一下硬件需求、软件工具链的选择,还有系统架构怎么设计。说白了,就是搞清楚「用什么跑」、「拿什么跑」和「怎么跑」这三个问题。
2.1 硬件需求分析
很多人一上来就问我:「老师,我的笔记本能不能跑?」我的回答是:能跑,但跑得舒不舒服是另一回事。
我个人习惯把硬件需求分成三个档次:
| 档次 | CPU | 内存 | 显卡 | 硬盘 | 适用场景 |
|---|---|---|---|---|---|
| 入门级 | i5 第10代以上 | 16GB | 集成显卡即可 | 256GB SSD | 单模型仿真、学习验证 |
| 推荐级 | i7 第12代或AMD R7 | 32GB | RTX 3060 或同级 | 512GB SSD | 联合仿真、参数优化 |
| 工作站级 | Xeon 或 i9 | 64GB 以上 | RTX 4080 或专业卡 | 1TB NVMe SSD | 实时仿真、硬件在环(HIL) |
2.2 软件工具链选择
工具链的选择,说白了就是选「趁手的兵器」。我这些年用过不少组合,目前最顺手的还是这三件套:MATLAB/Simulink、CarSim、ROS。
2.2.1 MATLAB/Simulink —— 控制算法的「主战场」
为什么选它?因为线控转向的核心是控制算法,而 Simulink 在控制领域就是事实标准。你想想看,从 PID 到 MPC,从状态观测器到故障诊断,Simulink 都有现成的模块。
我个人习惯用 2022b 以上版本,因为对 ROS 工具箱的支持更好。安装时记得勾选这些工具箱:
- Simulink Control Design
- Vehicle Dynamics Blockset
- ROS Toolbox
- Stateflow(用于逻辑控制)
2.2.2 CarSim —— 车辆动力学「模拟器」
CarSim 是做什么的?它提供高精度的车辆动力学模型。你写的控制算法好不好,得在 CarSim 里跑一跑才知道。它支持与 Simulink 的联合仿真,这也是我选它的核心原因。
版本方面,我推荐 CarSim 2021.0 或更新版本。老版本在接口兼容性上有些问题,我踩过坑。
2.2.3 ROS —— 通信「桥梁」
ROS 在这里的角色,是连接 Simulink 和 CarSim 的「桥梁」。当然,如果你只是做纯离线仿真,可以不用 ROS。但如果你想做更接近实车的分布式仿真,ROS 就必不可少。
我建议用 ROS Noetic(Ubuntu 20.04)或 ROS2 Foxy。ROS2 在实时性上更好,但 ROS1 的生态更成熟。怎么选?看你的项目需求。
2.3 系统架构设计
好,工具选好了,接下来就是「怎么搭」的问题。我画了一张架构图,你看一眼就明白了。
这张图其实就讲了三件事:
- Simulink 是大脑 —— 负责控制算法的运算和决策
- CarSim 是身体 —— 模拟车辆的真实物理响应
- ROS 是神经 —— 负责信息的传递和协调
核心思路: 控制指令从 Simulink 发出,经过 ROS 转发到 CarSim,CarSim 模拟出车辆状态后再返回给 Simulink。这样就形成了一个完整的闭环仿真系统。
2.4 避坑指南
最后,分享几个我踩过的坑,你遇到了能少走弯路:
- 版本兼容性: 我曾经因为 Simulink 2020b 和 CarSim 2021.0 的接口不兼容,折腾了两天。后来统一升级到 2022b 才解决。所以,尽量保持工具版本一致。
- 环境变量: 安装 CarSim 后,记得检查系统环境变量。我遇到过因为路径没配好,Simulink 找不到 CarSim 的 S-Function 模块。
- ROS 工作空间: 如果你用 ROS,记得先 source 一下 setup.bash。这个细节我至少忘了十次。
嗯,准备工作就这些。工具链搭好了,架构理清了,后面就是具体的仿真搭建了。