Civil Engineer's Forum-FORUM8
このページをスタートページに設定する QR

Facebook - FORUM8

Twitter - FORUM8

YouTube - FORUM8

 サイトマップ | ご利用条件 | お問い合わせ | 英語翻訳サイト | Japanese | English | Korean | CHS/CHT | Vietnam | Francais | Europe

12
Delphiによる応用開発事例
ここで紹介するシミュレータは、近未来のインフラ協調型安全運転支援システムを体験するためのものです。インフラ協調型安全運転支援システムは、既存の道路をベースに最先端の情報通信技術(ICT)を駆使し、人・道路・車を一体的なシステムとして構築するもので、その情報を用いることで運転がどのような状態となるかを体験できます。トヨタ自動車株式会社様と開発を行った事例となります。
  シミュレータとシステムの概要

 このシステム全体の概要は下図の通りです。マンマシンインタフェースは【写真01】のインタフェース部分に当たりインタフェース部に対してデータの受信、送信を分けています。

(1) 体験シミュレータ3画面
   交差点周りの走行環境表現力向上
(2)「インフラ協調型安全運転支援システム」体験機能
    近い将来の量産化を目指し開発中のシステムを未来感を持たせ表現
    信号見落とし防止支援(路車間)
    接近車両検知システム(車車間) など
(3) 走行環境の整備
    リアルな街環境の表現(名古屋駅周辺〜豊田市)
    さまざまなアクシデント発生
    シナリオの織り込み
(4) 車両運動モデル
   −高精度なCarSim実装
(5) 6自由度のモーション装置付きシミュレータ
写真01 体験シミュレータ3画面

 また、インフラ協調型安全運転支援システムとして以下の項目を体験できるようになっています。
  • 歩行者見落とし防止
  • 緊急車両情報提供
  • 右折時衝突防止
  • 追突防止情報提供
  • 信号見落とし防止
  • 左折巻き込み防止
  • 一時停止見落とし防止
  • 右折時横断歩行者見落とし防止


 シミュレータのシナリオ機能

 このシミュレータを作成するにあたっては、UC-win/Road の重要な機能の1 つとして「シナリオ機能」が挙げられます。UCwin/Road 体験シミュレータでは、時々刻々変化していく走行シーンの中で、あらかじめ決められたさまざまな動きをモデルに設定できます。たとえば、以下のようなストーリーのシーンを自由に設定することができ、シミュレータで表現したい事象を簡単に作成することができます。

  • 信号が必ず赤信号に変わる
  • 横から車が飛び出してくる
  • 渋滞が発生する
  • 人間が歩行を開始する

 シナリオとイベントの関係と流れは、以下の【図03】のようになります。

図03 シナリオとイベントの関係


 CarSim との連携

 このシステムの特徴の1 つとして、CarSim との連携が挙げられます。CarSim は車両の物理的な挙動を計算するソフトウェアで、自動車メーカーや自動車部品メーカー、タイヤメーカーや大学、研究機関などで利用されています。運転の挙動をシミュレータに伝えるために、自車両の車両運動モデルとしてこのCarSim を使用した開発が行われました【図04】。

図04 CarSim とシミュレータとの連携画面

 UC-win/Road SDK で車両運動計算を独自のものに置き換えるには、SDK のサンプルに収録されている「VehicleDynamicsSample」を利用します。このサンプルにある「VehicleDynamicsPhysicsModel.pas」の「procedureDoPhysics( const dTimeInSeconds : Double )」メソッドが車両運動計算部になるので、この部分を変更することにより、使用したい車両運動計算の変更が行えます。

 CarSim とのデータの連携
UC-win/Road → CarSim CarSim → UC-win/Road
車体情報
車体の位置
車体の状態(ロール、ピッチ、ヨー)
タイヤ位置の情報(全タイヤ数分)
タイヤ接地面位置
タイヤ接地面の路面の傾き
タイヤ接地面の摩擦係数
運転情報
ハンドル舵角
アクセル
ブレーキ
車体情報
車体の位置
車体の状態(ロール、ピッチ、ヨー)
速度情報
加速度情報
角加速度情報
速度情報
角速度情報
運転状態の情報
エンジン回転数
ギア状態
ステアリングホイールトルク
ハンドル舵角


 シミュレータハードとの連携

 このシミュレータはスバルカスタマイズ工房の6軸モーション付きのドライビングシミュレータを使用しています。このシミュレータのハードウェアとは、下記の内容をそれぞれのインタフェースで接続しています。

