目前遊戲產業和電影的快速發展,有很多遊戲引擎的支持,大型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,開源:
不錯的仿真軟體,然而只仿真控制和傳感器,不仿真環境渲染
基於機器人仿真軟體
原本作為機器人仿真軟體使用,能夠很輕鬆的改為自動駕駛仿真軟體,這類軟體的特點是比較好的動力模型,和各種傳感器的仿真。相應的光影渲染效果會比較差。
Morse Blender 開源 Blender是一個遊戲引擎,但由於這個軟體本來是用於機器人仿真的,姑且放入這個列表裡
Gazebo 多引擎 開源 ROS標配
Webots 多引擎 商業
我們在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的中級高級課程也即將發布,大家可以關注!