MAGI

MAGIとは何か

MAGI(Middleware for Artificial General Intelligence)は、多数のソフトウェア部品を組み合わせて、ロボット等の機械装置を人工知能によって制御する機構を実現するための基盤です。ソフトウェア部品を実現する方法として、dockerを用いています。MAGIの目的は、二つに大別されます。

  • IoTシステムに人工知能技術を導入するための基盤としてのMAGI
     ロボットや自動車など、高度な機械システムは、すべて、人工知能技術を用いて実現されるようになりつつあります。このようなシステムを実際に構築したり、構築方法を研究したりする、効率的な環境の重要性が高まっています。MAGIはそれに対する一つの解を与えることを目的としています。
  • 人工知能自体の研究基盤としてのMAGI
     人工知能をさらに発展させるための一つの方法として、自然の生物の知能が持つ、自然知能を模倣する方法があげられます。従来の、膨大なデータを分析することによってその法則性を見出すアプローチばかりでなく、自分をとりまく環境と自律的に相互作用を行うことを通じて新たな知識を獲得する機能を持つ機構の研究は、”知能”の本質により近づくための、新たな、重要な手段であると考えられます。

このような、自然環境と相互作用を行うことができる機械的な機構を人工知能を用いて制御するシステムの構築は、実用的にも研究上からも重要な課題となっていますが、その実施は容易ではありません。人工知能技術の知識に加えて、機械機構を動かすための知識や、大規模な計算システムを構築するための技術が必要になるためです。MAGIは、この点に注目し、dockerをはじめとするコンテナ技術を有効に活用することにより、人工知能や機械機構の専門家がより容易にそれぞれの研究、開発を進められるようにすることを目的として実現されたものです。

具体的には、Webインタフェースからkubernetesを操作することにより、ROS(Robot Operating System)や深層強化学習プログラム等の、作業に必要な要素となるソフトウェアをコンテナとして実行する機能を持ちます。また、このようなソフトウェアを部品として利用できるようにするために、dockerレポジトリにいろいろなイメージをアップロードしてあります。Web画面からそれを選択するだけで、サーバ上で複雑な人工知能+機械制御プログラムを実行することができます。さらに、新たなコンテナの定義、組み合わせ方法の記述、複数コンテナの自動起動、ロボット等のハードウェア資源との連携等に関する体系を提供しています。

何に使うか

 MAGIの主な利用目的は、

  • ROSを用いた組み込み制御系の開発
  • 階層的な深層強化学習系によるロボット制御プログラムの開発
  • 大学などの教育機関や企業でAIやIoTの演習を行うための基盤

等です。それぞれで、前提となる知識が異なります。すべての技術要素について知らなくても、目的の作業が行えるようになっています。具体的には、

  • 深層学習の知識を持った技術者、研究者が、ロボットを使ってみるためにMAGIを利用する
    深層学習、特に、深層強化学習の研究の一つとして、ロボット等の物理的実体を用いた実験が容易に行えるようになります。ロボット自体は、ROSで制御しますが、その詳細を隠すことによって、IoTに関する深い知識がなくてもロボットを活用できるようにします。あらかじめ、ROSのロボットナビゲーションを実現するために必要なコンテナ一式が用意してあるばかりでなく、複数のOpenAI gymによる強化学習系と接続するための機構も提供します。これによって、非常に高い抽象度のpython APIを利用するだけで、ロボットの制御を行うことができるようになります。
  • ROSやIoTの知識を持った技術者、研究者が、自分が開発したロボットを、人工知能を用いて制御できるようする
    人工知能に関して、学習済みの深層強化学習系を、dockerイメージの形式で提供し、その名前を指定するだけで利用できるようにしています。ロボットと人工知能系を接続するために、クラウドとの橋渡しをするエッジコンピュータも同時に提供するので、たとえば、自分で作成したロボットを人工知能を用いて制御することが容易に行えるようになります。
  • 複数の利用者が、それぞれ独自にロボット制御プログラムをクラウド上で開発できる基盤を提供することにより、教育目的にも適合します

MAGIとkubernetesとの関係

MAGIは、kubernetes上で動作します。名前が長いので、k8sともよばれます。このk8sは、docker等のいろいろなコンテナからなる複雑なサーバシステムを運用するための、システム基盤であり、「オーケストレーションツール」とよばれています。MAGIは、k8sが提供するモデルに準拠したコンテナモデルを提供しています。MAGIのソフトウェア部品は、k8s上で、

  • pod
  • service + deployment
  • ingress + service + deployment

