目前游戏产业和电影的快速发展,有很多游戏引擎的支持,大型3D游戏画面越来越逼真。 比如最近流行的<绝地求生>,和一些UG电影的中的特效有的时候可以达到以假乱真的。我们试想一下,把这些游戏引擎引入我们无人系统的开发,尤其是涉及到光源,物理碰撞,物理力学特性等情况下。传统手段第一就是真机测试,第二引入matlab来做一定的仿真。都不能很好的解决光源,物理碰撞,物理力学特性,和3维真实的情况,随着无人机系统所要解决的问题越来越复杂,面临的场景越来越复杂,基于游戏引擎获得逼真仿真环境越来越有必要,可以节约大量研发成本和研发时间。
我们通过游戏引擎可以解决下面的问题。1, 首先是光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。2, 运动系统,位置关系运动系统,各个模块之间相对运动的关系,坐标系之间的关系。3, 提供物理系统,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。4, 碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。随着这些游戏引擎的发展,就可以极大程度的获得高度逼真的仿真场景。在无人机领域我们可以模拟一架无人机在一个场景里面飞行,在影像效果里面我们可以模拟不同光源条件下,测试无人机视觉相关的功能,比如模拟双目VIO,双目避障,光流等在室外光源,黑暗场景等情况的算法表现和特性。在物理碰撞探测系统中,我们可以构建障碍物场景,遮挡场景对GPS信号的影响,来模拟多传感器融合的场景。 做一些图像识别和追踪,图像引导降落等和图像相关的算法,都可以在Airsim里面建立使用起来。
还有就是可以高度还原无人机的飞行场景,做一些逻辑仿真和任务仿真,在无人机比赛中我们可以搭建一个模拟的比赛场景,比如迷宫等。甚至可以搭建出一个和真实使用场景一模一样的仿真环境,不断的测试代码的稳定性和测试BUG,降低研发成本,提高研发效率。
自动驾驶仿真软件列表 这些软件基本上都是开源的,这类仿真的弱项是传感器,但是视觉相关的传感器仿真还是很逼真的,目前没看到特别好的激光雷达方案,另外对计算力要求很高,毕竟渲染的效果在那里。 下面几个是基于游戏引擎的主要是Unity和虚幻4
Udacit的引擎是Unity,开源: Udacity出品的基于Unity的自动驾驶仿真平台,功能比较简单,可以自行编辑地图和车辆模型,同时有不少在此基础上进行功能补充的项目。Github上大多数有simulator标签的自动驾驶项目其实都是基于这个或与其有关的。 CARLA Simulator的引擎是Unreal4(虚幻4),开源: 看视频效果不错,有激光雷达的仿真 AirSim的引擎是Unreal4,开源: 微软出的,除了车还能做四轴的仿真,刚刚推出文档还不完善,PX4无人机是支持的,虚幻引擎强大的光影渲染效果使得仿真效果很好。 DRL Based Self Driving Car Control的引擎是Unity,开源: 不错的仿真软件,然而只仿真控制和传感器,不仿真环境渲染
基于机器人仿真软件 原本作为机器人仿真软件使用,能够很轻松的改为自动驾驶仿真软件,这类软件的特点是比较好的动力模型,和各种传感器的仿真。相应的光影渲染效果会比较差。
我们在Airsim做了一些工作使他可以在ROS接口中工作,可以借助ROS强大的资源结合PX4做一些算法研究:
项目地址: https://github.com/Microsoft/AirSim 关于PX4无人机在AirSim的配置: https://microsoft.github.io/AirSim/docs/px4_setup/ Airsim里面传感器的添加也比较容易,用json脚本就可以。 Airsim的ROS接口和PX4可以对接上,那么固定翼,多旋翼,无人车的仿真变的都有可能实现了,ROS中有大量的路径规划算法都可以使用起来。尤其是涉及到光影效果的地方,会有很大的帮助。
同时我们阿木学院提供了Airsim的课程,链接如下:
https://m.course.amovauto.com/#/article/5ce790142a664f6fb7f77f1d
我们的Airsim的中级高级课程也即将发布,大家可以关注!
|