在Ubuntu 20.04 部署DiffPhysDrone并在Airsim仿真完整流程

DiffPhyDrone是上海交大实验室发布在2025年Nature子刊上的端到端自主导航方案。使用12×16超低分辨率深度图作为输入,使用仅3层CNN的超小神经网络实现端到端自主飞行,可部署于150元廉价嵌入式计算平台。目前已开源,可在本地部署。下面我将介绍本地部署的流程,注意下面的内容是CUDA 12.8和CUDA 11.8混杂介绍的,请你根据你的显卡版本,选择调整相应指令,安装一种CUDA版本即可,建议50系列选择12.8,其余选择11.8。

一、环境与依赖准备

1、在 Ubuntu 20.04 上建议先安装以下软件包:

bash 复制代码
sudo apt update

sudo apt install build-essential cmake git ffmpeg libtiff5 libglfw3-dev libglm-dev

2、还要安装CUDA Toolkit 12.8(非50系显卡最好还是安装11.8的):

bash 复制代码
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin

sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb

sudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb

sudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/

sudo apt update

sudo apt -y install cuda-toolkit-12-8

3、设置环境变量(打开 ~/.bashrc在里面粘贴保存,然后 source ~/.bashrc):

bash 复制代码
export CUDA_HOME=/usr/local/cuda-12.8

export PATH=$CUDA_HOME/bin:$PATH

export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

验证:nvcc --version 应显示 CUDA release 12.8。

也可以在conda环境里装,这样就不会与系统依赖冲突:

bash 复制代码
conda install -c nvidia/label/cuda-11.8.0 cudatoolkit

conda install -c nvidia/label/cuda-11.8.0 cuda-nvcc

然后用nvcc --version验证,一般不用再手动设置环境变量。

4、Python 环境构建流程

  1. 创建独立虚拟环境:
bash 复制代码
   conda create -n DiffPhyDrone python=3.11

   conda activate DiffPhyDrone
  1. 安装 PyTorch:
bash 复制代码
 conda install pytorch==2.2.2 torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
  1. 安装通用依赖:
bash 复制代码
   pip install "msgpack==0.6.2" "msgpack-rpc-python==0.4.1"

   pip install "numpy<2" --force-reinstall

   conda install -c conda-forge opencv

   pip install airsim tqdm einops
  1. 在 `DiffPhysDrone/` 或 `multi_pub/` 目录中编译自定义 CUDA 算子:
bash 复制代码
   cd DiffPhysDrone

   pip install -e src

如果出现 "创建新虚拟环境 / 找不到 torch" 等错误,使用手动编译方式

bash 复制代码
   cd src

   python setup.py build_ext --inplace

   pip install -e . --no-build-isolation --config-settings editable_mode=compat

生成 PyTorch 动态库路径

bash 复制代码
   python -c "import torch, os; print(os.path.join(os.path.dirname(torch.__file__), 'lib'))"

输出示例:

/home/zmkj/anaconda3/envs/DiffPhyDrone/lib/python3.11/site-packages/torch/lib

将路径写入环境变量配置(需要换成你自己的目录路径)

bash 复制代码
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/zmkj/anaconda3/envs/DiffPhyDrone/lib/python3.11/site-packages/torch/lib' >> ~/.bashrc

重新加载环境变量

bash 复制代码
source ~/.bashrc

验证是否能导入

bash 复制代码
   conda activate DiffPhyDrone

   python -c "import quadsim_cuda; print('quadsim_cuda loaded successfully')"

如使用 `multi_pub/`,命令相同。编译成功后会生成 `quadsim_cuda` 模块供 Python 调用。

二、AirSim 群体仿真部署流程

1、首次运行前,可赋予 AirSim 启动脚本执行权限:

bash 复制代码
cd swarm
chmod +x LinuxNoEditor/Blocks.sh

2、启动 AirSim 模拟器:

bash 复制代码
   ./LinuxNoEditor/Blocks.sh \

     -ResX=896 -ResY=504 \

     -windowed -WinX=512 -WinY=304 \

     -settings=$PWD/settings.json
  • 启动后会弹出窗口展示第一人称视角;若需修改场景配置,可编辑 `settings.json`。

3、运行群体规划脚本:

另开终端(保持 `Blocks.sh` 运行):

bash 复制代码
   conda activate DiffPhyDrone

   cd /home/ljy/DiffPhyDrone_project/swarm

   python eval.py --resume swarm.pth --target_speed 2.5

4、训练与评估

1.训练指令:

bash 复制代码
  cd DiffPhysDrone

  # 多智能体训练

  python main_cuda.py $(cat configs/multi_agent.args)

  # 单智能体训练

  python main_cuda.py $(cat configs/single_agent.args)

2.模型评估:

bash 复制代码
  python eval.py --resume <checkpoint路径> --target_speed 2.5
相关推荐
SudosuBash19 小时前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应3 天前
vi编辑器使用
linux·后端·操作系统
何中应3 天前
Linux进程无法被kill
linux·后端·操作系统
何中应3 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应3 天前
Linux常用命令
linux·操作系统
葛立国3 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux