この記事はRCCアドベントカレンダーの6日目の記事です.
5日目担当のzitrone_01くんお疲れ様でした.
RCCアドベントカレンダー6日目担当mekapikuです.
タイトルは詐欺です.進捗ダメです.
さて,本題.
僕は自動車に関することを研究しているのですが,その一環としてドライビングシミュレータ(以降DS)をUnityで制作すると意外と良かったという話をします.
まず,DSというものについてですが,自動車の運転を仮想的に再現できる機器やシステムを指します.トヨタでは体育館サイズの建物をまるごとひとつ使い切る超巨大なDSを保有していたりします.すごい!!!
http://www.toyota.co.jp/jpn/tech/safety/concept/driving_simulator.html
そのDSですが,小規模のものであればハンドルやアクセルブレーキなどの機器さえ揃えることで,普通のパソコンにソフトウェアを導入するだけで構築できるようになっています.
例えば,DS用ソフトウェアで特に有名なものとして,バーチャルメカニクス社製のCarSimというがあります.研究でもこれを使っています.CarSimは車両の挙動計算を行ってくれるソフトウェアで,非常にリアルで細かい挙動を再現出来ます.ちなみに有料ソフトウェアです.
一方で,CarSimは高性能故に,道路状況の設定が難しかったり,車の機能を拡張したい(レーザーセンサを追加するなど)となると複雑なプログラミングや追加のオプションが必要になるなど,扱いに慣れや技術が要求されます.
そこで今回,Unityと呼ばれるゲーム用フレームワークを用いて,ゲームを作るようにDSで実験環境を構築できるようにしたいと考えました.ちなみにUnityは無料版があります.
Unityはゲーム製作用に作られているだけあり,美しい映像表現や複雑な衝突判定に対応しています.また,ゲームのステージを制作するためのエディタも用意されているので,初心者でも簡単にステージの制作ができるようになっています.
これらをDS向けに活用することで,例えば複雑な道路環境を簡単に制作したり,自動車にレーザーセンサを追加したりといったことも簡単に行うことができるはずです.
今回,システムをより汎用的で簡潔なものにするために,Simulinkというソフトウェアを用いています.Simulinkでは高度な数学的処理が簡単に行えるため,CarSimからの計算結果をリアルタイムに調節してハンドル反力などに適応することができます.ちなみにSimulinkはMatlabという製品の一部で有料です.
そして実際に完成したDSの映像がこれです.
[Dropbox ムービー]
今回はサンプルとしてUntiy Assets StoreからCar Tutorialのステージをお借りしました.既存の3Dデータを道路環境として認識し,シミュレーションが行えています.多少プログラミングが必要になりましたが,それでも随分と実験環境の構築は簡単になりました.
以上,Unityを用いてDSを制作した話でした.DSに限らずUnityは様々な研究に応用できるツールだと思うので,研究に使うツールを選びかねている方はご検討されてみてはいかがでしょうか.
そして現在,僕は制作したDSを用いて卒業研究を行っている最中です.Unityで論文執筆が秒速になることはありませんが,頑張りたいと思います.
明日の発表者はシークレットのようです.
明後日の発表者はbitter_foxくんです.