UC-win/Road とシミュレータ間の入出力データ
インタフェース データ
RS-232C ハンドル情報&制御
6軸モーション制御
アナログ(CONTEC) アクセルペダル
ブレーキペダル
スピードメーター
タコメーター
デジタル(CONTEC) 割り当てボタン5個
シートベルト着用
シートベルト制御

 アナログ情報とデジタル情報は、CONTEC 社のアナログボードとデジタルボードを使用しています。CONTEC 社のボードのSDK に、Delphi で使用するためのヘッダファイルが付属しているので、それを利用して制御しています。


 運転情報の反映

 ステアリング情報は、UC-win/Road では− 1 〜 1(左〜右)の値を使用し、アクセル・ブレーキは0 〜1の値を使用します。この値をSDK からセットするにはApplicationServices にアクセスし、SetSteering、SetThrottle、SetBrake にてセットすることが可能です。

if Supports(ApplicationServices, IF8ApplicationServices,winRoadApplication) then
  begin
  // ステアリングのセット
  winRoadApplication.mainForm.driver.SetSteering( Max(-1, Min(1,p_Param.CarState.Stear) ) );
  // アクセルのセット
  winRoadApplication.mainForm.driver.SetThrottle( Max(0,Min(1,Throttle) ) );
  // ブレーキのセット
  winRoadApplication.mainForm.driver.SetBrake( Max(0,Min(1,Brake) ) );
  end;

 運転開始状態になっていないと、driver の値がnil となります。その場合に値をセットしようとするとエラーとなるため注意しましょう。


 鉄道シミュレータの開発

 ここでは、Delphi によるUC-win/Road を使用した応用開発事例として、鉄道シミュレータの構築について説明します。特に、運転士のトレーニングを目的とした運転席シミュレータや、列車運行シミュレータとの連携について紹介します。


 運転席シミュレータの開発

 運転席シミュレータ、運転士のトレーニングを目的としています。実車の運転席からの情報をもとにVR 空間上を移動することで、電車の運転をトレーニングすることが可能となります。


仕様の検討
 この事例では、運転席システム(外部PC)からの情報を受け取り、その情報をもとにリアルタイムでVR 空間を移動していくというものです。開発については、以下のような項目についての取り決めが行われました。


