在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
相关推荐
XRJ040618xrj2 小时前
如何在Linux中根据物理网卡建立虚拟网卡
linux·服务器·网络
码农水水3 小时前
蚂蚁Java面试被问:混沌工程在分布式系统中的应用
java·linux·开发语言·面试·职场和发展·php
晚风吹长发3 小时前
初步了解Linux中的动静态库及其制作和使用
linux·运维·服务器·数据结构·c++·后端·算法
物理与数学4 小时前
linux 内核memblock
linux·linux内核
4t4run4 小时前
28、Linux 系统定时任务
linux·运维·服务器
Ryan老房4 小时前
自动驾驶数据标注-L4-L5级别的数据挑战
人工智能·目标检测·目标跟踪·自动驾驶
~黄夫人~4 小时前
Ansible 自动化运维:从 “手动输密码” 到 “一键免密管理”
linux·运维·自动化·ansible
cui__OaO4 小时前
Linux驱动--基于驱动设备分离的按键中断驱动
linux·运维·服务器·嵌入式
星期五不见面5 小时前
虚拟机使用外部WPN网络
linux
阿豪只会阿巴5 小时前
【多喝热水系列】从零开始的ROS2之旅——Day10 话题的订阅与发布1:Python
开发语言·c++·python·ubuntu·ros2