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