2、开发环境搭建:Ubuntu 22.04系统配置、ROS2 Humble安装与验证、LGSVL仿真器安装

好,咱们正式开始动手了。这一章说白了就是「搭台子」。台子搭不好,后面唱戏全得摔跟头。我见过太多同学卡在环境配置上,一卡就是一整天,其实真没必要。跟着我的节奏来,半小时搞定。

2.1 Ubuntu 22.04 系统配置

我个人习惯用 Ubuntu 22.04 LTS 作为主力开发系统。为什么选它?因为 ROS2 Humble 官方推荐的就是 22.04,兼容性最好。你非要用 20.04 或者 24.04 也不是不行,但有些依赖包会让你多花不少时间去折腾。

2.1.1 基础系统安装

如果你是在物理机上装,建议至少分配 100GB 磁盘空间,内存 8GB 起步。虚拟机的话,我给个最低配置:

项目 推荐配置 最低配置
CPU 4核 2核
内存 16GB 8GB
磁盘 120GB SSD 60GB
显卡 NVIDIA GTX 1060+ 集成显卡(会卡)
注意: 如果你用虚拟机跑 LGSVL,记得开启 3D 加速。我曾经在 VMware 上忘了开这个选项,结果仿真器直接黑屏,排查了半小时才发现。

2.1.2 系统更新与基础依赖

装完系统第一件事,更新源。别偷懒,这一步能避免后面 80% 的依赖冲突问题。

sudo apt update && sudo apt upgrade -y
sudo apt install -y \
    build-essential \
    cmake \
    git \
    wget \
    curl \
    python3-pip \
    python3-venv \
    vim \
    net-tools

嗯,这里要注意。python3-pip 一定要装,后面很多工具脚本都靠它。我习惯顺手把 vim 也装上,虽然现在很多人用 VS Code,但服务器上调试还是 vim 最靠谱。

2.2 ROS2 Humble 安装与验证

ROS2 Humble 是 2022 年发布的 LTS 版本,支持到 2027 年。你想想看,做自动驾驶仿真,稳定性是第一位的,所以选 LTS 版本准没错。

2.2.1 安装 ROS2 Humble

官方推荐用 Debian 包安装,简单粗暴。我建议你严格按照以下步骤来,不要跳步:

# 1. 设置 locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

# 2. 添加 ROS2 源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 3. 安装 ROS2 Humble 桌面版
sudo apt update
sudo apt install ros-humble-desktop -y

# 4. 安装开发工具
sudo apt install ros-dev-tools -y
小技巧: 如果你网络不好,可以换成国内镜像源。把第三步的源地址换成清华或者中科大的镜像,速度能快好几倍。我当年在学校实验室装的时候,就是靠镜像源省下了大把时间。

2.2.2 配置环境变量

装完之后,每次打开终端都要 source 一下,很烦。我建议直接写进 .bashrc:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

为什么这么做?因为 ROS2 的环境变量很多,比如 ROS_DOMAIN_IDRMW_IMPLEMENTATION 这些,不 source 的话你连 ros2 topic list 都用不了。说白了,这就是 ROS2 的「开机自启」。

2.2.3 验证安装

装没装好,跑两个命令就知道了:

ros2 --version
ros2 run demo_nodes_cpp talker

如果能看到类似 ros-humble 2023-11-14 的版本号,并且 talker 节点开始发布消息,那就说明装成了。我习惯再开一个终端跑 ros2 run demo_nodes_py listener,看看能不能收到消息。能收到,说明通信链路没问题。

验证清单:
  • ros2 --version 输出正常
  • talker 和 listener 能正常通信
  • ros2 topic list 能看到 /chatter 话题

2.3 LGSVL 仿真器安装

LGSVL 仿真器,现在叫 SVL Simulator,是 LG 开源的自动驾驶仿真平台。说实话,它和 ROS2 的集成度非常高,这也是我选它的原因。你想想看,一个能直接和 ROS2 通信的仿真器,省去了多少桥接的麻烦。

2.3.1 下载与安装

LGSVL 提供了预编译的二进制包,不用编译源码,省心。去 GitHub Releases 页面下载对应 Ubuntu 的版本:

# 下载 Linux 版本
wget https://github.com/lgsvl/simulator/releases/download/2021.3/svlsimulator-linux64-2021.3.zip

# 解压
unzip svlsimulator-linux64-2021.3.zip -d ~/svl_simulator

# 进入目录
cd ~/svl_simulator
注意: 2021.3 是最后一个支持 ROS2 Humble 的稳定版本。之后的版本改动了通信接口,和 Humble 的兼容性不太好。我踩过这个坑,当时升级到 2022.1 版本,结果桥接节点一直报错,最后又降回来了。

2.3.2 运行仿真器

直接运行可执行文件就行:

./svlsimulator.x86_64

第一次启动会弹出登录窗口。你需要注册一个 LG SVL 账号,免费的。登录之后就能看到主界面了。如果你不想登录,也可以用离线模式,但有些地图和场景需要在线下载。

我个人建议先跑一下自带的示例地图,比如 San Francisco 或者 BorregasAve,看看能不能正常渲染。如果画面卡顿或者贴图丢失,大概率是显卡驱动的问题。

2.3.3 配置 ROS2 桥接

LGSVL 和 ROS2 通信,靠的是一个叫 lgsvl_bridge 的节点。这个节点在仿真器启动时会自动加载,但需要你手动配置一下:

  1. 在仿真器主界面点击 Settings
  2. 找到 ROS 2 选项卡
  3. 勾选 Enable ROS 2 Bridge
  4. 设置 Bridge IP127.0.0.1(本机运行)
  5. 设置 Bridge Port9090(默认端口)
提示: 如果你是在多台机器上运行,Bridge IP 要填仿真器所在机器的实际 IP。我做过一个分布式测试,仿真器跑在服务器上,ROS2 节点跑在工控机上,这时候 IP 就不能写 127.0.0.1 了。

2.3.4 验证桥接是否成功

启动仿真器后,在终端里跑:

ros2 topic list

如果能看到 /simulator/clock/simulator/vehicle_state 等话题,说明桥接成功了。这时候你可以用 ros2 topic echo /simulator/vehicle_state 看看能不能收到车辆状态数据。

我记得第一次搭好这个环境的时候,看到 ROS2 终端里刷刷刷地弹出仿真数据,那种感觉真的很爽。说白了,这就是你进入自动驾驶仿真世界的第一道门。

2.4 本章小结

这一章我们干了三件事:装系统、装 ROS2、装 LGSVL。每一步我都给出了具体的命令和配置,你照着做就行。如果遇到问题,先检查网络,再检查依赖,最后检查版本兼容性。90% 的问题都出在这三个地方。

下一章,我们会正式进入 LGSVL 和 ROS2 的通信细节,教你如何自定义桥接消息。到时候你会发现,今天搭的环境有多重要。