AirSim仿真学习记录(1)

这篇具有很好参考价值的文章主要介绍了AirSim仿真学习记录(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、AirSim概述

1.1什么是AirSim

AirSim是一款基于虚幻引擎构建的无人机、汽车等模拟器(我们现在还有一个实验性的Unity版本)。它是开源的,跨平台的,并支持使用流行的飞行控制器(如PX4和ArduPilot)进行软件在环仿真,并使用PX4进行硬件在环模拟,以进行物理和视觉上逼真的模拟。它是作为虚幻插件开发的,可以简单地放入任何虚幻环境中。

AirSim 是作为虚幻游戏引擎的插件而存在的,适配基于虚幻引擎搭建的环境。目前AirSim也有一个实验版本的插件适用于Unity引擎。得益于游戏引擎优秀的视觉渲染效果,AirSim 仿真平台在具备物理仿真的同时也具备了逼真的视觉仿真效果,这是其一大亮点,非常适用于进行基于深度学习等视觉AI仿真验证。AirSim提供了很多API接口,用于读取数据、控制车辆、控制天气等,AirSim的开发者希望这个平台能够帮助研究人员用于深度学习、计算机视觉、强化学习等人工智能相关的研究,适用于无人机、无人驾驶、机器人等领域的应用。

AirSim的官方网站是:AirSim官网文档,在其官方网站中有更详细的介绍和说明文档。

二、AirSim安装

2.1 软件版本环境

  • AirSim版本:v1.8.1(截止2023年1月)
  • 虚幻引擎版本:4.27.2(依旧还是UE4)
  • Visual Studio版本:Visual Studio Community 2022
  • Python版本:Python3.7
  • Windows版本:Win10

2.2 安装Visual Studio集成开发环境

安装地址:VisualStudio2022安装地址
安装Visual Studio 2022确保在安装VS2022的时候选择C++和Windows10 SDK 10.0.19041的桌面开发,并在“单个组件”选项卡下选择最新的.NET Framework SDK。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
为了保险起见,在这里我把最新的和官网要求的版本都下了。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
因为这个是跟引擎有关的,我怕会引起问题,所以也一并下载了。(因为当时按照网上的另外一个教程:VS2019和UE4.26的时候一直编译不成功)
AirSim仿真学习记录(1),AirSim,python,算法,机器人
最新版的.NET Framework,因为需要用python做AirSim仿真,因此需要与AirSim建立通信。

2.3 安装UnrealEngine

官方地址:虚幻引擎安装地址
点开链接后,可以看到右上角有一个下载按钮(下载之前要先注册一个EpicGames的账号):
AirSim仿真学习记录(1),AirSim,python,算法,机器人
点击下载后,可以看见下载界面。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
这里下载的是Epic Games启动程序的安装包。Epic Games启动程序是用来管理Epic旗下各个产品的启动器,里面包括了对Unreal Engine不同版本、虚幻商城、游戏库等的管理。
安装完程序打开后,如下图所示:
AirSim仿真学习记录(1),AirSim,python,算法,机器人
新版的AirSim要求的引擎需要>=4.27,但是我下载了UE5在验证block环境的时候就报错,生成不了sln,直接就进坑了。(5.0和5.1都是这样)所以我就下了4.27的引擎,结果蛮顺利的。

2.4 AirSim源码下载编译

AirSim源码目前仍在完善和丰富中,为了方便以后实时更新 AirSim 源码,建议使用 git 工具来下载。git工具可以在其官方网站中免费下载: git下载链接,选择下载 Windows 版本,下载完成后,双击安装,安装过程全部选择默认设置即可。

点开任务栏的放大镜,搜索Developer Command Prompt for VS 2022,如下图所示。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
打开之后,切换到你期望下载AirSim的路径。然后输入

git clone https://github.com/Microsoft/AirSim.git

AirSim仿真学习记录(1),AirSim,python,算法,机器人

由于我已经安装过了,这里便不再演示下载。下载完成后,输入指令CD AirSim进入到AirSim的文件夹中,继续输入指令build.cmd。(编译的时间会有点久,耐心等待就就好。)
AirSim仿真学习记录(1),AirSim,python,算法,机器人
v1.8.1的AirSim编译完后会自动在“Airsim\Unreal\Environments\Blocks”文件夹中生成一个Block.sln的工程文件。(前面的版本需要CD 切换到Airsim\Unreal\Environments\Blocks目录下输入update_from_git.bat才会生成工程文件)。
PS:记得打开Epic Games,因为在编译最后会出现一个弹窗让你选择引擎版本的,这里我们选的是4.27。
如果没有出现弹窗并且没有出现Block.sln工程文件的,那么我们就手动Switch一下。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
找到以下文件,右键点击Blocks.uproject ,点击下图红框中的命令
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人
然后就会出现Blocks.sln工程文件了。

2.5 验证AirSim是否与Unreal引擎建立连接

双击Blocks.sln,打开如下图所示
AirSim仿真学习记录(1),AirSim,python,算法,机器人
选择DebugGame Editor和Win64,并且将Blocks设置为启动项目然后点击上方的本地Windows调试器按钮开始调试(F5)
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人

block的环境非常简单,所以渲染也非常快。点击播放后如果出现了四旋翼,则证明了AirSim环境配置成功。

三、AirSim仿真

3.1 下载Unreal环境及环境配置

打开Epic Games,选中Samples往下拉,找到Virtual Studio环境。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
在安装地址可以找到VirtualStudio.uproject,双击打开就会出现UE的编辑器。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人

为了能够使用Visual Studio 编译.sln文件,我们需要创建自己的类,因为Unreal要求至少有一个源文件。具体步骤是:点击左上角的文件,选择新建C++类,父类选择无,所以直接点击下一步;命名和路径都是默认就好了,直接点击创建类。这时Unreal会自动编译C++代码,然后会自动打开Visual Studio。到此VirtualStudio环境就下载安装好了。

3.2 在环境中添加AirSim插件

这一步我们把airsim作为一个插件,安装到环境中,然后环境就可以认识这个插件,并可以使用airsim。先把上一步打开的Unreal 编辑器和Visual Studio都关闭。找到上一篇文章中下载的AirSim文件夹,找到AirSim\Unreal\Plugins文件夹,并将其复制到VirtualStudio.uproject文件夹中。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人
然后双击打开VirtualStudio.uproject.uproject。会自动弹出如下窗口,点击是。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
然后等待编译完成就好啦。

3.3 Python环境的搭建

win10系统下 python 环境的搭建包括安装和配置编辑器和解释器,编辑器是用来写python代码的,解释器是用来编译运行python程序的。
(本文的python环境配置,不需要手动添加环境变量。)

3.3.1 解释器Anaconda环境的安装和配置

非常推荐使用Anaconda对python环境进行管理,Anaconda中可以创建很多不同的虚拟环境,每个环境之间不会相互干涉,而且可以对每个环境进行个性化的配置,比如针对AirSim可以创建一个环境,在这个环境中只安装AirSim仿真需要使用的第三方包和通用库,而不会对其他的环境造成影响。

首先下载安装Anaconda,打开官网.
AirSim仿真学习记录(1),AirSim,python,算法,机器人
下载好之后,双击打开安装包,按照提示一步一步安装即可。安装成功后,就可以针对AirSim专门配置一个虚拟环境。安装完成后,可以看到开始菜单中多了几个应用:

  • Anaconda Navigator :图形用户界面,用于管理python环境。
  • Anaconda PowerShell Prompt:命令行工具。
  • Jupyter notebook:基于web的交互式计算环境,可以编辑markdown,用于展示数据分析的过程。
  • qtconsole :一个可执行 IPython 的仿终端图形界面程序。
  • spyder :一个使用Python语言、跨平台的、科学运算集成开发环境。

我们仅使用 Anaconda NavigatorAnaconda PowerShell Prompt 这两个应用即可。
打开Anaconda Navigator,点击左侧的Environments,这时中间已经有了一个基础环境base(root)。我们新建一个环境,专门用来做AirSim仿真。点击中间下面的Create,这时会跳出来一个窗口,输入一个自己喜欢的命名(我这里是airsim),选择Python版本为3.7,然后点击Create。创建好之后,环境中会包含一些基本的python库和包。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
numpy是一个矩阵运算库,对于矩阵向量等运算非常方便使用,基本上做估计控制等算法都需要用到。以numpy为例,介绍一下安装过程。将库的选择选为all(右边左上角),在右上角的搜索框中搜索numpy,在下面的众多库中找到numpy,并在其前面的小框中打上勾,最后点击下面的Apply即可。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人
下面安装airsim需要用到的第三方库。很多第三方库在这里是搜索不到的,可以使用pip工具来安装。

点击环境名右面的绿色小三角,选择Open Terminal,就可以打开命令行了。
AirSim仿真学习记录(1),AirSim,python,算法,机器人

// 在命令行输入
 pip install msgpack-rpc-python
 pip install airsim

等待安装完成即可。

3.3.2 编辑器pycharm的安装与配置

Pycharm 是一款非常好用的python编辑器,具有代码高亮、自动补全、纠错等非常实用方便的功能,界面也很美观。Pycharm 有教育版,如果使用edu结尾的邮箱注册账号就可以免费使用,这是广大学生的一个非常重大的福利。

首先到官网下载软件安装包。社区版是免费的,教育版对于用结尾是edu的邮箱注册的用户是免费的,专业版是收费的。推荐使用教育版,但是社区版的功能也是完全够用的。下载好之后,双击打开安装包开始安装,根据提示一步一步安装即可。打开pycharm之后,会有选择主题的提示,建议选择暗色,能保护眼睛。

打开pycharm,点击 Create New Project, 先选择新建工程的路径,然后选择解释器为上一节创建的Anaconda环境,但是注意这里第一次选择的时候是没有这个环境选项的。比如我这里应该选择 Python 3.7 (airsim)解释器,但是下拉框中并没有这个环境选项,所以需要添加进来,让Pycharm知道有Anaconda 这个环境。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
AirSim仿真学习记录(1),AirSim,python,算法,机器人
添加完成后就可以看到如下显示:
AirSim仿真学习记录(1),AirSim,python,算法,机器人

四、仿真控制无人机起飞降落

4.1 流程演示

在新建的python工程中新建一个python file

"""
test python environment
"""
import airsim

# connect to the AirSim simulation
client = airsim.MultirotorClient()
client.confirmConnection()

# get control
client.enableApiControl(True)

# unlock
client.armDisarm(True)

# Async methods returns Future.Call join() to wait for task to complete.
client.takeoffAsync().join()
client.landAsync().join()

# lock
client.armDisarm(False)

# release control
client.enableApiControl(False)

下面就是运行程序的步骤。需要先将AirSim运行起来,然后再运行python程序。
首先将C:\Users[用户名]\Documents\AirSim路径下的settings.json文件中的仿真模式改为多旋翼。

 {
   "SettingsVersion": 1.2,
   "SimMode": "Multirotor"
 }

然后打开之前安装好的VirtualStudio环境目录下的VirtualStudio.sln文件;Visual Studio中,选择编译模式为 Debug Game Editor和win64,确保VirtualStudio为启动项目。然后点击 本地Windows调试器,这时会打开 Unreal Editor;在 Unreal Editor 中点击 播放(Play) 按钮,仿真就会运行。

启动完成后,修改UE的游戏模式为AirSimGameMode,然后点击工具栏的运行。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
这时候就会出现一架小的无人机。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
最后在Pycharm中运行刚刚写好的程序。在右上角选择自己的程序,然后点击运行。
AirSim仿真学习记录(1),AirSim,python,算法,机器人
就可以看到仿真中的四旋翼会先飞到一定高度,然后降落。

AirSim仿真模拟

4.2 代码讲解

import airsim

使用 python 做AirSim仿真,必须导入 airsim 包。

 client = airsim.MultirotorClient()

与 AirSim 建立连接,并且返回句柄(client),后面的每次操作需要使用这个句柄。python 与 AirSim 的通信机制在下一节中讲解。

如果是汽车仿真,代码是:

client = airsim.CarClient();
 client.confirmConnection()

检查通信是否建立成功,并且会在命令行中打印连接情况,这样你就可以潘丹程序是否和AirSim连接正常,如果连接正常会在命令行中打印如下:

Connected!
Client Ver:1 (Min Req: 1), Server Ver:1 (Min Req: 1)

 client.enableApiControl(True)    # get control
 client.enableApiControl(False)   # release control

因为安全问题, API 控制默认是不开启的,遥控器有全部的控制权限。所以必须要在程序中使用这个函数来获取控制权。遥控器的操作会抢夺 API 的控制权,同时让 API 获取的控制权失效。使用 isApiControlEnabled 可以检查 API 是否具有控制权。

可能会有人问为什么最后结束的时候要释放控制权,反正都是仿真,结束仿真就好了。但是实际上 AirSim 的开发人员希望在仿真中的代码可以直接移到现实中使用,所以对于现实中的安全问题,还是开发了获取控制权和释放控制权、解锁和上锁等一系列安全操作。

 client.armDisarm(True)    # 解锁
 client.armDisarm(False)   # 上锁

使用这个函数可以让无人机的旋翼启动和停止旋转。

 client.takeoffAsync().join()   # 起飞
 client.landAsync().join()      # 降落

这两个函数可以让无人机起飞和降落。

很多无人机或者汽车控制的函数都有 Async 作为后缀,这些函数在执行的时候会立即返回,这样的话,虽然任务还没有执行完,但是程序可以继续执行下去,而不用等待这个函数的任务在仿真中有没有执行完。

如果你想让程序在这里等待任务执行完,则只需要在后面加上.join()。本例子就是让程序在这里等待无人机起飞任务完成,然后再执行降落任务。

新的任务会打断上一个没有执行完的任务,所以如果takeoff函数没有加 .join(),则最后的表现是无人机还没有起飞就降落了,无人机是不会起飞的。

4.3 python与AirSim的通信机制

AirSim API 使用的是 TCP/IP 中的 msgpack-rpc 协议,这是一种网络通信协议,所以如果设置正确,其实可以用两台不同的电脑来做仿真,一台跑 AirSim 和 Unreal,另一台跑 python程序。

当 AirSim 开始仿真的时候,会打开 41451 端口,并监听这个端口的需求。python 程序使用 msgpack serialization 格式向这个端口发送 RPC 包,就可以与AirSim进行通信了。

如果你的计算机的41451 端口已经被其他程序使用了,那么可以通过 settings 文件改变AirSim使用的端口号。

使用这种网络通信协议的方式,可以将 AirSim 和 python程序隔离,互不干扰。所以不需要修改 AirSim 的任何源代码,就可以满足非常多的仿真需求;而且即使python程序中断了,AirSim 的仿真也可以继续进行。文章来源地址https://www.toymoban.com/news/detail-611953.html

到了这里,关于AirSim仿真学习记录(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于蚁群优化的机器人避障算法仿真

    基于蚁群优化的机器人避障算法仿真 随着机器人技术的发展,机器人的避障能力也变得越来越重要。蚁群优化算法是一种智能优化算法,具有全局搜索能力和强鲁棒性。本文将介绍如何使用ACO蚁群优化算法实现机器人的避障功能,并用Matlab进行仿真。 算法原理 蚁群优化算法

    2024年02月12日
    浏览(41)
  • 强化学习:MuJoCo机器人强化学习仿真入门(1)

        声明 :我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础):  下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式  介绍完毕,下面开始进行mujoco仿真: 首先将这4个文件复制到.mujoco/muj

    2024年01月24日
    浏览(55)
  • 基于遗传算法求解机器人栅格地图路径规划问题matlab仿真

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月22日
    浏览(61)
  • 机器人控制算法——局部规划器TEB算法原理及C++可视化仿真

    1.背景介绍 最近一段时间,由于项目需要,一直在做TEB算法的工程化的工作,于是就考虑写下一篇系统些的文章,作为笔记,后续自己看也方便,TEB的英文名Time elastic band”,是一种局部规划器,它的核心思想是将路径规划问题转化为一个带有时间弹性的优化问题,通过对时间弹

    2024年02月04日
    浏览(44)
  • ROS学习笔记16:机器人系统建模与仿真

    一、概述: 1.机器人系统仿真:         是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。 (1)仿真优势:低成本、高效、高安全性。 (2)仿真缺陷:仿

    2024年02月09日
    浏览(47)
  • 仿真机器人-深度学习CV和激光雷达感知(项目2)day03【机器人简介与ROS基础】

    💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个项目 💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容 🌟 预置知识:基本Python语法,基本linux命令行使用 以下的几个专栏是本人比较满意的专栏 (大部分专栏仍在持续更新

    2024年01月19日
    浏览(53)
  • (无人机方向)ros学习之路ROS 机器人系统仿真_导航仿真概述

    一:导航仿真概述 导航是机器人系统中最重要的模块之一,比如现在较为流行的服务型室内机器人,就是依赖于机器人导航来实现室内自主移动的,本章主要就是介绍仿真环境下的导航实现,主要内容有: 导航相关概念 导航实现:机器人建图(SLAM)、地图服务、定位、路径规划…

    2024年02月02日
    浏览(58)
  • 基于RRT和APF的机器人动态避障算法及Matlab仿真

    摘要: 机器人的动态避障是一个重要的问题,它涉及到在未知环境中规划机器人的运动路径以避免碰撞。本文介绍了一种基于RRT(Rapidly-exploring Random Trees)和APF(Artificial Potential Fields)的算法,用于实现机器人的动态避障。RRT算法用于快速生成机器人的运动路径,而APF算法用

    2024年02月06日
    浏览(50)
  • AirSim仿真学习记录(1)

    AirSim 是一款基于虚幻引擎构建的无人机、汽车等 模拟器 (我们现在还有一个实验性的Unity版本)。它是开源的,跨平台的,并支持使用流行的飞行控制器(如PX4和ArduPilot)进行软件在环仿真,并使用PX4进行硬件在环模拟,以进行物理和视觉上逼真的模拟。它是作为虚幻插件

    2024年02月15日
    浏览(57)
  • 干货 | 浅谈机器人强化学习--从仿真到真机迁移

    “ 对于机器人的运动控制,强化学习是广受关注的方法。本期技术干货,我们邀请到了小米工程师——刘天林,为大家介绍机器人(以足式机器人为主)强化学习中的sim-to-real问题及一些主流方法。 ” 一、前言 设计并制造可以灵活运动的足式机器人,一直是工程师追逐的梦

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包