====== SIer様向けBUDDY Intruderカスタマイズ資料 ====== ===== 概要 =====  SOCIALROBOTICS社の汎用移動ロボットBUDDYは、内製のミドルウェア群を使用して安定した動きを実現してるが、操作・UI系はすべて内部に立てたサーバー、NGINX上で動作するWEB APPで行っている。  標準のAPP [Intruder] は同様にNGINX上で動作するSystemUIと呼称される共通ライブラリを用いてミドルウェアと通信を行っている。このため、このAPPをカスタマイズすることによってロボットの本体のカスタマイズが可能となっている。さらに、ロボット側のIPアドレスを固定することによって、ローカルエリア内であればHTTPアクセスによってロボットと通信をすることが可能であり、これによって外部システム連携を実現する。また、USB経由でロボットに下位機器を接続することも可能であり、USBを経由した下位機器とAPPが通信をするための中継機能も備えている。  もちろん、Intruderアプリを使用せずに独自のアプリを作成することも可能である。独自のアプリは、センターサーバーを通じてロボットに配備し、バージョン管理をすることが可能である。ZIP化してセンターサーバーにアップロードし、該当ロボットに紐づけを行うだけで次回起動時にロボットが更新される。 {{ :intruder_構成図.png?600 |}} ===== ハードウェア ===== BUDDYの棚部は取り外しが可能となっており、自由に付け替えることができる。詳細は以下。 ==== Intruder環境 ==== [[sier:intruder:os|Intruder動作環境]] ===== APIと顔APP ===== BUDDYの操作UIはNGINX上で動作するWEBアプリであり、そのソースはGitHubにて公開している。 [[https://github.com/sa0219u2io/intruder|GitHub]] APIの一覧と詳細は以下。 [[sier:api:intruder|API一覧]] ===== 外部LAN機器 ===== BUDDYは、上記APIを通じて、LAN経由で操作が可能である。通知の宛先を登録しておけば、ロボットからのPush型の通知として目的地に到着したことや、障害物検知で一時停止したなどの情報を受け取ることもできる。 APIの一覧と詳細は以下。 [[sier:api:intruder|API一覧]] ===== 外部USB機器 ===== BUDDYは、上記APIを通じて、BUDDY本体に取り付けたUSB機器と通信することができる。USB機器は汎用コミュニケーション機器であれば接続可能であり、送信はバイナリデータを含むいくつかのフォーマットで可能であり、受信はアプリからポーリングの形でロボットのデバイスキャッシュの取得が可能となっている。 事前準備として以下が必要 以下のコマンドにて、機器のシンボリックリンクを張る /etc/udev/rules.d に以下のファイルを作成 80-Usb.rules ※パスワード : 問い合わせてください ファイルの中には以下の記述  SUBSYSTEM=="tty", ATTRS{idVendor}=="{{}}", ATTRS{idProduct}=="{{}}", SYMLINK+="ttyGenUSB", GROUP="dialout" ※USB機器のベンダーIDかプロダクトIDをttyGenUSBとして認識させるための設定。ベンダーIDやプロダクトIDはご自身で取得してください。BUDDYに接続した状態で、lsusbコマンドでも閲覧可能です。 APIの一覧と詳細は以下。 [[sier:api:intruder|API一覧]]