#ue4fest#ue4fest
UNREAL FEST EXTREME 2020 WINTER
#ue4fest#ue4fest
自動運転車両開発における
UE4の活用事例
株式会社理経
石川大樹、田村貴紀、KHUSINOV Jakhongir
xsg@rikei.co.jp
#ue4fest#ue4fest
株式会社 理 経
新規事業推進室長
石川 大樹
自己紹介
2015年理経入社。
入社後「UE4を活用したVR開発」
に特化した新規事業部を立ち上げる。
自動車、不動産など幅広いエンター
プライズ向けVRの企画立案・開発
を担う。
株式会社 理 経
XRグループ長
田村 貴紀
2007年理経入社。
部品機器やシステムの営業を経て、
2017年からVR事業の営業責任者。
現在は自動車業界を中心に担当し、
車両開発に使われるシミュレーショ
ンソフトウェアとUE4連携に特化。
株式会社 理 経
UE4 シニアエンジニア
KHUSINOV
Jakhongir
2010年にウズベキスタンから来日。
映像制作会社でUE4の開発に従事し
た後、2018年理経入社。
防災、車両開発用VRなどの幅広い
エンタープライズVRの統括エンジ
ニアを務める。
#ue4fest#ue4fest
実績
株式会社SUBARU 様
自動運転車両開発向けシミュレーション空間
日立オートモティブシステムズ株式会社 様
自動運転技術の可視化にVRを活用
#ue4fest#ue4fest
消防士訓練用VR開発
東京大学バーチャルリアリティ教育研究センター
・東京理科大学・横浜市消防局と共同研究
実績
EPIC MegaGrants 受賞
コンテンツ海外展開
促進事業
Oculus
ISV Program
防災訓練用に羽田空港ターミナルを製作。 西日本豪雨を再現し、広島県に納入。
#ue4fest#ue4fest
UE4を活用した自動運転車両開発の現状
本日のテーマ
リアルタイムシミュレーション
センサーフュージョン
リアルとバーチャルの差
ADAS・自動運転
HILS・HMI
<対象領域>
#ue4fest#ue4fest
ADAS ドライバー補助機能の総称(追従、レーンキープ)
HILS 複数のシミュレーションツールを連携させ開発する手法
Carsim 世界的に有名な車両挙動シミュレーションツール
HMI ヒューマンマシンインターフェイスの略で人と車を繋ぐ機能
用語解説
#ue4fest#ue4fest
#ue4fest#ue4fest
一般的な車両開発
路面景観
車両 シナリオ
センサー交通流
企画・コンセプト
シミュレーション
実装
#ue4fest#ue4fest
UE4の活用
実空間 UnrealEngine4 仮想空間
#ue4fest#ue4fest
シミュレーション連携例
自動運転プロトタイプ
車
自動運転コントローラ認識シミュレータ 車両シミュレータ
知能ユニット 制御ユニット ロケータ
CarSim路面モデルOpenDRIVE or 座標データ
車両開発用仮想空間
UnrealEngine4
①仮想カメラ映像
画像 路面モデル
路面モデル構築
②制御情報
③周辺情報
④各種オブジェクト位置情報
道路モデル
#ue4fest#ue4fest
認識シミュレータの必要要件とは?
12
実空間は二つの連続性が担保されており、それは“空間”と“時間”になります。
その上でAIが認識可能となる時間や空間の変換機能(入出力機能)が必要になります。
認識シミュレータでも空間、時間、入出力の3要素を表現する必要があります。
入出力
時間空間
入出力 : カメラやレンズの再現
時間 : 外部システムとの同期(HILS / MILS / SILS)
空間 : VR空間のオブジェクト、反射及び周辺光
#ue4fest#ue4fest
路面作成
Atlatec社路面測定機器
空間
• 路面制作が重要な理由
• Carsim / OpenDriveに対応 トベルーラ ベタン
#ue4fest#ue4fest
• (CSVの中身)路面データをCSVに出力
• CSVからInstaced Static Meshを作成し、
Static Mesh として保存
• Instaced Static Mesh作成はC++クラスで実装
• FBXでエクスポート→3dsMax等で使用
路面作成
空間
#ue4fest#ue4fest
• クライアントによって点群の粒度が異なる
• 要求される粒度に変換する機能を作成
• 適度な粒度に調整可能
路面作成 粒度
空間
#ue4fest#ue4fest
• レンズ実現が必要な理由
• 画角と対象物の大きさが変わるよって説明
入出力⇒レンズの再現
入出力
#ue4fest
実車カメラの映像 Unreal 画角を実に合わせる
Unreal対象の大きさを実に合わせる適切なレンズ歪み
17
レンズ実現が必要な理由
入出力
#ue4fest#ue4fest
• レンズ再現を実現するために何をしたか
レンズ再現
入出力
#ue4fest#ue4fest
• レンズを実現するために何をしたか
→ PostProcessMaterialを作った
レンズ再現
ViewSizeからビュー取得
+
UVを作成
↓
UVを極座標に変換し出力
入出力
#ue4fest#ue4fest
レンズ歪み低い レンズ歪み高い
レンズ再現
お台場
個々のレンズ歪みをCineCameraで再現
入出力
#ue4fest#ue4fest
• 課題点:歪みが高くなる事による品質低下
レンズ再現
入出力
#ue4fest#ue4fest
レンズ歪み低い場合 レンズ歪み高い場合
レンズ再現
• ビューをそのまま加工しているためノイズが発生
→別途テクスチャを加えて多少軽減できるが効果は限定的
入出力
#ue4fest#ue4fest
外部システムとの同期
時間
A
B
C HILS
• 生成する映像は何もしないとずれる。
#ue4fest#ue4fest
同期を行うには、nDisplayを利用
nDisplayで行った事。
• カメラ対応付け
• PostProcessMaterialの個別適用
• イベントクラスタの設定
• 外部システム同期確認
時間
https://docs.unrealengine.com/ja/Engine/Rendering/nDisplay/index.html
複数カメラ(nDisplay)
#ue4fest#ue4fest
• 自車両に対しCineCameraアクタを複数台親子付け
• 各カメラのビューをnDisplayに表示
• 4.25で追加されたBPノード”Set Camera”を使用
→自車両の各カメラにノードを対応付け
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• 4.25で追加されたBPノード”Set Camera”を使用
→自車両の各カメラにノードを対応付け
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• PostProcessMaterialの個別適用
• 複数種類ある歪みレンズPostProcessMaterialを
各カメラに個別に設定する必要
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
→単純にカメラに充てると…
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
→単純にカメラに充てると…PostProcess反映されてない!
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• なぜか?
→4.25のデフォルトではCameraへのPostProcessMaterial
適用は非対応
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• なぜか?
→4.25のデフォルトではCameraへのPostProcessMaterial
適用は非対応
複数カメラ(nDisplay)
なんとかしたい
時間
#ue4fest#ue4fest
• 試行錯誤(その1)
→CineCameraを
CollisionBoxで囲った
PostProcessVolumeに被せる
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
→結果…全カメラのPostProcessが重なる!
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• 試行錯誤(その2)
→BPノード”Get node ID”でnDisplayノードを区別してから
PostProcessVolumeをEnabledにしたらよいのでは…?
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• あらかじめConfigfileで設定したノード名かをチェックして
Enabledにする
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
→結果…個別に適用できた!
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• 試行錯誤(まとめ)
→”Get node ID”で各nDisplayノードを区別できるため
画面ごとに個別の処理を行うのに有効
→他にもnDisplayのBPノードを使えばできることが増えそう
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• クラスタイベントの設定
• クラスタイベント とは:
→nDisplay クラスタのすべてのノードにイベントに
同時に応答させる手段 (公式ドキュメントより引用)
→任意のイベントを各画面に対し同時に見えるように
するための仕組み
複数カメラ(nDisplay)
https://docs.unrealengine.com/ja/Engine/Rendering/nDisplay/ClusterEvents/index.html
時間
#ue4fest#ue4fest
• WHY
→HILSから一定周期で送られてくる全車両の位置情報を
全ノードに反映させるため
(無いとマスターノードしか車が動かない)
• HOW TO
→車両ごとに位置情報をまとめて全ノードに送信、
情報を受け取ったらSet Actor Location And Rotation
ノードで配置
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• おおまかな設定方法(詳細はドキュメント参照)
1. BP内でイベント受信準備
2. 送りたい情報をString型のMapにまとめ、Emit cluster
eventノードで送信
3. On Cluster Eventノードで受信時に情報を受け取る
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• 注意:クラスタイベントの連続送信
• 内容が同じMapを連続して送信すると最新のものだけ
送信される(nDisplay最適化のための仕様)
→同じ情報を送る際は毎回異なる値(or文字列)を
Mapの中にいれておく必要あり
複数カメラ(nDisplay)
時間
#ue4fest#ue4fest
• 外部システムと連携する上で同期が重要
• Carsim,Simulinkの連携
→汎用性が高く高速なUDP通信を使用
• UE4側での送受信をBPで行えばすばやく実装可能
リアルタイム同期(データのやりとり)
時間
#ue4fest#ue4fest
• 画像認識ではコントラスト比で物体を認識する手法もあるため
実映像のコントラストに寄せる必要がある
→ヒストグラムに着目した
リアル絵評価
空間
人間の目 ⇔ AIの目
#ue4fest#ue4fest
• Adobe社Photoshopでヒストグラムを見てみると…
→実空間とVR空間は全く違うヒストグラムがでてきた。。
→LUTを調整すれば実画像のコントラスト比を再現できる
• より実映像に近い絵作りができる
リアル絵評価
空間
#ue4fest#ue4fest
加工前 加工後
リアル絵評価
空間
#ue4fest#ue4fest
• アノテーションとはAIが物体を認識する際の枠付け行為
• UE4で再現したもの(Box,自車両との距離,etc…)
• 複数オブジェクトに対してリアルタイムで認識
アノテーション
空間
#ue4fest#ue4fest
• アノテーションBoxの作成
→Box用の赤枠テクスチャを用意し、
マテリアルを作成
→人物を囲うようにPlaneを配置、
Tickでカメラに対し常にYawを90度
回転させ平面に表示
アノテーション
空間
#ue4fest#ue4fest
アノテーション
#ue4fest#ue4fest
LiDARシミュレーション(monoDrive)
49
• センサーモデルに基づいたシミュレーション
• シミュレーション結果をリアルタイムにVR空間へ反映
• 各オブジェクトの物質的性質も再現
• UnrealEngine4連携を主軸に考えた製品
#ue4fest#ue4fest50
#ue4fest#ue4fest
• HMI(Human Machine Interface)開発
• ユーザビリティ評価
• 温度の再現
HMI開発
#ue4fest#ue4fest
ユーザビリティ評価
提供:株式会社FOVE
脳活動時系列変化
グラフ右センサー(脳血流)
左センサー(脳血流)
心拍
加速度(6軸)
#ue4fest#ue4fest
ユーザビリティ評価
デザインA デザインB
#ue4fest#ue4fest
温度の再現
• 没入効果を高めるため、温度デバイスをUE4に連携
• 映像に合わせてリアルタイムに制御
• 10~45度を数秒間で調整
#ue4fest#ue4fest
VR内でUI/UXデザイン評価
・開発過程の自動運転システムを再現
・ヒヤリハット・インシデントを再現
オプション機能 : 天候、日照条件などの変更
協力:株式会社NeU
#ue4fest#ue4fest
自動運転車両開発における
UE4の活用事例
株式会社理経
石川大樹、田村貴紀、KHUSINOV Jakhongir
xsg@rikei.co.jp

自動運転車両開発におけるUE4の活用事例 | UNREAL FEST EXTREME 2020 WINTER