汎用ロボットのアーキテクチャについて

クラウド上にLinuxサーバーを起き、その上で自律可能なラジコン制御プログラムを展開します。

ボディの実装として、タミヤのモーターキットに制御用OS+LTEモジュールを設置し、更にマイク、スピーカー、カメラ、赤外線出力を実装したものを用意します。

これにより、簡単なクラウド型のロボットが作れます。つまり、現在の技術群を持って、ある程度人に役立つロボットが実装できるはずです。

仮にこのロボットをアルファと呼びます。

f:id:neuralnet:20190502114531j:plain

アルファに対して、詳細と拡張を考えてみたいと思います。拡張したものをベータと呼びます。この記事では、アルファとベータを通じて今の段階で分かる現実的な汎用ロボットのアーキテクチャを思考実験してみたいと思います。

アルファの目的は、簡単なコミュニケーション、音楽、そして赤外線による家電の操作です。ワンルーム程度のスペースを動き回り、必要に応じて自ら充電するぐらいのものを想定します。それなりに役に立ちつつ人から好まれる存在の原型です。

ベータの目的は、汎用ロボットユニットです。拡張可能で、表面的でもある程度、自律的なものであると良いと思います。役に立ちつつ好まれる存在という位置づけは保持します。また、ロボット三原則の実装まで取り入れれば良いかなと思っています。

想定する結論

あらかじめ、この記事を通じて言いたかった事を書きますと、将来のロボットのアーキテクチャは、おそらく以前から描かれていたようなものとは異なりそうという事です。

まず、汎用ロボットでは、いわゆる脳と体は分離されそうです。脳であるコンピューティング部分をクラウドに置くことで、常に機能をアップグレード可能です。ボディはただの外部との接触点に過ぎず、単体としてロボットが成立する必要性がなさそうです。

次に、それ故ですが、ロボットは単体で機能するというより、群体のような存在になりそうです。1つのクラウドコンピュータ上に複数のパーソナリティが存在し、単一のパーソナリティが複数のボディを扱うことができるような位置づけになると思います。

最後に、個体の概念が目的志向なものになりそうです。ロボットにおける個体という概念は特定の情報範囲を保護する為のファイヤウォール機能という位置付けに過ぎず、人に対するユーザーインターフェイスとしてのパーソナリティは、教育、パートナーシップの構築、警備などの特別な目的がない限り、誰もに好まれるような汎用的な人格になると思います。

というのが、当初予測なのですが、果たしてどのようになるか興味深いところです。(対極的な結果として、従来通りのロボット像が浮かび上がる可能性もあるとも思っています)

では、はじめてみます。

思考実験その1:アルファの実現可能

その1では、調査を通じてアルファを構築可能な手順を作ります。成果物はいわゆる設計なので、実装の影響を受けます。(つまり、今回は設計まで行いますが作ってみたら違いましたは全然起こりえることですのでお知りおきください)

構築する対象は
1) ハードウェア(タミヤのタンクキットとRasberryPiもしくはAndroid、各種センサー)
2)クラウド上のシステム(Google Cloud上のLinux)
の2つのコンポーネントです。

1)がボディ、2)がブレインといったところでしょうか。

ボディ部分

まず、ボディですが様々なリファレンスがあります。私のお気に入りはこちらの記事で、RasberryPiとwifiによる実装です。

www.hiramine.com

こちらの拡張版まで行くと、カメラの搭載まで一気に進める事ができます。

ハードウェア側の制御OSはAndroidにしたかったのですが(ディスプレイや電源などの理由により)、ここまで実装が進んでいるものがあるので、こちらをベースにさらなる拡張をすることで、アルファのボディを目指します。

差分は以下です。

  • 入出力系の追加(マイクや赤外線等)
  • 電源を乾電池から充電式へ
  • 通信をWifiからLTE

センサーはカメラが既に搭載されていますから、追加でマイク、スピーカー、赤外線出力をつけれれば目的が達成できます。ポートの空きがあるかと、求めるパーツが世の中に販売されているかが大事になってくるかと。

電源の換装はそれほど難しくないと思いますが、無線式充電器の有無がポイントです。また、充電の状態を制御用OSに取り込むようにしたいと思います。

通信ですが、ワンルーム程度であれば、WiFiでも機能すると思います。が、ベータでは、5Gも視野に入れたいので、是非ともLTEモジュールへ換装したいところです。

ブレイン部分

クラウドサービス上にLinuxを用意します。おそらくどこでも良いのですが、個人的な知識から、Google CloudとUbuntuで進めます。

ブレインとボディどちらをSSLのサーバーとして設定するかはセキュリティとボディの所有権制御の観点から非常に興味深いテーマですが、一旦は、ボディがクライアントであり、起動後にブレイン側にSSL接続する方針で進めます。

ブレイン側のサーバーに展開するバックグラウンドプロセスは、以下の様なものになるはずです。

  • カメラ情報を受け続けるプロセス
  • マイク情報を受け続けるプロセス
  • センサーと時間の情報から、何らかの意思決定をし、音声もしくは赤外線出力をアウトプットするプロセス

ここまで書いて、ロボットにディスプレイが無い事に気づきました。Android端末の流用であれば、ディスプレイがビルトインされていますが、RasberryPiですと、ハード、ソフト共に追加が必要です。(ディスプレイを追加する事で、表情を表現したいと思いました)

ついでに温度/湿度センサーも追加したいと思います。不快な温度で自律的にエアコンつける仕様です。

まとめると、

ボディ部分

  • ベースはhiramineさんの実装(タミヤのタンクにRasberryPi、カメラ実装済)
  • 電源を充電式のものとし無線充電を導入(自律的に充電可能にするため)
  • 通信をLTEにする(将来的な宅外での通信を可能にするため)
  • 入力 カメラ(周囲の画像を得るため)
  • 入力 マイク(周囲の音を拾うため)
  • 入力 温度/湿度センサー(暑さ、不快指数を把握するため)
  • 出力 スピーカー(答えるため、また音楽を流すため)
  • 出力 赤外線出力(リモコン操作)
  • 出力 ディスプレイ(表情を表現するため)
  • 出力 移動(キャタピラ移動)


ブレイン部分

  • Google Cloud上のubuntu
  • ボディからブレインにSSL接続
  • カメラ情報を受け続けるプロセス
  • マイク情報を受け続けるプロセス
  • 温度/湿度情報を受け続けるプロセス
  • 入力系プロセスと時間から、何らかの意思決定をし出力系を通じて出力するプロセス(移動を含む)

という項目を深掘りしていきます。

続きはこちらです。
汎用ロボットのアーキテクチャについて 続き1 - neuralnetな日記