intdashを利用して遠隔制御を行うコントローラーのサンプルです。
このサンプルでは、同梱されているintdash Simulator Sampleに設置された車モデルを動かすことが可能です。
シミュレーターから送信される映像と位置情報も可視化されるので、シミュレーターの状況を把握しながら操作することが可能です。
コントローラーサンプルのデータフローは以下のとおりです。
- 接続先intdashサーバーのURL(例: https://example.intdash.jp )
- Controllerに設定するエッジの認証情報
- UUID(例: 22222222-2222-2222-2222-222222222222)
- クライアントシークレット または APIトークン
- Simulator内の車オブジェクトのエッジUUID(例: 11111111-1111-1111-1111-111111111111)
サーバーとの接続にはクライアントシークレットまたはAPIトークンが必要です。
このサンプルではクライアントシークレットを利用します。
クライアントシークレットは、My Pageアプリ(例: https://example.intdash.jp/users/me/)でエッジを作成した際に発行されます。
詳細は intdash / Visual M2Mユーザーガイド の エッジアカウントを作成する より確認してください。
※上記は My Page v3.4.0 でクライアントシークレットを作成した場合の画像です。
サンプルのシーンは Assets/ControllerSample/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):
Controllerに設定するエッジのUUID - Client Secret:
クライアントシークレット
- Client ID (Edge UUID):
Hierarchyを確認すると以下のように Subscriber スクリプトがアタッチされています。
- Hierarchy
- intdash
- Subscribers
- JPEG
Iscp_JPEG Subscriber
- Location
Iscp_Location Subscriber
- JPEG
- Subscribers
- intdash
それぞれのオプションの Node ID (Edge UUID) に、 1. で用意した Simulator内の車オブジェクトのエッジUUID を入力してください。
操作はキーボードまたはGamePadで行うことが可能です。詳細は Assets/ControllerSample/InputSystem/Controller.inputactions を参照し、必要に応じて変更してください。
intdashサーバーへのデータの送信は、入力情報を識別する Controller スクリプトと intdash Serverへ送信する Publisher で行っています。
サンプルは以下にあります。
- Script
- ControllerScript
Assets/ControllerSample/Scripts/Controller.cs
- Publisher
Assets/ControllerSample/Scripts/intdash/Publishers/Iscp_ControlPublisher.cs
- ControllerScript
まず、Controllerスクリプトでは以下を実行しています。
- inputactionsで生成したインプットアクションスクリプトを用意する。
- インプットアクションより入力キーを識別する。
- Publisherへ操作情報を渡す。
次に、Publisherスクリプトでは以下を行います。
- IscpConnectionを用意する。(Awake時に
IscpConnection.GetOrCreateSharedInstanceで取得するか、事前にInspectorでIscpConnectionをセットしておきます。) - IscpConnectionでアップストリームを登録(オープン)する。
- 送信したいレートで送信が行えるように時間管理を行う。
- データを取得したら、送信先が要求するデータフォーマットに則りペイロードを作成する。(※ 送信先のデータフォーマットに合わせて自由に作成可能)
- 作成したペイロードを、用意しておいたアップストリームで送信する。
データの受信は Subscriber で行っています。
サンプルは以下にあります。
- Script
- Subscriber
Assets/ControllerSample/Scripts/intdash/Subscribers/Iscp_JPEGSubscriber.csAssets/ControllerSample/Scripts/intdash/Subscribers/Iscp_LocationSubscriber.cs
- Subscriber
データ受信のフローは以下です。
- IscpConnectionを用意する。(Awake時に IscpConnection.GetOrCreateSharedInstance で取得するか、事前にInspectorでIscpConnectionをセットしておく。)
- 受信に必要な情報を設定してダウンストリームを登録(オープン)する。
- データ受信時にイベントが発生するので、受信したデータのペイロードから必要なデータを取り出す。
- データを可視化する。







