Azure 上的 AirSim 开发环境#

本文档介绍了如何自动化在 Azure 上创建开发环境,以及如何使用 Visual Studio Code 编写和调试连接到 AirSim 的 Python 应用程序。

自动部署您的 Azure 虚拟机#

点击蓝色按钮开始 Azure 部署(模板已预先填写了以下两个教程用例的推荐虚拟机大小)


注意:虚拟机部署和配置过程可能需要 20 多分钟才能完成。

关于 Azure 虚拟机的部署#

  • 使用 Azure 试用帐户时,默认的 vCPU 配额不足以分配运行 AirSim 所需的虚拟机。如果出现这种情况,您在尝试创建虚拟机时会看到错误,并且必须提交配额增加请求。务必了解您将如何以及将为使用虚拟机支付多少费用

  • 为避免虚拟机不使用时产生费用,请记住从 Azure 门户取消分配其资源,或使用 Azure CLI 中的以下命令:

    az vm deallocate --resource-group MyResourceGroup --name MyVMName

通过 Visual Studio Code 和 Remote SSH 进行代码编写和调试#

  • 安装 Visual Studio Code
  • 安装 Remote - SSH 扩展
  • F1 并运行 Remote - SSH: Connect to host... 命令
  • 添加最近创建的虚拟机详细信息。例如,AzureUser@11.22.33.44
  • 再次运行 Remote - SSH: Connect to host... 命令,现在选择新添加的连接。
  • 连接后,点击 Visual Studio Code 中的 Clone Repository 按钮,将此存储库克隆到远程虚拟机中并打开仅限 azure 文件夹,或者创建一个全新的存储库,克隆它并将此存储库中 azure 文件夹的内容复制到其中。打开该目录很重要,以便 Visual Studio Code 可以使用场景特定的 .vscode 目录,而不是通用的 AirSim .vscode 目录。它包含建议安装的扩展、远程启动 AirSim 的任务以及 Python 应用程序的启动配置。
  • 安装所有推荐的扩展
  • F1 并选择 Tasks: Run Task 选项。然后,从 Visual Studio Code 中选择 Start AirSim 任务,以从 Visual Studio Code 执行 start-airsim.ps1 脚本。
  • 打开 app 目录内的 multirotor.py 文件
  • 开始使用 Python 进行调试
  • 完成后,请记住停止并取消分配 Azure 虚拟机以避免额外费用。

通过本地 Visual Studio Code 进行代码编写和调试,并通过端口转发连接到 AirSim#

注意:此场景将使用两个 Visual Studio Code 实例。第一个将用作通过 SSH 将端口转发到 Azure VM 并执行远程进程的桥梁,第二个将用于本地 Python 开发。为了能够从本地 Python 代码访问 VM,在第二个实例上使用本地 Python 环境时,需要保持 Remote - SSH Visual Studio Code 实例打开。

  • 打开第一个 Visual Studio Code 实例
  • 按照上一节中的步骤通过 Remote - SSH 连接
  • Remote Explorer 中,将端口 41451 添加为转发到本地主机的端口
  • 如前一场景所述,在具有远程会话的 Visual Studio Code 中运行 Start AirSim 任务,或手动启动虚拟机中的 AirSim 二进制文件
  • 打开第二个 Visual Studio Code 实例,无需断开连接或关闭第一个实例。
  • 将此存储库克隆到本地并在 Visual Studio Code 中打开仅限 azure 文件夹,或者创建一个全新的存储库,克隆它并将此存储库中 azure 文件夹的内容复制到其中。
  • app 目录内运行 pip install -r requirements.txt
  • 打开 app 目录内的 multirotor.py 文件
  • 开始使用 Python 进行调试
  • 完成后,请记住停止并取消分配 Azure 虚拟机以避免额外费用。

使用 Docker 运行#

一旦 AirSim 环境和 Python 应用程序都准备就绪,您就可以将所有内容打包成 Docker 镜像。azure 目录中的示例项目已经准备好使用 Docker 运行预构建的 AirSim 二进制文件和 Python 代码。

当您想大规模运行模拟时,这将是一个完美的场景。例如,您可以为同一个模拟设置几种不同的配置,并使用 Azure 容器服务上的 Docker 镜像以并行、无人值守的方式执行它们。

由于 AirSim 需要访问主机 GPU,因此需要使用支持它的 Docker 运行时。有关在 Docker 中运行 AirSim 的更多信息,请单击此处

当使用 Azure 容器服务运行此镜像时,唯一额外的要求是向将部署它的容器组添加 GPU 支持。

它可以使用来自 DockerHub 的公共 Docker 镜像,也可以使用部署到私有 Azure 容器注册表的镜像。

构建 Docker 镜像#

docker build -t <your-registry-url>/<your-image-name> -f ./docker/Dockerfile .`

使用不同的 AirSim 二进制文件#

要使用不同的 AirSim 二进制文件,请首先查看关于 如何在 Windows 上构建 AirSim如何在 Linux 上构建 AirSim 的官方文档,如果您还想使用 Docker 运行它。

一旦您拥有一个包含新 AirSim 环境的 zip 文件(或更喜欢使用 官方版本中的一个),您需要修改存储库 azure 目录中的一些脚本以指向新环境:- 在 azure/azure-env-creation/configure-vm.ps1 中,修改所有以 $airSimBinary 开头的参数为新值 - 在 azure/start-airsim.ps1 中,修改 $airSimExecutable$airSimProcessName 为新值

如果您正在使用 docker 镜像,您还需要一个 linux 二进制 zip 文件,并修改以下与 Docker 相关的文件:- 在 azure/docker/Dockerfile 中,修改 AIRSIM_BINARY_ZIP_URLAIRSIM_BINARY_ZIP_FILENAME ENV 声明为新值 - 在 azure/docker/docker-entrypoint.sh 中,修改 AIRSIM_EXECUTABLE 为新值

维护此开发环境#

此开发环境的几个组件(ARM 模板、初始化脚本和 VSCode 任务)直接依赖于当前的目录结构文件名和存储库位置。当计划修改/分叉其中任何一个时,请务必检查每个脚本和模板以进行任何必要的调整。