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 环境构建流程
- 创建独立虚拟环境:
bash
conda create -n DiffPhyDrone python=3.11
conda activate DiffPhyDrone
- 安装 PyTorch:
bash
conda install pytorch==2.2.2 torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
- 安装通用依赖:
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
- 在 `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