このページではロボットをカスタマイズする際に利用できるAPIについて記述する。SysUI経由で内部APPからのみ送受信可能なものは、連携が×となっておりそれ以外は、HTTP通信によって外部機器から送受信可能となっている。 なお、指示や取得への応答は、ほとんどのAPIで非同期となっており、info型で返却される。これは、複数の外部連携機器や画面同期を実現するための仕組みであり、どこで操作が行われても全連携システムに、結果が同報的に送信されることを担保する仕組みである。
BUDDYの顔画面(ブラウザ)上で動くアプリは全てSysUIのiframeの内部で動作する。APIは全てjavascriptのsysuiクラスで実装済みであり、アプリでは親クラスを継承して関数を呼び出すだけとなる。詳細は標準アプリを参照すること。
受信側は特殊なつくりとなっており、アプリのルートディレクトリ内に配置されるservice_event_dispatch_setting.jsonというファイルの設定に従って、iframeの内部で動くアプリのURLを強制的に切り替える動作をする。これは画面の非同期的処理を実現するための簡便な仕掛けである。
従って、service_event_dispatch_setting.jsonに以下のような登録があると、
{ "title": "*****", "id": "info_move_start", "dispatch_type": "1", "url": "http://localhost/intruder/onmove.php" },
ロボットがinfo_move_start(移動開始通知)を送信すると、SysUIがアプリの画面を強制的にonmove.phpに切り替えるという設定となる。これによって、常時通信を監視しなくても、イベント駆動型の画面切り替えが簡便に製造可能となる。
外部APIは上記とはまったくことなる仕組みであり、SysUIの継承や制約なく、独自の外部システムと連携するためのAPIである。送信はBUDDYのIPアドレス:8088/api/requestに向けてPOSTをする形で実行し、応答は非同期的に設定されたすべての宛先(内部APIを含めて )に対してロボット側からPOSTの形で実行される。
APIには4種類あり、以下一覧ではそれぞれに分けて説明する。すべてPOSTで送信する。
※汎用USB機能を使用される際のPOSTの宛先は以下となります。
http://localhost:8088/api/request
対象 | 項目名 | 詳細 | 連携 |
---|---|---|---|
移動 | マップ切替指示 | ロボットのカレントマップを切り替えを指示する | ○ |
移動指示 | 目的地への移動を指示する | ○ | |
停止指示 | 目的地移動をキャンセルする | ○ | |
再設置指示 | ロボットが経路を外れた場合に、経路復帰させる場合に、ロボットに対して位置情報を把握させる | ○ | |
外部機器 | USB機器電文送信指示 | USB機器へ電文を送信する | × |
USB機器データ取得指示 | 汎用USB連携のキャッシュからデータ取得の依頼を行う | × |
対象 | 項目名 | 詳細 | 連携 |
---|---|---|---|
移動 | マップ一覧取得通知 | マップ情報(マークID、座標)、マップ画像の各ファイル名を返却する | ○ |
マップ切替完了通知 | ロボットのカレントマップを切り替え完了結果を通知する | ○ | |
目的地移動開始通知 | 目的地への移動開始を行ったことを通知する | ○ | |
障害物検知通知 | 目的地移動時に障害物を検知し停止た場合に通知する | ○ | |
移動再開通知 | 障害物が排除され、目的地移動を再開する場合に通知する | ○ | |
移動完了通知 | 目的地移動が完了して停止た場合に通知する | ○ | |
衝突検知通知 | ロボット走行時、バンパセンサ検知等が発生し、移動が中断された場合に通知する | ○ | |
外部機器 | USB機器データ取得通知 | 汎用USB連携のキャッシュに保持されたデータの返却を行う | × |
USB機器キャッシュクリア通知 | 汎用USB連携のキャッシュが溢れて切り詰めが行われたことを通知する | × |
{
"type":"req_move", "data":{ "speech_text":"○○○○へ移動します", "audio_dataid":"", "notice":"ON", "goal_destination_id":"1234567890123456", "speed_rate":100, "another_route": 1 }
}