Window10 AirSim基础配置v1.3.1+VisualStudio2019+UE4.24

文章资讯 2020-06-14 15:48:50

Window10 AirSim基础配置v1.3.1+VisualStudio2019+UE4.24

1.引言
??AirSim是一个主要有微软公司团队开发的一个仿真框架
??AirSim中采用的仿真环境为虚幻引擎,版本为4.24,如果在Ubuntu18.04中,我们也可以通过ROS(RobotOeratingSystem,机器人操作系统)来使用Gazebo来进行仿真,这里我们就不赘述了。
1下载EicGameLauncher
??我们可以前往虚幻引擎官网进行下载,可能会需要注册账号等,下载地址:
htts:www.unalengine.comzh-CNdownloadue_non_games2打开虚幻引擎,点击库,在这里可以下载各种版本的虚幻引擎版本,这里我们选择的是4.24.3,由于虚幻引擎较大,可能需要下载较长时间。
3.配置AirSim
1.安装VisualStudio2019,并确保安装DesktoDevelomentwithC++和Windows10SDK10.0.18362。
2. 启动DeveloerCommandPromtforVS2019,将路径修改到自己期望存放AirSim的位置,然后执行下面命令来cloneAirSim到本地:
gitclonehtts:github.comMicrosoftAirSim.git可能会遇到问题:
C:>gitclonehtts:github.comMicrosoftAirSim.git
'git'不是内部或外部命令,也不是可运行的程序
或批处理文件。这时,我们可以使用VisualStudio的安装器,将Git相关的组件安装上,之后就可以使用命令行来clone了。3.修改路径,并进行编译
cdAirSim
build.cmd此时会生成虚幻引擎的插件位置在UnalPlugins,可以放在自己使用的虚幻引擎项目中。
4.准备虚幻引擎的仿真场景您可以自己创建虚幻引擎中的项目来进行仿真,也可以使用AirSim内置的仿真场景,这里们使用AirSim内置的仿真场景Blocks进行测试,如果您希望构建自己独特的仿真环境,也可以参考我的其他博客。启动DeveloerCommandPromtforVS2019,执行(路径根据自己存放AirSim的位置进行更改)
cdC:AirSimUnalEnvironmentsBlocks
udate_from_git.bat在资源管理器中打开该文件夹,双击Blocks.sln,使用VisualStudio2019打开。
设置Blocks为启动项目,编译设置DebugGame_Editor和Win64,按F5开始运行。
当编译完成后,即可看到点击播放(Play)即可看到一架无人机出现在仿真环境中:4.代码控制无人机
重新启动虚幻引擎
启动DeveloerCommandPromtforVS2019,打开Blocks仿真环境,点击Play运行,
而后,执行AirSimPythonCentmtirotor路径下的hello_drone.y文件,我用的是conda的命令行,如下:
cdC:AirSimPythonCentmtirotor
ythonhello_drone.y代码执行效果如下图:AirSim提供的hello_drone.y脚本的代码为:
imortsetu_ath
imortairsimimortnumyasn
imortos
imorttemfile
imortrint
imortcv2#connecttotheAirSimsimator
cent=airsim.MtirotorCent()
cent.confirmConnection()
cent.enableAiControl(True)
cent.armDisarm(True)state=cent.getMtirotorState()
s=rint.format(state)
rint("state:%s"%s)imu_data=cent.getImuData()
s=rint.format(imu_data)
rint("imu_data:%s"%s)barometer_data=cent.getBarometerData()
s=rint.format(barometer_data)
rint("barometer_data:%s"%s)magnetometer_data=cent.getMagnetometerData()
s=rint.format(magnetometer_data)
rint("magnetometer_data:%s"%s)gs_data=cent.getGsData()
s=rint.format(gs_data)
rint("gs_data:%s"%s)airsim.wait_key('Pssanykeytotakeoff')
cent.takeoffAsync().join()state=cent.getMtirotorState()
rint("state:%s"%rint.format(state))airsim.wait_key('Pssanykeytomovevehicleto(-10,10,-10)at5ms')
cent.moveToPositionAsync(-10,10,-10,5).join()cent.hoverAsync().join()state=cent.getMtirotorState()
rint("state:%s"%rint.format(state))airsim.wait_key('Pssanykeytotakeimages')
#getcameraimagesfromthecar
sonses=cent.simGetImages([
airsim.ImageRequest("0",airsim.ImageTye.DethVis),#dethvisuazationimage
airsim.ImageRequest("1",airsim.ImageTye.DethPersective,True),#dethinersectiverojection
airsim.ImageRequest("1",airsim.ImageTye.Scene),#scenevisionimageinngformat
airsim.ImageRequest("1",airsim.ImageTye.Scene,False,False)])#scenevisionimageinuncomssedRGBAarray
rint('Retrievedimages:%d'%len(sonses))tm_dir=os.ath.join(temfile.gettemdir(),"airsim_drone")
rint("Savingimagesto%s"%tm_dir)
try:
os.makedirs(tm_dir)
excetOSError:
ifnotos.ath.isdir(tm_dir):
raiseforidx,sonseinenumerate(sonses):filename=os.ath.join(tm_dir,str(idx))ifsonse.ixels_as_float:
rint("Tye%d,size%d"%(sonse.image_tye,len(sonse.image_data_float)))
airsim.write_fm(os.ath.normath(filename+'.fm'),airsim.get_fm_array(sonse))
efsonse.comss:#ngformat
rint("Tye%d,size%d"%(sonse.image_tye,len(sonse.image_data_uint8)))
airsim.write_file(os.ath.normath(filename+'.ng'),sonse.image_data_uint8)
else:#uncomssedarray
rint("Tye%d,size%d"%(sonse.image_tye,len(sonse.image_data_uint8)))
img1d=n.fromstring(sonse.image_data_uint8,dtye=n.uint8)#getnumyarray
img_rgb=img1d.shae(sonse.height,sonse.width,3)#shaearrayto4channelimagearrayHXWX3
cv2.imwrite(os.ath.normath(filename+'.ng'),img_rgb)#writetongairsim.wait_key('Pssanykeytosettooriginalstate')cent.armDisarm(False)
cent.set()#that'senoughfunfornow.let'squitcleanly
cent.enableAiControl(False)
至此,已基本完成在Windows10上的AirSim配置,恭喜你!