2、Carla与ROS2联合仿真系统搭建:Ubuntu 22.04 系统安装与配置
好,咱们正式开始搭建环境。这一章讲的是最基础、也最关键的一步——把 Ubuntu 22.04 装好、配好。
你可能觉得装系统有什么好讲的?我刚开始也这么想。直到有一次,我在一台新机器上折腾了整整两天,就为了把显卡驱动和 Carla 的依赖对齐。嗯,从那以后,我每次装系统都会多留个心眼。
2.1 为什么选 Ubuntu 22.04?
说白了,选这个版本就是图个省心。Carla 官方对 22.04 的支持最完善,ROS2 Humble 也是基于这个版本发布的。你想想看,两个核心工具都原生支持同一个系统版本,这能省掉多少兼容性问题。
我个人习惯是:能用 LTS 绝不用非 LTS。22.04 是 2024 年 4 月发布的长期支持版,官方维护到 2027 年,加上社区支持,用到 2032 年都没问题。做自动驾驶仿真,稳定性比什么都重要。
核心要求:
- 系统版本:Ubuntu 22.04.3 LTS 或更高(建议用桌面版)
- 内核版本:5.15 或 6.2(我推荐 6.2,对新硬件支持更好)
- 磁盘空间:至少 100GB(Carla + ROS2 + 仿真数据,很快就占满了)
- 内存:16GB 起步,32GB 更稳
2.2 系统安装流程
安装过程其实不复杂,但有几个坑我得提前跟你说。
2.2.1 制作启动盘
用 Rufus(Windows)或者 dd 命令(Linux/Mac)把 ISO 写入 U 盘。我个人推荐用 dd,虽然慢点,但稳。
# 查看U盘设备名
sudo fdisk -l
# 假设U盘是 /dev/sdb
sudo dd if=ubuntu-22.04.3-desktop-amd64.iso of=/dev/sdb bs=4M status=progress
小技巧:写入完成后,别急着拔 U 盘。先执行 sync 命令,确保数据全部写入。我曾经因为没等同步完成,启动盘装到一半就报错了。
2.2.2 磁盘分区建议
我建议手动分区,别用自动分区。为什么?因为 Carla 和 ROS2 的缓存文件、日志文件会占用大量空间,分开挂载方便管理。
| 挂载点 | 大小 | 文件系统 | 说明 |
|---|---|---|---|
| / | 50GB | ext4 | 系统根目录 |
| /home | 剩余空间 | ext4 | 用户数据、代码、仿真文件 |
| swap | 16GB | swap | 交换分区,内存的一半大小 |
注意:如果你要用 Carla 做大规模场景仿真,建议把 /home 分到 200GB 以上。我有个项目,光录制的传感器数据就占了 80GB。
2.3 系统初始化配置
装完系统别急着装软件,先把系统调教好。这一步很多人会跳过,但后面出问题往往就是这里埋的雷。
2.3.1 更换软件源
国内用户一定要换源,不然下载速度会让你崩溃。我习惯用清华源或者中科大源。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
2.3.2 安装基础依赖
这些包是 Carla 和 ROS2 的公共依赖,提前装好后面省事。
sudo apt install -y \
build-essential \
cmake \
git \
wget \
curl \
vim \
net-tools \
htop \
python3-pip \
python3-venv \
libssl-dev \
libffi-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev
个人经验:装完这些后,重启一次系统。我遇到过好几次,因为内核模块没加载完全,导致后面编译 Carla 时莫名其妙报错。重启一下,问题就没了。
2.3.3 配置显卡驱动
这是最容易出问题的一步。Carla 需要 GPU 加速,没有正确的驱动,你连 Carla 的窗口都打不开。
我建议用 ubuntu-drivers 工具自动安装,别去 NVIDIA 官网手动下载。为什么?因为手动安装的驱动和系统内核可能不匹配,一升级内核就崩了。
# 查看推荐驱动
ubuntu-drivers devices
# 安装推荐版本(通常是 nvidia-driver-535 或 545)
sudo apt install -y nvidia-driver-535
# 安装完成后重启
sudo reboot
重启后验证一下:
nvidia-smi
如果能看到 GPU 信息列表,说明驱动装好了。如果报错,别慌。我曾经遇到过驱动装完但 nvidia-smi 不显示的情况,原因是 Secure Boot 没关。进 BIOS 关掉 Secure Boot,再重启就好了。
2.4 避坑指南
这部分是我踩过的坑,你遇到了可以直接对照解决。
坑1:双系统时间不同步
如果你装了 Windows + Ubuntu 双系统,会发现两个系统的时间总是差 8 小时。这是因为 Windows 把硬件时间当本地时间,而 Ubuntu 当 UTC 时间。
解决办法:在 Ubuntu 里执行 timedatectl set-local-rtc 1,让 Ubuntu 也把硬件时间当本地时间。
坑2:WiFi 驱动不识别
有些笔记本的 WiFi 芯片(比如 Realtek 8821CE)在 Ubuntu 22.04 上默认没驱动。我遇到过两次,都是装完系统发现连不上网。
解决办法:用有线网络先更新系统,然后安装 linux-firmware 包。如果还不行,去 GitHub 找对应芯片的开源驱动。
坑3:Swap 分区不够用
编译 Carla 的时候,内存占用会飙升。如果你只有 16GB 内存,编译到一半可能直接 OOM(内存溢出)。
解决办法:创建一个 swap 文件作为补充。
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
2.5 验证环境
装完系统后,我习惯跑一遍验证脚本,确保所有基础组件都正常。
#!/bin/bash
echo "=== 系统信息 ==="
uname -a
echo ""
echo "=== GPU 驱动 ==="
nvidia-smi --query-gpu=name,driver_version --format=csv
echo ""
echo "=== Python 版本 ==="
python3 --version
echo ""
echo "=== GCC 版本 ==="
gcc --version | head -n 1
echo ""
echo "=== 磁盘空间 ==="
df -h / /home
如果所有输出都正常,恭喜你,基础环境已经搭好了。下一章我们开始装 ROS2 Humble。
本章小结:
- Ubuntu 22.04 是 Carla + ROS2 联合仿真的最佳选择
- 手动分区比自动分区更灵活,建议 /home 分大一点
- 显卡驱动用
ubuntu-drivers自动安装,别手动搞 - 遇到问题先重启,重启解决 80% 的问题
嗯,系统安装这块就这些。看起来步骤不多,但每一步都挺关键。你装的时候如果遇到奇怪的问题,别硬扛,去 Carla 的 GitHub Issues 或者 ROS2 社区搜一下,大概率有人遇到过。
下一章见。