第3章:环境搭建:Ubuntu + ROS2 + PyTorch 环境配置

说实话,做机器人算法这几年,我踩过最多的坑就是环境问题。明明代码逻辑没问题,一跑就崩,查半天发现是某个库版本不对。所以这一章,咱们把环境一次性搭稳了。

我个人习惯用 Ubuntu 22.04 + ROS2 Humble + PyTorch 2.x 这套组合。为什么选这个?因为兼容性好,社区活跃,遇到问题搜一下基本都有答案。你想想看,要是用个冷门版本,出错了连个问的人都没有,多难受。

3.1 操作系统准备:Ubuntu 22.04 LTS

我建议直接用 Ubuntu 22.04 LTS 桌面版。别问为什么不用 20.04,ROS2 Humble 对 22.04 的支持最完整。我在项目中遇到过用 20.04 装 Humble,结果一堆依赖冲突,折腾了两天才搞定。

系统要求:

  • Ubuntu 22.04 LTS(推荐)或 20.04 LTS
  • 至少 8GB 内存(16GB 以上更佳)
  • NVIDIA GPU(可选,但强烈推荐用于训练)
  • 50GB 以上磁盘空间

装好系统后,第一件事就是换源。嗯,这里要注意,别用默认的官方源,国内访问太慢了。我一般用清华源或者阿里云源,速度能快 10 倍。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 22.04)
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

3.2 ROS2 Humble 安装

ROS2 版本很多,为什么选 Humble?因为它长期支持到 2027 年,而且和 PyTorch 的兼容性经过了我实际验证。我之前试过用 Rolling 版本,结果 PyTorch 的某些算子不兼容,搞得我头大。

安装步骤其实很简单,跟着官方文档走就行。但我给你总结一个精简版,省得你翻来翻去。

# 设置 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

# 添加 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

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

# 安装开发工具
sudo apt install ros-dev-tools -y

小技巧:安装完成后,记得把 ROS2 环境变量加到 .bashrc 里,不然每次开终端都要 source 一遍,很烦人。

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

3.3 PyTorch 与 CUDA 环境

做 VLA 模型,GPU 是刚需。我建议装 CUDA 11.8 或 12.1,这两个版本对 PyTorch 2.x 支持最好。别装最新的 CUDA 12.4,有些库还没适配好。

先检查你的显卡驱动:

nvidia-smi

如果没显示,说明驱动没装。我遇到过这种情况,直接装 NVIDIA 官方驱动就行:

sudo apt install nvidia-driver-535 -y
sudo reboot

然后装 CUDA Toolkit。我个人习惯用 runfile 安装,因为可以指定安装路径,方便管理多个版本。

# 下载 CUDA 11.8 runfile
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

注意:安装时不要选驱动选项,只选 CUDA Toolkit 和 CUDA Samples。驱动我们已经装过了。

装完配置环境变量:

echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

最后装 PyTorch。我建议用 pip 安装,比 conda 快,而且版本控制更灵活。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

验证一下:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

如果输出 True,恭喜你,环境搭好了。

3.4 必要 Python 库安装

做 VLA 模型,这几个库是标配:

库名 版本要求 用途
transformers ≥ 4.30.0 加载预训练 VLM 模型
torchvision ≥ 0.15.0 图像预处理与数据增强
opencv-python ≥ 4.8.0 摄像头采集与图像处理
numpy ≥ 1.24.0 数值计算
pillow ≥ 10.0.0 图像 I/O

安装命令:

pip install transformers torchvision opencv-python numpy pillow

避坑指南:我曾经装 opencv-python 时遇到依赖冲突,原因是系统里同时有 conda 和 pip 管理的包。解决办法是统一用 pip 安装,或者用虚拟环境隔离。

3.5 验证环境

环境搭好了,跑个简单测试验证一下。我写了个小脚本,检查所有组件是否正常:

#!/usr/bin/env python3
import torch
import torchvision
import cv2
import transformers
import numpy as np

print("PyTorch 版本:", torch.__version__)
print("CUDA 可用:", torch.cuda.is_available())
print("Torchvision 版本:", torchvision.__version__)
print("OpenCV 版本:", cv2.__version__)
print("Transformers 版本:", transformers.__version__)
print("NumPy 版本:", np.__version__)

# 测试 GPU 计算
if torch.cuda.is_available():
    x = torch.randn(3, 224, 224).cuda()
    print("GPU 计算测试通过")
else:
    print("警告: 未检测到 GPU,将使用 CPU 模式")

如果所有版本都显示正常,说明环境搭建成功。嗯,这里要注意,如果 CUDA 不可用,别慌,可能是驱动问题,重新装一下驱动就好。

3.6 知识体系总览

为了让你对整个环境搭建有个全局认识,我画了张图:

VLA 模型开发环境架构 Ubuntu 22.04 LTS ROS2 Humble PyTorch + CUDA Transformers | Torchvision | OpenCV | NumPy VLA 模型训练与部署 系统层 通信层 计算层 工具层 应用层

这张图很直观地展示了整个环境的分层结构。从底层的操作系统,到中间件 ROS2,再到计算框架和工具库,最后到我们的 VLA 模型应用。每一层都依赖下一层,所以搭建时要按顺序来。

好了,环境搭建就到这里。这套配置我用了大半年,跑了十几个项目,稳定性没得说。你照着搭,应该不会出大问题。如果遇到什么奇怪的问题,多半是版本冲突,用虚拟环境隔离一下就好。