のいずれかの形式で実行されます。また、複数ソフトウェア部品を同時に起動する機能もあります。これは、たとえば、ROSでロボットを動かしたりする際、大変便利な機能になります。
...続きはこちら

MAGIとROSの関係

ROSは、自律移動ロボットや、ロボットアーム等の機構を制御するためのソフトウェアの体系を与えるものです。単に、要素となるアルゴリズムの実装だけでなく、ソフトウェアモジュール間の通信方法、ソースコードの記述方法、座標系等に関する共通規格等を与えており、IoT技術の基盤として重要な意味を持っています。MAGIでは、自律移動ロボットの制御を中心として、ロボットの実現に必要なROSのモジュールをすべてコンテナ化しており、Webブラウザ画面から部品を選択するだけで実行できるようにしています。また、RvizやGazebo等の主要プログラムの表示も、Webブラウザから見ることができるようにしています。したがって、MAGIを用いれば、WebブラウザだけでROSを使うことができるようになります。

ROSを制御するための通信は、ROS Bridgeプログラムを経由して、Python上の簡単な記述で行えるようにしています。もちろん、ROS Bridge自体もdockerコンテナとしてk8s上で実行されます。

...続きはこちら

動かしてみよう

MAGIは、商用クラウド、もしくは、自分で用意したLinuxクラスタのkubernetes上で動作します。kubernetesが動作するクラスタを用意することが必要条件ですが、そこから先のインストールは容易です。

インストール時に設定された、MAGIのURLにブラウザでアクセスすると、ログイン画面が表示されます。最初は、ルートユーザのみが登録されています。設定した初期パスワードを入力すると、利用を開始できます。たとえば、ROS上で動作する自律移動ロボットのシミュレーションを開始するためには、

  • MAGIへのログイン
  • プロジェクト名の登録
  • ネームスペース名の登録
  • ロボット運用コンテナの実行

複数のコンテナ群を実行するマクロも、一つのコンテナとして登録してあります。実行可能なコンテナのリストの中からマクロ名を一つ選択するだけで、複数のコンテナの実行が自動的に開始されます。

  • ブラウザによる結果確認

実行結果は、画面に現れるリンクのボタンをプッシュするだけでブラウザ画面に表示されます。ここでは、シミュレータ画面(gazebo)と、ロボット操作画面(rviz)が同時に表示されています。

重要な点は、ここまでの操作で、一切ローカル環境にプログラムのインストールを行っていない点です。すべてクラウド上で行うことにより、作業が非常に簡略化され、必要な部分にのみ集中して研究、開発を行うことができるようになります。

Use Case1: ブラウザだけで行う最初のプログラム実行

pythonの実行環境であるJupyterのコンテナを実行すると、Web画面からpythonのプログラミングが可能になります。これは、ロボットがなくても、シミュレータを用いて試してみることができます。すなわち、ブラウザだけ用意すれば、ロボットを使ったいろいろなIoTプログラムの作成が行えることになります。これは、たとえば、教育に用いる際に大変有効な環境で、1コマの演習時間内でもROSを試用してみることが可能になります。

Use Case2: VSCodeを用いた、新しいプログラムの開発

VSCodeと、cloud codeプラグインを用いると、自分で作成したプログラムを、簡単にdockerの形式で実行することができます。このように作成されたdocker imageをMAGIに登録して他のコンテナ群と連携して実行することも容易に行えます。
このような方法で、たとえば、ロボットを制御する人工知能プログラムをMAGIに順次追加してゆくことが可能です。

Use Case3: 自分で作成したロボットを、人工知能で制御する

ROSは、Lidar等のセンサを持った自律移動機械を制御するプログラム群を提供しています。これを使うと、目的地まで、障害物をよけながら移動する、自律移動ロボットを実現することが可能になります。ROSでは、このプログラムを試す標準のロボットとしてTurtlebot 3を指定していますが、移動能力を持った機械を自分で作り、LidarとRaspberry Pi等の組み込みCPUを搭載すれば、自分が作ったロボットでROSを試すことが可能です。ROSの主要なプログラム部分をMAGI上で実行し、動作部分のみを外部に接続する形式をとれば、このような「ロボット」の開発がより容易に行えるようになります。

我々は、MAGIと連携する別プロジェクトとして、安価なロボットを実現する方法も検討、公開しています。また、車輪ではなく、4足歩行ロボットなども試みています。