KUMICO

COLUMN

効率的なロボット開発を実現するROS・RTミドルウェアとは

ロボットの開発を効率的に行うために各種ミドルウェアが世の中に出始めています。本コラムではロボット用ミドルウェアであるROS・RTミドルウェアついて解説します。

ロボット開発の背景

「ロボット」とは?と言うと、戦隊モノに登場する巨大ロボットや、アニメの世界に出てくる人型ロボット、工場などで働くロボットアームなどといわれるものから、最近発売されている犬型ロボットなど、人によって様々な形状のロボットを想像するのではと思います。

経済産業省ではロボットを「(1)センサ、(2)知能・制御系、(3)駆動系の3つの要素技術を有する、知能化した機械システム」(『ロボット政策研究会報告書』 平成18年5月)と定義しており、上記で思い浮かべたようなロボットは全てロボットと言って良いかと思います。近年AIの普及もあり、ロボットはより身近になりつつありますが、今後も人間の代わりをしたり、アシストをしたりと活躍が期待されています。

ロボットは「センシング(センサーで観測する)」、「コンピュータ」、「人工知能」、「制御」、「アクチュエータ(コンピュータが出力した電気信号を、物理的運動に変換する機械)」、「機構」、「認識」、「推論」、「行動計画」等、多数の技術要素で成り立っています。それら技術要素を統合し、目的に沿ったロボットシステムを開発するために、近年国内外では「汎用性・移植性の高い分散コンポーネント型のロボットシステム開発」が主流となっています。

ロボットシステムには分散コンポーネント型が最適

上記でもお話した通り、ロボットとひとえに言っても、マニピュレータ、移動ロボット(二足歩行、多足歩行、車輪、クローラ)、人装着型ロボット(パワードスーツ)、マイクロロボット等の様々な形状があり、目的に応じて必要なセンサ・アクチュエータ等の各種ハードウェア制御、行動計画、シミュレータといった様々な機能要素を組み合わせることで実現しています。分散コンポーネント型のソフトウェアプラットフォームは、これらの機能要素をコンポーネント化することで、コンポーネント単位での並行開発、再利用、交換や更新、分離等が可能となり、複雑さの軽減、システムの柔軟性・拡張性・安定性の向上することで、ロボットシステム開発を効率的に実施することが可能となります。

様々な分野でのロボット活用が期待される中で、用途に応じて全く異なる形状や機能が必要となるロボットを一つの企業で一貫して開発するのは、技術面でも費用面でも非常に難度が高くなります。そういったロボット開発のハードルを下げ、様々な企業・研究機関が参入するための動きの政策として、近年国内でも分散コンポーネント型のソフトウェアプラットフォームの開発が盛んに行われ主流となってきているのです。

今回はそのソフトウェアプラットフォームとして2つご紹介致します。1つ目は、世界的に多くのユーザをもち既に複数の製品に搭載されている「(Robot Operating System(ROS)」、もう一つが国立研究開発法人 産業技術総合研究所が主体となって開発をしている「RTミドルウェア」になります。

1.Robot Operating System(ROS)について

Robot Operating System(ROS)は、OSという名前は付きますが、Microsoft WindowsやMacOSなどのオペレーティングシステムとは異なり、開発ツールやライブラリが含まれたオープンソースのソフトウェアプラットフォームとなります。基本的にロボットシステムを開発する際には、ロボットの機能要素ごとに作られているソフトウェアモジュール(ノード)を組み合わせ、協調動作させることでロボットシステムを実現します。しかし、ロボットに使われているハードウェアやOSは様々なものがあり、例えばLinux、Windowsなど異なるOS上でもノードが同じ動きができるように、OSとノードの間にあるOSラッパーがROSと捉えていただければわかりやすいかと思います。

ROSの起源は、米国スタンフォード大学人工知能研究所(AI Lab)が行った開発プロジェクトであり、それを引き継いだ米国企業・Willow Garage社が2007年に本格開発を開始し、2010年に最初のリリース版が公開されました。その後、非営利団体「Open Source Robotics Foundation(OSRF)」(現「Open Robotics」)にROSの開発を主導する役割が引き継がれています。ROSの目標は「ロボットソフトウェアの共同開発を全世界的に推進する」ことであり、今では全世界で数千人の開発者と10万人以上のユーザがいる一大OSSコミュニティの一つとなっています。

ROSが動作するOSはUbuntu、Linux MintなどのLinux系のOSが中心で、Windows、Mac OS、Androidでも一部の機能が対応しています。また、利用可能なプログラミング言語としては、C++、Python、Javaをはじめ、C#、Go、Haskell、Node.js、Lus、R、EusLisp、Julia等多数の言語をサポートしています。

このようにROSは米国が中心となって開発が進められ、世界中の企業が様々な製品に搭載しています。しかしながら、当初Linuxなどもそうでしたが、オープンソースを利用して製品化する際の品質保証を誰がするのかという問題があるため、現状国内では研究開発や、試作開発に利用されることが殆どとなっていると私は思います。

2.RTミドルウェアについて

RTミドルウエアもROSと同様にロボットシステムを構築するためのソフトウエアプラットフォームです。RTコンポーネントと呼ばれるロボットの機能要素毎のソフトウエアモジュールを複数組み合わせて動作させるためのソフトウエアプラットフォームです。RTCのオブジェクトモデル仕様は、国際標準化団体OMG(The Object Management Group)の標準仕様となっており、国家プロジェクト等を通じて、企業、大学により多くのコンポーネントが開発されています。

国内では国立研究開発法人産業技術総合研究所が中心となって、開発を行っているOpenRTM-aistが有名です。OpenRTM-aistのページをご覧頂くと数多くのコンポーネントが存在するのがわかるかと思います。OpenRTM-aistは分散オブジェクト技術のCORBAを用いて実装されており、OSとしてはWindows、Linux/Unix、Mac OSがサポートされています。また、利用可能なプログラミング言語としては、C++、Python、Javaが公式にサポートされています。

OpenRTM-aist、及びコンポーネントは国内の団体が開発したものが多く、日本語のドキュメント・サポートという点でROSよりも優れています。しかしながらCORBAもOpenRTM-aistもオープンソースであるため、ソフトウェアの品質保証の部分に関しては、ROSよりも不安点が多いのも事実なようです。

OpenRTM-aist official website

品質保証が、ロボット開発加速の鍵

本コラムでは、ROS及びRTミドルウェアのご紹介をしました。いずれも非常に考えられたソフトウェアプラットフォームであり、賛同者も多数います。しかしながら、日本のお国柄という部分もあるかと思いますが品質保証の部分において問題があり、国内ではまだまだ製品化という部分までは進んでいないのが現状かと思います。品質保証の部分に関しては、オープンソースを利用する際には必ずと言って良いほど起こる問題であり、Linuxも当初は同様の問題がありました。しかし、Linuxはその壁を乗り越え今となっては様々な機器に利用されるようになっています。今後を考えるとロボットは無くてはならないシステムになるかと思います。近い将来品質保証の問題が解決され、革新的なロボットが登場しより良い未来が来ることを私は期待しております。

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!