Software

制御アーキテクチャ

 システム全体図は以下のとおりになる。オペレータは手持ちのPC(WinMax2)やuConsole + GameController'のWeb画面でTriClopsを操縦する。このTriClopsをWebから制御する基盤として、**Mimeguri(三囲)** - Yet Another Mobile AI Robotics Infrastructure`を開発した。

 Webブラウザで動作するアプリケーションの分類をWebアプリと言うなら、Mimeguriは間違いなくWebアプリの基盤である。そう、オンプレサーバでのWebアプリ開発だ。ただし、いつものWebアプリ開発と違うのは、実現にあたってセンサを始めとしたデバイスやロボティクスの知識や経験が必要になることだ。

ソフトウェアの構成(Webアプリ成分とデバイス成分)

TriClopsを構成しているソフトウェア群を解説する。TriClopsの中核となるデバイスはラズベリーパイ(以下、ラズパイ)4である、物凄くナリは小さいけど、Linuxのオンプレサーバなのである。なのでソフトウェアの開発はサーバ上でおこなう。つまり、Linuxシステムとして開発環境に利用するわけだ。

  • Webアプリ開発
     通常のWebアプリ開発で行っている設定を施す、老害はsshのサーバを入れたり、sambaを入れたりしている。これでオンプレサーバ(ラズパイ4)にログインする。これで、後述のデバイス開発に進める。サーバらしく、httpのサーバも立てて、外部から疎通確認を行っておくことも忘れないように。

  • デバイス開発
     オンプレサーバに様々なデバイスが接続されている状態である。デバイス単体での疎通確認をおこなう。提供者からのドライバをインストールし、デバイスファイルとして確認できるか?サンプルコードをpythonやC/C++などから実行し、所望の結果になるかなどの単体確認をおこなう

Webからのデバイス制御の定石

 ここがわかると、一気に分かるチョークポイントのような技術的なポイントがある。

  • HTTPサーバによるハンドリング
     最近のソフト開発では、様々な局面でpythonを選ぶことが多いだろうし、node.jsもだろう。それぞれに手軽に使えるサーバ実装がある、前者ならflaskだし、後者ならexpressなどだ。postで受けるパラメータ群とそれの発露となるエンドポイント。このエンドポイントで受けるのが先にデバイス開発で述べたサンプルコードから発した貴殿のビジネスロジックつまり、どのようにデバイスを動作させるかというロジックになるのだ!

  • websocketによるハンドリング
     もう一つの方法として、websocketがある。これは幅広い用途で活用できる。何より、デバイス開発者の相性がいい。相性がいい理由はいくつも見つかるが、見た目がRAWデータっぽい、つまりデータが剥き出しに近い感覚で扱えるということだ。デバイス開発者はログを見る以前に生データを直接見るクセが付いている。このプロトコルはそういったデータを取り扱いやすい、UARTと直結させる手法が多いのはその証左だ。

=>対話形式で行う場合はHTTPサーバ、ストリーミング、あるいは内部でのデータやりとりはwebsocketと言うのが、老害の理解と実装である。

Webアプリ実装例

 Webアプリの実装として、別章で述べるROCKとRVCSがある。ROCKはTriClopsのリソースをほぼカバーした実装である。一方のRVCSは’uConsole+Game Controller’の組み合わせで使いやすく実装したアプリである。