近期就要开题了,毕设的方向最终敲定为:利用RL算法end-to-end训练UAV系统完成目标跟踪或者导航等任务,方向属于交叉领域,主要涉及的方向包括RL,DL,UAV,control,sim2real等。
1、仿真环境调研
关于仿真环境的选择,主要针对于开源和free的项目,付费项目的效果更好但是开发性或许差一些,而且本人穷小子(实验室也么得啥经费)。
调研了几个开源的仿真环境,并做了对比:
gazebo,体积小运行快,视觉效果比较差,物理规则较为简单,但是,是ros原生的仿真器,对于后期系统部署会很方便,而且可开发性很强,API主要接口是c++和ros。
unity,几款流行的物理引擎之一,画质清晰,一些开源项目中是用unity的,但是貌似用的人没有下面的UE4多,所以没有过多调研,放下一些项目链接:
PS:现在unity也有airsim的支持了
mbaske/ml-drone-collectiongithub.com/mbaske/ml-drone-collection
phachara-laohrenu/DQN-ObstacleAvoidance-FixedWingUAVgithub.com/phachara-laohrenu/DQN-ObstacleAvoidance-FixedWingUAV
第二个项目很适合做路径规划任务。
UE4+airsim,这个应该是比较多的大型项目的标配了,也是毕设所采用的主要环境,开发性比较强,而且微软的文档维护的也比较好,各种API用着也还可以(有时候也会觉得蛋疼),优点是文档全,photorealistic,适合DRL训练,后期开发性也不错,开源项目很多可以学习和开发,缺点是对平台要求挺高(电脑最好给力点),运行比较慢,项目版本问题有时候会让人很蛋疼,后期切换到实际系统可能会费很大劲。
一些开源项目的链接:
aqeelanwar/PEDRAgithub.com/aqeelanwar/PEDRA
特别适合导航任务,场景丰富,同时飞机模型也比较多。
https://github.com/harvard-edge/airlearninggithub.com/harvard-edge/airlearning
最近找到的一个宝藏项目,非常适合DRL的开发场景,同时集成了env setting和gym接口,天然支持了domain randomization,对于强化学习算法来说,data的质量应该是非常高的,训练起来个人觉得成功率也会比较大,所以作为了毕设的主要环境进行后续开发。可惜的是作者貌似不再维护了,版本停在了UE4的4.18.3。
2、UE4+airsim环境搭建
建议先读一下Air Learning这个项目的论文:
https://arxiv.org/pdf/1906.00421.pdfarxiv.org/pdf/1906.00421.pdf
整个环境的框图如下:

而且论文中提及了HIL的设计思路,非常清晰合理。
由于之前有UE4+airsim的使用经验,所以环境配置还是较为轻松的:
单字卓:仿真器--airsim9 赞同 · 7 评论文章
简单介绍下流程:
我是在Ubuntu下配置的
(1)安装UE4,版本4.18.3:
$$
git clone -b 4.18 https://github.com/EpicGames/UnrealEngine.git cd UnrealEngine ./Setup.sh ./GenerateProjectFiles.sh make
$$
(2)安装project:
$$
git clone https://github.com/harvard-edge/airlearning-ue4.git
$$
这里要先编辑AirLearning.uproject,删除这个地方
$$
"Plugins": [ { "Name": "AirSim", "Enabled": true } ],
$$
然后才可以compile这个项目,遇到下图的话:

ok,可以成功地打开项目了。
(3)下载airsim
$$
git clone -b rpc-base-reset-plus-energy https://github.com/srivatsankrishnan/AirSim-1.git ./setup.sh ./build.sh
$$
setup.sh这里可能会遇到问题,修改setup.sh下面eigen的地方为
$$
rm -rf ./AirLib/deps/eigen3/Eigen echo "downloading eigen..." wget https://gitlab.com/libeigen/eigen/-/archive/3.3.2/eigen-3.3.2.zip unzip eigen-3.3.2.zip -d temp_eigen mkdir -p AirLib/deps/eigen3 mv temp_eigen/eigen*/Eigen AirLib/deps/eigen3 rm -rf temp_eigen rm eigen-3.3.2.zip
$$
很好,airsim安装好了之后,将Unreal/Plugins copy到workspace/airLearning-ue4下即可,接下来编辑AirLearning.uproject为
$$
{ "FileVersion": 3, "EngineAssociation": "4.18", "Category": "", "Description": "", "Modules": [ { "Name": "JsonParsing18Version", "Type": "Runtime", "LoadingPhase": "Default", "AdditionalDependencies": [ "Engine", "AirSim" ] } ], "Plugins": [ { "Name": "AirSim", "Enabled": true } ], "TargetPlatforms": [ "MacNoEditor", "WindowsNoEditor" ] }
$$
接下来打开工程这一步很重要,不要直接打开project,否则是启动不了的,需要进到UnrealEngine installation folder and start Unreal by running ./Engine/Binaries/Linux/UE4Editor,需要启动UE4Editor,然后点击浏览,选择打开AirLearning.uproject,这个时候会弹出一个框图,选择options中的原位转换,这时才会rebuild相关的文件,等待片刻,就可以了。

(4)设置Game Mode

好了,到这一步,build+start就可以了,环境配置完成。