昨今注目されるロボット。モデルベースデザイン環境「MATLAB/Simulink」を提供するMathWorksが発表した、ロボット開発にモデルベースデザインの手法を導入するためのツール「Robotics System Toolbox」について解説する。
今さら説明するまでも無いことだが、昨今はロボットに熱い注目が集まっている。産業用はもちろん、白物家電としてのロボット掃除機も既に定着しつつあるし、介護用や接客用などの用途でも様々な取り組みが行われている。またロボットとはちょっと異なるが、いわゆるドローンなど無人飛行機も最近急速に普及を始めている。
モデルベースデザイン環境「MATLAB/Simulink」を提供するMathWorks社も、以前よりこうしたロボットに着目しており、ロボット制御で利用されるアルゴリズムの研究なども行われている。実際、ロボット制御モデルの生成や物理モデリングといった用途にMATLAB/Simulinkは最適なツールと言っても過言ではない。
そして、MathWorks社は2015年3月、MATLAB/Simulinkの最新バージョンである「Release 2015a(以降R2015a)」を発表した。同社は年2回のバージョンアップを定期的に行っており、今回のリリースもこの一環である。バージョンアップごとに新機能や新製品の追加が行われるのは常であるが、今回のR2015aではそうした新製品の1つとしてロボット開発にモデルベースデザインの手法を導入するためのツール「Robotics System Toolbox」が追加された。この製品について、MathWorks Japanの阿部 悟氏(インダストリーマーケティング部マネージャー)に詳細をお伺いした。
昨今のロボットは単機能の提供にとどまらないことがほとんどで、そうした意味では対象となるプロセスを記述した「モデル」を仕様として定義し、開発プロセスを構築するモデルベースデザインとは相性が良い。ただそのMATLAB/Simulinkにも落とし穴がある。それはMATLAB/Simulink上で生成したモデルを、そのまま実機に持ってゆくための適切な手段がなかったことだ。
自動走行車ベースのロボットを例に考えてみよう。といってもGoogleの自動運転車の様なものではなく、例えるならばお掃除ロボットの類だ。従来は「ロボット」というモデルを実現するための適切なフレームワークが無かったので、実機の開発に進むとなると、さまざまな機能やアルゴリズムが複雑に入り組んだ構成になることも珍しくなかった。
車台の駆動用モータは専用のMCUを搭載するとしても、そこにどう指令を渡し、あるいはフィードバックを得るかについてフレームワークはないので、ロボット制御用のメインCPUで動くさまざまなロジックが適当にモータ制御MCUをアクセスするといった実装になっている場合もしばしばある。これは、最初はシンプルな構成にモータ制御+αだけで実装していたのが、あとから新機能やセンサーを追加していくケースで非常によく見られる構図である。こうした状況でMATLAB/Simulinkを使ってモデルを作ったとしても、それを実際のロボットに移植するためには、少なからぬ手作業が発生することは避けられない。
この「適切なプラットフォームの欠如」という問題は以前から問題になっており、これに向けて「ROS(Robot Operating System)」と呼ばれるものが開発されている。広義のロボット向けOSという意味では多くのものがあり、例えば国内だと電子技術総合研究所(現、産業技術総合研究所)の開発したART-Linuxや、ソフトバンクのPepperが採用したことで話題になったV-Sido OS、海外だと組み込み用として有名なVxWorks、最近だとNAOqi OSといったものも登場している。ただここで取り上げるのはROSという名称のオープンソースベースのものである。
元々はスタンフォード大の人工知能研究所がSTAIR(STanford AI Robot)プロジェクト用に開発したもので、このROSは機能を追加しながら対応ハードウェアを増やしており、さまざまなロボットで利用されている。特に有名なのが「Turtlebot」であろう。これはWillow Garageによって開発された、低価格な自立走行ロボットの開発プラットフォームという位置ずけの製品で、現在は「Turtlebot 2」が発売されているが、このTurtlebotをROSでサポートしたことで大きく普及した。
話をMATLAB側に戻す。今回R2015aで提供されるRobotics System Toolboxは、このROSとMATLAB/Simulinkが通信を行えるようにするためのI/Oインタフェースを提供するものである。ROSの環境下では全てのロボット制御機能がノードとなり、このノード間でMessage Passingの形で通信を行う。ここでMATLAB/Simulinkもまたノードの1つとなり、他のノードと通信が行えるようになる。これにより、MALTAB/Simulink上で作成したアルゴリズムやモデルを、そのまま実際のロボットに移植することが極めて容易になるのだ。
Robotics System Toolbox を利用した場合のロボットの開発手順の一例を示す。まずROS上での動作だ。どんなノード(コンポーネント)が接続されているか、あるいは通信ができるかの確認である。これはROSのコンソールからでも行える内容だが、Robotics System Toolboxを介してMATLAB/Simulinkからこれを行う事で、MATLAB/Simulinkがこれらのノードと通信できることの確認ともなる。
ここでロボットの構成が確認できたら、次はMATLAB/Simulink上でのモデル生成の作業に入る。Robotics System ToolboxはURDF(Unified Robot Description Format)ファイルのインポート機能も含まれており、URDFが提供されているロボットであればモデル生成はさらに簡単となる。
モデルの生成が終わったら、MATLAB/Simulink上でシミュレーションを使って動作させ、アルゴリズムの検討や動作状態の検証が可能となる。これに応じてフィードバック制御をチューニングしてゆく。シミュレータとしてはGazeboあるいはV-REPがサポートされており、これらを併用することでプロトタイプ開発の工数を大幅に削減できる可能性がある。
ある程度シミュレータ上でプロトタイプの設計を詰めたら、次は実際のロボットを動作させての検証となる。この際、実際のカメラからの映像や、そこから輪郭抽出した映像、それによるロジックの判断結果などをリアルタイムで表示したり、あるいは動的にパラメータを変化させながら動作を見るといった、インタラクティブな開発が容易に行えるようになっており、ここでも開発/検証サイクルの短縮に効果的である。
また、例えば自動である程度の期間動作させておき、後でまとめてログ解析を行うといった事も可能である。そもそもMATLAB/Simulinkはこうした大量のデータ解析に本領が発揮される部分でもあり、効率よく分析し、それを設計に反映させることが可能になる。
一連の開発が完了したら、最後にC++ Node Generationの形でノードを生成する。実はこの機能こそが、Robotics System Toolbox登場以前のMATLAB/Simulinkに欠けていた最大のものである。冒頭でも書いた通りMATLAB/Simulink上でロボットのモデルを作り、シミュレーションを行ってパラメータを決めるといった作業は以前からも可能だった。
ところがそれを実際のロボットに移植するためには手作業が発生しており、この手間が大きな負荷になっていたのだ。しかし、Robotics System Toolboxを利用すると、Embedded CoderでMATLAB/Simulink上のアルゴリズムやモデルをそのままROSのノードとして変換ができるため、ここの作業が大幅に改善されることになった訳だ。
Robotics System Toolbox をROSと組み合わせて使うことで、MATLAB/Simulinkがこれまで提供してきたモデルベースデザインの環境がロボット開発にも適用できるようになった訳だ。もちろん、現状ではまだ若干の制約は存在する。現状正式対応しているROS DestributionはROS Hydro Meducaであるが、ROS Indigo Igloo、ROS Groovy Galapagosでの動作も確認されている。またEmbedded Coderによってデプロイできる対象は、当然ながらROSが動作するハードウェアのみとなる。今後Robotics System ToolboxやMATLAB/Simulinkが対応するROSとそのハードウェアが増えてゆけば、どんどんプラットフォームが増えてゆくことが期待できる。
実を言うと、このRobotics System Toolbox の前身にあたるToolboxは以前から教育機関向けにのみ提供されていたが、今回、Robotics System Toolboxという形で正式にリリースされ、Simulinkが必要とされるようなケースでもRobotics System Toolboxが利用できるようになったことは大きい。長期的にはADAS(Advanced Driver Assistance Systems:先進運転者支援システム)の様な複雑なシステムの開発にもROS+RSTを応用することも考えられる。
もともとロボットの世界は制御が複雑であるがゆえに、モデルベース開発の必要性が早くから認識されており、そしてモデルベースデザインといえばMATLAB/Simulinkの独壇場だっただけに、Robotics System Toolbox にあたるもののニーズは昔から高かった。これがやっとR2015aで利用できるようになった事は喜ばしい事であろう。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:MathWorks Japan
アイティメディア営業企画/制作:MONOist 編集部/掲載内容有効期限:2015年4月24日