Ubuntu 20.04 安装指南:NVIDIA 驱动、CUDA 与 IsaacLab 4.5.0
最终搭建效果展示
本指南分为两个主要部分:
- 基础环境安装:NVIDIA 驱动 535.129.03、CUDA 12.1 和 ROS Noetic
- IsaacLab 4.5.0 安装:包括 IsaacSim 和相关资产设置
适用人群
本指南适用于以下用户:
- 需要在 Ubuntu 20.04 上完整配置 IsaacLab 4.5.0 环境的机器人/仿真研究人员
- 希望清理系统中冲突的 NVIDIA 驱动和 CUDA 版本的用户
- 具备基本 Linux 命令行操作经验的用户
- 能够搜索相关教程或者使用ai工具自行解决报错debug的人
不建议以下用户使用本方法:
- 需要同时保留多个 CUDA 版本的用户(本指南会移除所有旧版本)
- 使用商业软件依赖特定 NVIDIA 驱动版本的用户
系统状态诊断
在准备工作之前,添加一个诊断部分,帮助用户了解当前系统状态:
#系统状态诊断
#在开始清理前,先诊断当前系统上的 NVIDIA 和 CUDA 状态:
# 查看当前 NVIDIA 驱动版本
nvidia-smi
# 查看已安装的 CUDA 版本
nvcc --version
ls -l /usr/local/ | grep cuda
# 查看潜在冲突的包
dpkg -l | grep -i nvidia
dpkg -l | grep -i cuda
这些命令将帮您识别系统中存在的所有 NVIDIA 驱动和 CUDA 版本,为后续的清理工作提供参考。
第一部分:基础环境安装
目录
- [1. 准备工作]
- [2. 安全停止图形界面]
- [3. 彻底清理现有环境]
- [4. 安装 NVIDIA 驱动]
- [5. 恢复图形界面]
- [6. 安装 CUDA 12.1]
- [7. 安装 ROS Noetic]
- [8. 验证安装]
必知要点
重要信息: CUDA 12.1 默认搭配的 NVIDIA 驱动是 530.30.02,但 IsaacLab 4.5.0 要求 535.129.03 版本驱动。由于 CUDA 向后兼容,应安装更新的驱动版本以满足 IsaacLab 的要求。
整个安装流程顺序:
- 停止图形界面
- 清理旧版本
- 安装新驱动
- 安装 CUDA
- 安装 ROS Noetic
注意: 若没有安装过cuda以及ros noetic(或者版本号相近),可直接跳至步骤[6. 安装 CUDA 12.1]
1. 准备工作(再强调一遍,裸机可直接跳至步骤6. 安装 CUDA 12.1)
在开始前,请做好以下准备工作以防万一:
# 更新系统并安装必要工具
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential linux-headers-$(uname -r) ubuntu-drivers-common
# 备份重要配置文件(如果存在)
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup 2>/dev/null
2. 安全停止图形界面
停止图形界面对于安全安装 NVIDIA 驱动至关重要(需要注意:停止图形界面后,操作不太方便,下面一直到 5. 恢复图形界面的代码都是纯手敲,需要非常仔细以及强大的耐心):
# 在终端执行以下命令停止图形界面
sudo systemctl isolate multi-user.target
此时停止图形界面,处于开机但未可视化界面的阶段,
使用 Ctrl+Alt+F3 (有时候可能不需要使用 Ctrl+Alt+F3,系统自动跳转)切换到 TTY 终端
需要输入用户名和密码
# 验证 X 服务器已停止
ps aux | grep X
当只有 grep 命令本身显示时,表示 X 服务器已停止。为确保安装期间图形服务不会自动重启:
# 暂时屏蔽 gdm3 服务
sudo systemctl mask gdm3
3. 彻底清理现有环境
3.1 清除 CUDA
首先移除所有现有的 CUDA 包和配置:
# 查找已安装的 CUDA 包
dpkg -l | grep -i cuda
# 移除所有 CUDA 包及其配置文件
sudo apt-get --purge remove "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"
# 清理依赖
sudo apt-get autoremove
sudo apt-get autoclean
# 移除 CUDA 目录
sudo rm -rf /usr/local/cuda*
如果 CUDA 是通过 runfile 安装的,还需要执行以下步骤(一般没有这步):
# 查找 CUDA 目录
ls -l /usr/local | grep cuda
# 运行卸载脚本(替换 X.Y 为实际版本)
cd /usr/local/cuda-X.Y/bin
sudo ./cuda-uninstaller
3.2 清除 NVIDIA 驱动
接下来移除所有 NVIDIA 驱动相关组件:
# 查找已安装的 NVIDIA 包
dpkg -l | grep -i nvidia
# 移除所有 NVIDIA 包及其配置文件
sudo apt-get remove --purge '^nvidia-.*'
sudo apt-get --purge remove "*nvidia*"
# 清理依赖
sudo apt-get autoremove
sudo apt-get autoclean
如果驱动是通过 runfile 安装的,执行:
# 运行 NVIDIA 卸载脚本
sudo nvidia-uninstall
3.3 恢复默认配置
确保系统回到干净状态:
# 移除 X 服务器配置文件(如果存在)
sudo rm -f /etc/X11/xorg.conf
# 移除 NVIDIA 模块黑名单(如果存在)
sudo rm -f /etc/modprobe.d/blacklist-nvidia-nouveau.conf
# 确保 Nouveau 驱动可以在下次启动时加载
echo 'nouveau' | sudo tee -a /etc/modules
# 更新 initramfs
sudo update-initramfs -k all -u
4. 安装 NVIDIA 驱动 535.129.03
4.1 禁用 Nouveau 驱动
在安装 NVIDIA 驱动之前,必须禁用开源的 Nouveau 驱动:
# 创建黑名单文件
sudo bash -c 'cat > /etc/modprobe.d/blacklist-nouveau.conf << EOF
blacklist nouveau
options nouveau modeset=0
EOF'
# 更新 initramfs
sudo update-initramfs -u
4.2 安装驱动
选择以下方法之一(推荐第一种方法):
方法 1:使用 Ubuntu 仓库(最简单)
# 安装 ubuntu-drivers-common 工具
sudo apt install ubuntu-drivers-common
# 查看推荐驱动
sudo ubuntu-drivers devices
# 安装 535 版本驱动(IsaacLab 4.5.0 要求)
sudo apt install nvidia-driver-535
# 重启系统
sudo reboot
重启后,进入 TTY 终端(Ctrl+Alt+F3)登录并验证驱动安装:
nvidia-smi
预期结果: 应看到 NVIDIA 驱动信息和 GPU 状态表格。
方法 2:使用 NVIDIA 官方仓库
# 添加 NVIDIA 包仓库 GPG 密钥
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
# 更新包列表
sudo apt update
# 安装 NVIDIA 驱动
sudo apt install nvidia-driver-535
# 重启系统
sudo reboot
5. 恢复图形界面
驱动安装完成后,可以恢复图形界面:
# 取消屏蔽 gdm3 服务
sudo systemctl unmask gdm3
# 重新启动图形界面
sudo systemctl isolate graphical.target
如果界面没有自动启动:
sudo systemctl start gdm3
提示: 恢复图形界面后,可以更方便地执行后续安装步骤,因为可以复制粘贴命令,避免手动输入出错。
6. 安装 CUDA 12.1
安装 CUDA 12.1 工具包:
# 添加 NVIDIA CUDA 仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
# 安装 CUDA 12.1 工具包(不重复安装驱动)
sudo apt install cuda-toolkit-12-1
# 设置环境变量
echo 'export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc
7. 安装 ROS Noetic
安装 ROS Noetic 机器人操作系统:
# 添加 ROS 仓库
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 添加 ROS 密钥
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 更新包索引
sudo apt update
# 安装 ROS Noetic 桌面完整版
sudo apt install ros-noetic-desktop-full
# 环境设置
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 安装构建依赖
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
# 初始化 rosdep
sudo rosdep init
rosdep update
8. 验证安装
安装完成后,验证各组件是否安装成功:
验证 NVIDIA 驱动
nvidia-smi
预期结果: 显示驱动版本(应为 535.x.x)和 GPU 信息。
验证 CUDA
nvcc --version
预期结果: 显示 CUDA 编译器版本(应为 12.1.x)。
环境干净度分析
如果你看到以下情况,这是正常的:
- 驱动版本是 535.230.02
- CUDA 识别为 12.2(系统级别)
- nvcc 编译器是 12.1.105 版本
这种配置是正常的,因为:
- NVIDIA 驱动向后兼容
- 较新的驱动支持多个 CUDA 版本
- CUDA 12.1 编译工具已正确安装并可用于 IsaacLab
测试 CUDA 功能(可选)
创建并运行一个简单的 CUDA 程序:
# 创建测试目录和文件
mkdir -p ~/cuda-test && cd ~/cuda-test
cat > test.cu << EOF
#include <stdio.h>
__global__ void helloFromGPU(void) {
printf("Hello World from GPU!\n");
}
int main(void) {
printf("Hello World from CPU!\n");
helloFromGPU<<<1, 10>>>();
cudaDeviceSynchronize();
return 0;
}
EOF
# 编译并运行测试程序
nvcc test.cu -o test
./test
预期结果: 程序应输出 "Hello World from CPU!" 以及 10 行 "Hello World from GPU!"。
验证 ROS Noetic
# 启动 ROS 核心
roscore
预期结果: ROS Master 应成功启动,显示节点已初始化的信息。
可选的进一步验证步骤:
# 新打开一个终端运行小乌龟仿真器
rosrun turtlesim turtlesim_node
# 再新打开一个终端控制小乌龟
rosrun turtlesim turtle_teleop_key
预期结果: 应该能看到小乌龟仿真器窗口,并能通过键盘控制小乌龟的移动。
总结
通过遵循本指南中的步骤,你可以安全地清理现有的 CUDA 和 NVIDIA 驱动程序,并重新安装 CUDA 12.1、匹配的 NVIDIA 驱动以及 ROS Noetic,以支持 IsaacLab 4.5.0。整个过程需要仔细操作,确保在每个步骤后验证成功,这样可以最大限度地减少系统问题的风险。
最重要的安全措施是:
- 在修改系统驱动前停止图形界面
- 在进行重大更改前备份关键配置文件
- 按照正确的顺序执行安装步骤
- 在每个关键步骤后验证是否成功
如果遇到问题,本指南中的恢复步骤将帮助你重新获得系统访问权限。一旦系统配置完成,就可以进行 IsaacLab 4.5.0 的安装了。
系统配置好后,就可以进行IsaacLab 4.5.0安装了
第二部分:IsaacLab 4.5.0 安装
目录
- [1. 介绍]
- [2. 系统要求]
- [3. 配置虚拟环境]
- [4. 下载 IsaacSim 4.5.0 及资产包]
- [5. 安装 IsaacSim 4.5.0]
- [6. 设置本地资产]
- [7. 配置 IsaacSim 使用本地资产]
- [8. 验证 IsaacSim 安装]
- [9. 安装 IsaacLab 4.5.0]
- [10. 配置 NUCLEUS_ASSET_ROOT_DIR]
- [11. 验证 IsaacLab 安装]
下述教程参考链接
1. 介绍
本指南提供在 Ubuntu 20.04 上安装 IsaacLab 4.5.0 的详细步骤,包括下载、安装、配置和验证过程。由于前面已经安装了 CUDA 12.1 和 ROS Noetic,我们将直接从 IsaacSim 的安装开始。
2. 系统要求
在 Ubuntu 20.04 上需要使用二进制安装的原因:Ubuntu 20.04 使用 GLIBC 2.31,而 IsaacSim 的 pip 安装需要 GLIBC 2.34+ 。因此,NVIDIA 官方建议在 Ubuntu 20.04 上使用二进制安装方法而非 pip 安装。
硬件要求:
- 已安装组件: CUDA 12.1、ROS Noetic
- GPU: NVIDIA RTX 系列显卡
- 驱动版本: 推荐 535.129.03 或更高版本
- 内存: 至少 32GB RAM
- 显存: 至少 16GB VRAM(对于复杂模拟)
- 存储: 至少 200GB 可用空间
3. 配置虚拟环境
# 创建并激活 conda 环境
conda create -n isaaclab_4_5_0 python=3.10 pip setuptools wheel -y
conda activate isaaclab_4_5_0
# 验证pip是否正确安装 pip --version
# 安装必要的基础包
conda install pip setuptools wheel
# 安装 PyTorch 2.5.1
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia
4. 下载 IsaacSim 4.5.0 及资产包
-
IsaacSim 4.5.0 二进制包( Linux 版本的二进制包(6.7GB))
isaac-sim-standalone@4.5.0-rc.36+release.19112.f59b3005.gl.linux-x86_64.release.zip
-
资产包(三个都需要下载,总计 86.2GB):
isaac-sim-assets-1@4.5.0-rc.36+release.19112.f59b3005.zipisaac-sim-assets-2@4.5.0-rc.36+release.19112.f59b3005.zipisaac-sim-assets-3@4.5.0-rc.36+release.19112.f59b3005.zip
想快一些可以选择百度网盘下载(我是会员4M/s差不多6小时),下面是一个博主上传的百度网盘IsaacSim 4.5.0资产包 链接:
提取码: 59wb
该博主原帖:
Issac Sim入门踩坑日记(含100G本地资产网盘链接) - 从来你又调皮的文章 - 知乎 zhuanlan.zhihu.com/p/271749606…
5. 安装 IsaacSim 4.5.0
# 创建安装目录
mkdir ~/isaacsim
# 解压安装包
cd ~/Downloads
unzip "isaac-sim-standalone@4.5.0-rc.36+release.19112.f59b3005.gl.linux-x86_64.release.zip" -d ~/isaacsim
# 运行安装后脚本
cd ~/isaacsim
./post_install.sh
# 启动 IsaacSim 选择器
./isaac-sim.selector.sh
点击 START 即启动 IsaacSim,第一次启动会比较慢,弹出无响应也没事,等待即可
6. 设置本地资产
# 创建资产目录
mkdir -p ~/isaacsim_assets
# 解压资产包
cd ~/Downloads
unzip "isaac-sim-assets-1@4.5.0-rc.36+release.19112.f59b3005.zip" -d ~/isaacsim_assets
unzip "isaac-sim-assets-2@4.5.0-rc.36+release.19112.f59b3005.zip" -d ~/isaacsim_assets
unzip "isaac-sim-assets-3@4.5.0-rc.36+release.19112.f59b3005.zip" -d ~/isaacsim_assets
7. 配置 IsaacSim 使用本地资产
编辑 IsaacSim 基础配置文件:
# 打开配置文件
nano ~/isaacsim/apps/isaacsim.exp.base.kit
添加以下设置(将$USER替换为您的实际用户名):
[settings]
persistent.isaac.asset_root.default = "/home/$USER/isaacsim_assets/Assets/Isaac/4.5"
exts."isaacsim.asset.browser".folders = [
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/Robots",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/People",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/IsaacLab",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/Props",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/Environments",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/Materials",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/Samples",
"/home/$USER/isaacsim_assets/Assets/Isaac/4.5/Isaac/Sensors"
]
eg.笔者$USER=lwb
则写入:
[settings]
persistent.isaac.asset_root.default = "/home/$USER/isaacsim_assets/Assets/Isaac/4.5"
exts."isaacsim.asset.browser".folders = [
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/Robots",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/People",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/IsaacLab",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/Props",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/Environments",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/Materials",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/Samples",
"/home/lwb/isaacsim_assets/Assets/Isaac/4.5/Isaac/Sensors" ]
8. 验证 IsaacSim 安装
conda activate isaaclab_4_5_0
# 设置环境变量,在终端执行
gedit ~/.bashrc
# 添加以下行
export ISAACSIM_PATH="${HOME}/isaacsim"
export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh"
# 保存并退出
# 使环境变量生效
source ~/.bashrc
# 在退出 conda 环境的状态下运行
cd ~/IsaacLab
# 安装Vulkan验证工具 sudo apt update sudo apt install vulkan-tools # 检查Vulkan支持 vulkaninfo | grep deviceName
# 重置GPU状态
sudo rmmod nvidia_uvm
sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
sudo modprobe nvidia
sudo modprobe nvidia_modeset
sudo modprobe nvidia_drm
sudo modprobe nvidia_uvm # 尝试重新启动IsaacSim
cd ~/isaacsim
source setup_conda_env.sh
./isaac-sim.sh --/persistent/isaac/asset_root/default="${HOME}/isaacsim_assets/Assets/Isaac/4.5"
下面是成功进入后的界面
下面是笔者自己加载了两个asset用于测试
9. 安装 IsaacLab 4.5.0
# 克隆 IsaacLab 仓库
cd ~
git clone https://github.com/isaac-sim/IsaacLab.git
# 进入仓库目录
cd IsaacLab
# 创建到 IsaacSim 的符号链接
ln -s ${HOME}/isaacsim _isaac_sim
# 安装依赖项
sudo apt install cmake build-essential
# 运行安装命令安装所有扩展和学习框架
./isaaclab.sh --install
# 如果只想安装特定框架,可以指定它们
# 例如: ./isaaclab.sh --install rl_games
10. 配置 NUCLEUS_ASSET_ROOT_DIR
为了使用本地资产而不是从 AWS 下载,需要修改 NUCLEUS_ASSET_ROOT_DIR 在 assets.py 文件中:
# 打开 assets.py 文件
nano ~/IsaacLab/source/isaaclab/isaaclab/utils/assets.py
找到定义 NUCLEUS_ASSET_ROOT_DIR 的行并将其更改为指向您的本地资产:
python
# 将此行:
NUCLEUS_ASSET_ROOT_DIR = carb.settings.get_settings().get("/persistent/isaac/asset_root/cloud")
# 更改为:
NUCLEUS_ASSET_ROOT_DIR = "/home/$USER/isaacsim_assets/Assets/Isaac/4.5"
替换 $USER 为您的实际用户名。
11. 验证 IsaacLab 安装
# 运行一个简单的测试脚本
./isaaclab.sh -p scripts/demos/quadrupeds.py
12. 确认安装成功
-
检查 IsaacSim 功能:
cd ~/isaacsim source setup_conda_env.sh ./isaac-sim.sh --/persistent/isaac/asset_root/default="${HOME}/isaacsim_assets/Assets/Isaac/4.5"IsaacSim 应该能够启动且不会崩溃。
-
验证 IsaacLab 环境:
注意启动前,要在该终端
cd \~/isaacsim
source setup\_conda\_env.sh
否则执行下面代码会报错ModuleNotFoundError: No module named 'isaacsim'`
cd ~/IsaacLab
./isaaclab.sh -p scripts/demos/arms.py

3. 运行基本训练示例:
# 安装 RSL-RL 库
./isaaclab.sh --install rsl_rl
无界面模式下运行(--headless)
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Humanoid-v0 --num_envs 16 --headless --max_iterations 100
使用 Play 模式可视化运行
训练完成后,可以使用 play 脚本来可视化训练结果:
# 首先训练得到模型
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Humanoid-v0 --num_envs 16 --headless --max_iterations 100
# 然后使用 play 脚本来可视化(这个脚本通常设计为可视化而不会自动退出)
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task Isaac-Humanoid-v0 --num_envs 16
常用任务的训练和可视化命令
人形机器人任务 (Humanoid)
训练命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Humanoid-v0 --num_envs 16 --headless --max_iterations 100
可视化命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task Isaac-Humanoid-v0 --num_envs 16
倒立摆任务 (Cartpole)
训练命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Cartpole-v0 --num_envs 16 --headless --max_iterations 100
可视化命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task Isaac-Cartpole-v0 --num_envs 16
四足机器人任务 (Ant)
训练命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Ant-v0 --num_envs 16 --headless --max_iterations 100
可视化命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task Isaac-Ant-v0 --num_envs 16
球平衡任务 (BallBalance)
训练命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-BallBalance-v0 --num_envs 16 --headless --max_iterations 100
可视化命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task Isaac-BallBalance-v0 --num_envs 16
机械臂任务 (Reach)
训练命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task Isaac-Reach-v0 --num_envs 16 --headless --max_iterations 100
可视化命令
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task Isaac-Reach-v0 --num_envs 16
如果以上步骤都成功完成,则您的 IsaacLab 4.5.0 训练环境已在 Ubuntu 20.04 上正确配置,可以使用了。