在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
相关推荐
初圣魔门首席弟子1 小时前
第六章、[特殊字符] HTTP 深度进阶:报文格式 + 服务器实现(从理论到代码)
linux·网络·c++
zl0_00_01 小时前
isctf2025 部分wp
linux·前端·javascript
qq_479875431 小时前
std::true_type {}
java·linux·服务器
2401_853448231 小时前
U-boot引导Linux内核启动
linux·uboot·nfs·mmc·tftp·系统移植
濊繵1 小时前
Linux网络--传输层协议 TCP
linux·网络·tcp/ip
xxp43211 小时前
Linux 根文件系统构建
linux·学习
边疆.1 小时前
【Linux】文件系统
linux·运维·服务器·磁盘·文件系统·软硬链接
_dindong1 小时前
Linux网络编程:Reactor反应堆模式
linux·服务器·网络·设计模式·php
大神的风范2 小时前
LINUX 驱动之HSR04超声波模块,设备树配置
linux·驱动开发