第一课:Carla与ROS2联合仿真系统搭建——课程导论与环境总览
大家好,欢迎来到这门课。
我是你们这门课的主讲。在自动驾驶仿真这个领域,我摸爬滚打了快十年。从最早的Carla 0.8版本开始,到现在的Carla 0.9.15,我几乎见证了它每一次重要的迭代。说实话,当年我第一次把Carla和ROS1连起来跑通的时候,那种兴奋感,到现在还记得。
这门课,我们不讲虚的。直接上手,搭建一套能用的Carla + ROS2联合仿真系统。你想想看,一个能跑真实车辆模型的仿真器,配上ROS2这个现代机器人操作系统,这组合在自动驾驶开发里有多重要?
1.1 为什么是Carla + ROS2?
很多新手会问:我直接用Carla自带的Python API不就行了?为什么非要折腾ROS2?
嗯,这个问题问得好。Carla的Python API确实强大,但它是单机、单进程的。你写个脚本,跑个传感器数据,做个控制,没问题。但一旦你想做多传感器融合、多节点通信、或者把算法模块化部署到实车上,Carla自带的API就捉襟见肘了。
ROS2的优势在于:
- 分布式架构:每个传感器、每个算法模块都可以是一个独立节点。我在项目中遇到过,用Carla原生API写了一个感知模块,后来要换成实车数据,代码几乎重写。但用ROS2,只需要改一下话题发布者,接收端完全不用动。
- 标准化接口:ROS2定义了传感器消息、控制消息的标准格式。说白了,你写的代码可以无缝迁移到真车上。
- 强大的工具链:Rviz2可视化、rosbag数据录制、tf坐标变换……这些工具能让你调试效率翻倍。
核心观点:Carla负责“造世界”,ROS2负责“连万物”。两者结合,你得到的是一个接近真实的、可扩展的自动驾驶开发平台。
1.2 课程整体结构
这门课一共10个章节。我把它分成了三个阶段:
| 阶段 | 章节 | 核心内容 |
|---|---|---|
| 基础搭建 | 第1-3章 | 环境安装、Carla基础操作、ROS2基础概念 |
| 核心联调 | 第4-7章 | Carla-ROS2桥接、传感器数据流、车辆控制 |
| 实战进阶 | 第8-10章 | 多车协同、场景测试、性能优化与避坑 |
我个人习惯,每章都会留一个“动手环节”。你跟着做,一定能跑起来。别怕出错,我当年第一次装Carla,光依赖冲突就折腾了两天。后来我把那些坑都总结成了“避坑指南”,每章都会给你。
1.3 环境总览:你需要准备什么?
在开始之前,我们先看看整个系统的“全家福”。
1.3.1 硬件要求
说实话,Carla对硬件要求不低。我建议:
- CPU:至少i7-9700或同等性能,核心越多越好。Carla的物理引擎和渲染很吃CPU。
- GPU:NVIDIA GTX 1060 6GB起步。如果你要做深度学习感知,建议RTX 3060以上。我曾经用GTX 1050 Ti跑Carla,帧率只有个位数,根本没法用。
- 内存:16GB是底线。32GB会更从容。Carla加载地图时,内存占用轻松上10GB。
- 硬盘:建议SSD,至少预留50GB空间。Carla本体加上地图包,大概20-30GB。
注意:如果你用的是笔记本电脑,请确保它有独立显卡。集成显卡跑Carla,基本是幻灯片效果。我见过有同学用MacBook的M1芯片跑,兼容性问题很多,不推荐。
1.3.2 软件栈
我们这门课基于以下版本组合。为什么选这些版本?因为我在项目中踩过无数坑,这个组合是目前最稳定的。
| 软件 | 推荐版本 | 备注 |
|---|---|---|
| Ubuntu | 22.04 LTS | ROS2 Humble的官方支持系统 |
| ROS2 | Humble Hawksbill | 长期支持版,稳定 |
| Carla | 0.9.15 | 目前最稳定的版本,0.9.14也可以 |
| Python | 3.10 | Ubuntu 22.04自带,别乱升级 |
| CMake | 3.22+ | 编译Carla-ROS2-bridge需要 |
我的建议:如果你之前装过ROS1或者其他版本的Carla,最好在虚拟机或者新系统上开始。版本冲突是最大的坑。我曾经为了兼容一个旧项目,在同一个系统上装了ROS1和ROS2,结果两个都经常出问题。后来我学乖了,用Docker隔离环境。
1.4 系统架构速览
我们最终要搭建的系统,长这样:
+-------------------+ +-------------------+
| Carla Simulator | | ROS2 系统 |
| | | |
| +---------------+ | | +---------------+ |
| | 世界/车辆/传感器| | <---> | | Carla-ROS2 | |
| | 渲染与物理引擎 | | | | Bridge 节点 | |
| +---------------+ | | +---------------+ |
| | | | |
+-------------------+ | +---------------+ |
| | 感知/规划/控制| |
| | 算法节点 | |
| +---------------+ |
+-------------------+
说白了,Carla负责模拟真实世界,生成图像、激光雷达点云、GPS、IMU等传感器数据。然后通过一个叫“Carla-ROS2-bridge”的中间件,把这些数据转换成ROS2的话题消息。你的算法节点订阅这些话题,处理完后再把控制指令(比如方向盘转角、油门、刹车)发布回去,Carla执行。
这个桥接层,是整个系统的关键。第4章我们会详细讲它。
1.5 避坑指南:第一课最容易犯的错
嗯,这里我要多说几句。第一课最容易犯的错,不是技术问题,而是“心态问题”。
- 别追求最新版本:Carla 0.9.16刚出的时候,我第一时间升级了,结果发现和ROS2 bridge不兼容,折腾了两天又降级回来。稳定比新功能重要。
- 别跳过环境检查:每装一个软件,都确认一下版本。用
carla --version、ros2 --version检查。我曾经因为系统自带的Python版本不对,导致Carla的API调用失败,查了半天才发现。 - 别在Windows上硬扛:虽然Carla支持Windows,但ROS2在Windows上的体验很差。我建议直接用Ubuntu双系统或者WSL2。如果你只有Windows,可以考虑用虚拟机,但性能会打折扣。
一句话总结:第一课,我们不写代码,只搭环境。环境搭好了,后面就顺了。环境没搭好,后面全是坑。所以,请耐心。
1.6 动手环节:验证你的环境
在进入下一章之前,请确保你完成了以下检查:
- Ubuntu 22.04 系统已安装,并更新到最新。
- ROS2 Humble 已安装,并且
ros2 run demo_nodes_cpp talker能正常运行。 - Carla 0.9.15 已下载并解压,运行
./CarlaUE4.sh能启动模拟器窗口。 - Python 3.10 可用,并且安装了
pip3 install carla。
如果以上都通过了,恭喜你,你已经迈出了最坚实的一步。下一章,我们开始正式编写第一个Carla + ROS2的联合仿真程序。
好,这节课就到这里。我们下节课见。