第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 知识体系总览
为了让你对整个环境搭建有个全局认识,我画了张图:
这张图很直观地展示了整个环境的分层结构。从底层的操作系统,到中间件 ROS2,再到计算框架和工具库,最后到我们的 VLA 模型应用。每一层都依赖下一层,所以搭建时要按顺序来。
好了,环境搭建就到这里。这套配置我用了大半年,跑了十几个项目,稳定性没得说。你照着搭,应该不会出大问题。如果遇到什么奇怪的问题,多半是版本冲突,用虚拟环境隔离一下就好。