・運転席の位置をどのように指示するか
・情報の通信方法
・カメラ位置の更新方法
図05 運転席視点

 UC-win/Road には空間をリアルタイムでVR 表示する機能があります。VR 表示に必要な情報はカメラの「位置」と「向き」の2 つです。シミュレーション対象が移動する場合、この2 つの情報を算出する処理を追加する必要があります。自動車を例にすると、UC-win/Roadが持っているドライブシミュレータ機能では、ゲームコントローラのInput 情報(ステアリングとアクセル/ブレーキ量)からリアルタイムに位置と向きを計算、移動するしくみ(車両ダイナミクス【注1】が備わっていますが、電車の動きを算出する仕組み(鉄道車両ダイナミクス)は備わっていません。そこで、UC-win/Road では線形の開始点からの距離と速度を情報として受け取ることとしました。

 情報の連携については、パソコン同士を接続するためにTCP/IP ネットワークを使用します。これについては通信プロトコルと通信フォーマットを決定することで解決しました。UC-win/Roadでは道路線形上の開始点からの距離より、3 次元座標と線形の向きを算出することができますが、これをネットワークで受信する毎に更新していくことで、移動の処理を実装しています。ただしこの処理では、受信周期が一定でないと滑らかな動きになりません。そこで、速度情報を用いて一定間隔ごとの位置を計算し、位置の補間を行っています。

注01 車両ダイナミクスを決める要素は、運転席の情報以外に、路面の勾配や摩擦、車両重量、路面状況などもあります。

開発のポイント
 操縦に関するシミュレータについては操縦対象のダイナミクスが重要です。UC-win/Road ではダイナミクスの結果からも連携することができました。

 リアルタイムで映像を再生するには、データを受信するタイミングと描画するタイミングを調整する必要があります。描画の周期が正しくても、情報の周期が乱れる場合はコマ落ちしてしまいます。具体例を挙げると、描画フレームレートが60fps、データの周期10Hz というシステムの場合、6 フレームはカメラ位置が変わらないため同じ映像を表示したままとなり、結果的に10fpsの見え方と同じとなってしまいます。これを解消するために、データを受信してから経過した時間を基に、フレーム毎のカメラ位置を速度から計算し、なめらかな動きが保てるようにしています。

図06 対向車両


 列車運行シミュレータとの連携(VR 表現)

 列車運行シミュレータは、鉄道ダイヤや車両の諸元から列車の動きやポイントの操作、信号機現示の変更をシミュレートします。この場合は、先ほどの運転シミュレータで使用した車両位置情報の他に、鉄道環境に関する情報(信号機、ポイント、自車以外の列車、遮断機など)を連携する必要があります。

仕様の検討
 まず、仕様について検討してみます。運転シミュレータの機能の他に、3D モデルの挙動を制御する必要があります。このため、開発についての課題は下記のようになります。

・どのように複数の列車を動かすか
・どのように3D モデル(踏切、ポイント、信号機)を動かすか
・運転席の位置をどのような情報で表現するか
・データの通信方法


図07 鉄道運行シミュレータからの連携イメージ

VR 表示の更新方法
 カメラの移動処理は運転シミュレータと同じように処理できますが、列車モデルを動かすときには以下のような項目を考慮する必要があります。

・列車モデルは、複数車両で編成されている
・カーブでは線路のカント(横断面の傾き)がある
・列車モデルがカメラの前を塞がないようにする


 列車モデルを動かすには、列車モデル毎に座標と傾きを設定します。手順は次のようになります。複数車両ある場合は、次の車両の原点を計算してから2 以降を繰り返します。こうすることで、写真のような車両の表現ができるようになります。

手順1:列車モデルの原点を計算、セットする
手順2:列車モデルの向き(Yaw)を計算、セットする
手順3:列車モデルの傾き(Roll)を計算、セットする


図07 列車の通過時はカントに応じて車両が傾く 図08 複数車両のすれ違いを確認できる

 先ほど紹介したように、UC-win/Road では3D モデルの位置と姿勢を指定することができますが、パーツ毎に動きを設定し、キーボードや内部イベントに反応して動かす方法もサポートされています。この機能を外部からコントロールできるように機能を追加し、仕様を拡張することとしました。これにより、遮断、ポイントの切り替え、信号機の変更処理を外部コントロールできるようになります。

開発のポイント
 鉄道にはダイアグラムという運行計画があり、その他に電車の性能や各種のイベント、環境などをVR で表現することが重要となります。そのため、運転席だけでなくさまざまな視点から、列車の動きを見せることがポイントになると考えられます。

図10 駅カメラからの映像模擬

有償セミナーのお知らせ
 エンジニアのプログラミング入門セミナー  CPD 認定
日時 2013 年 4 月4 日(木) 9:30 〜 17:00
受講費 1 名様 \18,000(税別)
本会場 フォーラムエイト東京本社 GTタワーセミナールーム
TV会議システムにて東京・大阪・名古屋・福岡・仙台同時開催

     
前ページ    インデックス    次ページ
(Up&Coming '13 春の号掲載)
戻る
Up&Coming

FORUM8


お問合せ窓口




[ ユーザー紹介 ]
櫻井工業株式会社
株式会社TEAM IWAKIRI PRODUCTS
[ 開催報告 ]
第17回FORUM8デザインフェスティバル






>> 製品総合カタログ


>> プレミアム会員サービス
>> ファイナンシャルサポート

最近リリースした製品
3次元鋼管矢板基礎の設計計算(部分係数法・H29道示対応) Ver.4
UC-1・UC-1 Cloud 統合版 BOXカルバート
電子納品支援ツール Ver.17
柔構造樋門の設計・3D配筋 Ver.17
建築杭基礎の設計計算 Ver.10

キャンペーン実施中
地方創生・国土強靭化 FORUM8セミナーフェアキャンペーン
レンタルアクセス同時購入キャンペーン・過去レンタルキャンペーン
Shade3D・F8VPS 20%OFFキャンペーン

セミナー・イベントカレンダー
開催間近のセミナー
4/2  ブロックUIプログラ
  ミングツールで学ぶ
  ジュニア・プログラミング
4/3  動的解析
4/4  下水道耐震設計体験
4/5  Shade3D-F8VPS
  メタバース入門

ソフトウェア/支援サービス
VRソフト(バーチャルリアリティ)
《UC-winシリーズ》
・道路・シミュレータ
・ドライブ・シミュレータ
・マイクロ・シミュレーション
・避難解析・シミュレーション
>>その他VRソフト
FEM解析ソフト
・3次元プレート動的非線形解析
・2次元動的非線形解析
・総合有限要素法解析システム
>>その他FEM解析ソフト
土木・建築・設計ソフト
《UC-1シリーズ》
・構造解析/断面
・橋梁上部工
・橋梁下部工
・基礎工
・仮設工
・道路土工
・港湾
・水工
・地盤解析
・CAD/CIM、建設会計
・維持管理・地震リスク
・建築
・船舶/避難
>>その他土木・建築・設計ソフト
クラウド
《スパコンクラウド®》
・スパコンクラウドサービス
《VR-Cloud®》
・リアルタイムVRシステム
解析支援サービス/サポート
・UC-win/Roadサポートシステム
・設計成果チェック支援サービス
・Engineer's Studio®解析支援
・地盤解析支援サービス
・EXODUS/SMARTFIRE解析支援
・xpswmm解析支援サービス
・建物エネルギーシミュレーション
・3Dレーザスキャン・モデリング
・3D模型サービス
・3D報告書・図面サービス
>>その他支援サービス
各種ソリューション
・耐震診断/解析
・鋼橋設計
・橋梁新工法
・建築設計
・自治体
・医療系VRシステム
・パーキングソリューション
・ECOソリューション
>>その他ソリューション