仿真器--airsim
贴一下最近搞了搞airsim的总结,仅代表个人经验,如有纰漏请多指教11.13日忍痛更新,被官网的教程坑惨了
1、unreal engine是和airsim分开的,虚幻引擎是用来模拟环境和渲染3d效果的,他的教程在这:https://blog.csdn.net/kmyhy/article/details/80694339 ,你可以自己新建环境并且加入蓝图和材质等等,基本上常用的环境搭建有三种方法(注,在linux下):
(1)这里有官网发布的免费的一些linux下的custom环境https://github.com/microsoft/AirSim/releases/tag/v1.2.0Linux,运行.sh文件即可,但这些环境貌似不可以修改,只能直接当做场景运行,而且是全屏的(不知道怎么缩小)
(2)也可以在epic games launcher上下载很多开源的环境,比如那个landscape,下载好之后自己可以修改蓝图和场景,但这个只能在window下载,然后复制到Linux里面再进行修改,需要自己加入airsim插件。
(3)自己在linux下手动搭建一个环境工程,然后将需要环境中的contents文件下的maps和其他文件导入工程,然后配置好airsim插件,貌似在一个pc上的工程不方便复制到另一个pc上,容易报错打不开。
2、airsim是作为unreal的插件来使用的,它俩基本没什么关系,在建好unreal工程后添加airsim插件并修改工程文件就可以了,linux下的使用教程的话参考官方的docs:
Build on Linux - AirSim
(注意这里,只需要把plugins文件夹复制到目标工程下,然后修改.uproject中的plugin选项即可加载airsim,注意了,一定要通过UE4Editor启动!!)
airsim操作流程:
(1)在使用airsim前需要先配置它的setting.json文件,具体教程在这里:https://microsoft.github.io/AirSim/docs/settings/可以选择飞机和车,也有不同传感器的配置,注意这里关于飞机的位置配置是相对与你unreal中的palyerstart而言的,在配置好json文件后记得在世界设置中将playstart的gamemod改为airsimgamemode即可运行。
(2)unreal环境有时候光照会出报错lighting needs to be rebuilt ,这个对仿真运行影响不大,可以通过重新build一下解决
(3)对于airsim中的car是可以用方向键盘控制的,而飞机必须通过API接口进行控制
(4)我使用的是python的API,具体教程在这https://microsoft.github.io/AirSim/docs/apis/,在使用速度控制无人机时候要特别注意yaw_mode参数的配置,它能够使飞机和摄像头产生特别的运动效果。常用的几个API函数:client = airsim.MultirotorClient() client.confirmConnection() client.enableApiControl() client.armDisarm()#控制和链接飞机
takeoffAsync()#起飞
moveToPositionAsync()位置控制,不太精确,基于PD的控制,经常会发生漂移
moveByVelocityAsync()速度控制,相比位置控制我用的更多
getMultirotorState()里面包括了无人机的各种信息,位置姿态传感器gps等等
另外注意.join()的用法,这些API函数的底层都是基于协程的,当前的操作会打断下一次的操作,而.join()是控制API在完成一次操作后再进行下一次操作,看需求使用。
(4)control_by_ros文件是我已经写好的接收Twists数据来控制飞机运行的,但是有时候会出现飞机在z轴方向上的高度下降,还没解决好,对slam可能会有点影响。
(5)目前slam接收图片用的是官网的airsim包,但是帧率有点慢,可以自己写一个c++的ros包,调用getStereoAndDepthImages这个API,教程:https://microsoft.github.io/AirSim/docs/image_apis/,使用这个API可以自己去获取图像信息,我用python试了一下貌似对于帧率提升没有太大帮助,可能c++效果会更好,后期实在不行的话可以这样尝试更改,有人告诉了我修改viewmode,亲测可以很大幅度提高帧率!!!
页:
[1]