在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
相关推荐
dishugj7 小时前
【linux】Redhat 6.3系统安装zabbix-agent软件包,无法使用YUM源问题
linux·运维·zabbix
Dev7z7 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
石像鬼₧魂石8 小时前
HexStrike-AI人工智能 渗透测试学习(Metasploitable2 192.168.1.4)完整流程总结
学习·ubuntu
时光803.8 小时前
快速搭建青龙面板Docker教程
windows·ubuntu·bash·httpx
无奈笑天下8 小时前
【麒麟镜像vmtools异常排查指导书】
linux·运维·经验分享·云计算·kylin
Xの哲學8 小时前
Linux多级时间轮:高精度定时器的艺术与科学
linux·服务器·网络·算法·边缘计算
QT 小鲜肉9 小时前
【Linux命令大全】001.文件管理之mmove命令(实操篇)
linux·服务器·前端·chrome·笔记
Winner13009 小时前
查看rk3566摄像头设备、能力、支持格式
linux·网络·人工智能
QT 小鲜肉9 小时前
【Linux命令大全】001.文件管理之mdel命令(实操篇)
linux·运维·服务器·chrome·笔记
大聪明-PLUS10 小时前
如何从零开始开发 Linux 驱动程序
linux·嵌入式·arm·smarc