Unityでシミュレーション環境を作りintdashと連携させるサンプルです。
このサンプルは、車と走行空間のモデルを読み込み、シミュレーション空間内の車に設置されたカメラからの映像や車の位置情報をintdashサーバーに送信します。
また、intdashサーバーから車のコントロール情報も受信します。コントロール情報を受信すると、空間に設置された車が動きます。
コントロール情報の送信方法に関しては IntdashControllerSample を参照してください。
このサンプルのデータフローは以下のとおりです。
- 接続先intdashサーバーのURL(例: https://example.intdash.jp )
- Simulator内の車オブジェクトに設定するエッジの認証情報
- UUID(例: 11111111-1111-1111-1111-111111111111)
- クライアントシークレット または APIトークン
- ControllerのエッジUUID(例: 22222222-2222-2222-2222-222222222222)
サーバーとの接続にはクライアントシークレットまたはAPIトークンが必要です。
このサンプルではクライアントシークレットを利用します。
クライアントシークレットは、My Pageアプリ(例: https://example.intdash.jp/users/me/)の エッジ 画面でエッジを作成した際に発行されます。
詳細は intdash / Visual M2Mユーザーガイド の エッジアカウントを作成する で確認してください。
※上記はMy Page v3.4.0でクライアントシークレットを作成した場合の画像です。
サンプルのシーンは Assets/SimulatorSample/Scenes/SampleScene.unity にあります。
Hierarchy内の intdash/ApiManager を Inspector で確認すると IntdashApiManager がアタッチされています。
IntdashApiManagerのオプションに 1. で用意した情報を設定してください。
- Server URL:
接続先intdashサーバーのURL - Authorization Type:
Client Secret (Edge UUID) - Authorization Information
- Client ID (Edge UUID):
車オブジェクトに設定するエッジのUUID - Client Secret:
クライアントシークレット
- Client ID (Edge UUID):
Hierarchy内の intdash/Subscribers/Control を Inspector で確認すると Iscp_ControlSubscriber がアタッチされています。
オプションの Node Id (Edge UUID) に、 1. で用意した ControllerのエッジUUID を入力してください。
サンプルのシミュレーション空間に設置された車モデルを動かす方法は3つあります。
Hierarchyの Car モデルに 以下1, 2, 3のスクリプトがアタッチされていますので、スクリプト名の左にあるチェックボックスでオン/オフを切り替えて利用してください。
- Car User Control
- 本サンプルアプリで上でキー入力を受け付けて車を動かすスクリプト。
- 操作方法
- 前進: W
- 後退: S
- ハンドル操作: A or D
- ブレーキ: Space
- ハンドブレーキ: Shift
- Car Iscp Control
- intdash Controller Sampleから受信したコントロール情報で車を動かすスクリプト。
- Car Random Control
- 自動でランダムに車を動かすスクリプト。
intdashサーバーへのデータの送信は、シミュレーション空間内でデータを作りだす DeviceScript と intdashサーバーに送信する Publisher で行っています。
サンプルは以下にあります。
- Script
- DeviceScript
Assets/SimulatorSample/Scripts/Device/JPEGCamera.csAssets/SimulatorSample/Scripts/Device/LocationSensor.cs
- Publisher
Assets/SimualtorSample/Scripts/intdash/Publishers/Iscp_JPEGPublisher.csAssets/SimualtorSample/Scripts/intdash/Publishers/Iscp_LocationPublisher.cs
- DeviceScript
- Hierarcy
- DeviceScript
Car/JPEGCameraCar/LocationSensor
- Publisher
intdash/Publishers/JPEGintdash/Publishers/Location
- DeviceScript
Publisherの設定には以下の3つがあります。
- Data Type
- Data Name
- Save To Server
データを送信する際に Save To Server をオンにするとintdashサーバーにデータが保存されます。
データ送信のための実装はシンプルです。
- IscpConnectionを用意する。(Awake時に
IscpConnection.GetOrCreateSharedInstanceで取得するか、事前にInspectorでIscpConnectionをセットしておきます。) - IscpConnectionでアップストリームを登録(オープン)する。
- DeviceScriptからデータを取得する、または取得するイベントを登録する。
- データを取得したら、送信先が要求するデータフォーマットに則りペイロードを作成する。(※ 送信先のデータフォーマットに合わせて自由に作成可能)
- 作成したペイロードを、用意しておいたアップストリームで送信する。
データの受信は Subscriber で行っています。
サンプルは以下にあります。
- Script
- Subscriber
Assets/SimualtorSample/Scripts/intdash/Subscribers/iSCP_ControlSubscriber.cs
- Subscriber
- Hierarcy
- Subscriber
intdash/Subscribers/Control
- Subscriber
データ受信のための実装はデータ送信より簡単です。
- IscpConnectionを用意する。(Awake時に IscpConnection.GetOrCreateSharedInstance で取得するか、事前にInspectorでIscpConnectionをセットしておく。)
- 受信に必要な情報を設定してダウンストリームを登録(オープン)する。
- データ受信時にイベントが発生するので、受信したデータのペイロードから必要なデータを取り出す。
- データを可視化(処理)する。







