ロボットを動かすオープンソース

ロボットを動かすオープンソース

自動車業界、ロボット業界でのオープンソースソフトウェア(OSS)の最新トレンドをお伝えします。OSSがどのように活用されているか具体的な事例や技術を引用して説明いたします。

今回は、ロボットとOSSとの関係についてご紹介したいと思います。ロボットといっても最近よく聞く事務作業を効率化するRPA(Robotic Process Automation )のようなソフトウェアのことではなく、工場の自動化を助ける産業用ロボットなどのことです。そのロボットを作るためのソフトウェアが存在するわけですが、今回はその中でOSSの果たす役割についてご紹介したいと思います。

 

 

ROSとは︖

---------------------------------------

ロボットを動かすためのシステムで代表的なものに「ROS」というものがあります。ROSは、Robot Operating Systemの略ですが、名前に「Operating System」が含まれていますが、OSではなく開発ツールやライブラリを含めたロボットシステムを開発するためのフレームワークで、オープンソースとして公開されています。米国スタンフォード大学で開発された「Switchyard」プロジェクトをベースに米国のWillow Garage社が2007年に本格的に開発を開始しました。同社は、画像処理で活用されるOSS「OpenCV」の開発支援などを行ってきました。2010年3月に最初のリリース版である「ROS Box Turtle」が公開されました。
その後、Open Source Robotics Foundation(オープンソース・ロボティクス財団)、通称『OSRF』というNPOに引き継がれ管理されています。なお、OSRFは、2017年5月に名称を「オープンロボティクス」と変更しています。このROSが動作するOSは、UbuntuなどのLinuxが中心で、特にUbuntuでは、パッケージ管理システムを活用してインストールができます。また、開発チームがテストで実施していることもあり、多く利用されています。
現在まで、本年5月リリース予定の「ROS Noetic Ninjemys」まで含むと13種類のディストリビューションがリリースされました。この中で、多くのバージョンはサポート期限を終了しており、現状で活用できるバージョンは、「ROS Melodic Morenia」と「ROS Kinetic Kame」のみになります。

 

ROSシステム概観

---------------------------------------

ROSは「ノード」と呼ばれるプロセスが処理結果を送受信しながら動作します。「ノード」間の接続情報を管理するプログラムを「マスタ」と呼び、いずれかのホストで起動しておく必要があります。「ノード」は、起動時に通信に必要な情報を「マスタ」に登録しておくことで、相互に通信できるようになります。そうすれば、「このセンサーデータを127.0.0.1のコンピューターに送信します」と明記する必要はなく、ノード1にメッセージをノード2に送信するように指示するだけです


ノードは、「Topics」を「Publish」や「Subscribe」することによりこれらの作業を実現します。
例えば、ロボットにカメラがあったとします。ロボットと別のLaptopの双方にカメラからの画像を表示できるようにしたいとします。
この例では、カメラとの通信を処理するカメラノード、画像データを処理するロボットの画像処理ノード、画面に画像を表示する画像表示ノードがあります。まず、すべてのノードがマスタに登録されています。マスタは、すべてのノードがメッセージを正確に送信する場所を見つけるためのルックアップテーブルと考えることができます。
カメラノードは、ROSマスタへの登録時に、/ image_data(たとえば)と呼ばれる「Topics」を「Publish」すると記述します。他の両方のノードは、Topics/ image_dataを「Subscribe」すると記述します。したがって、カメラノードがカメラからデータを受信すると、/ image_dataメッセージを他の2つのノードに直接送信することになります。

 

 

ROSの利点は︖

---------------------------------------

① OSSであること
OSSで公開されていますので、基本的に無料で使用できます。また、Ubuntu上で稼働しますので、Ubuntuがイ ンストールされたくPCを用意することで、すぐにROSを稼働させることができます。また、ライセンスもBSDであり、GPLのようなコピーレフト系のライセンスのようにいろいろ気を使う必要がありません。
② さまざまなツールやライブラリが完備
ロボット用モデリング言語や物理シミュメータなど、ロボット開発用に最適なツールやライブラリが多く含まれているので、
改めて開発する必要がなく、開発者の負荷が大幅に軽減されます。
③ 分散型システムの構築が容易
ROSの特徴の大きなものとして、簡単に分散型システムを構築できることです。それぞれの機能を有したソフトウェア
をノードと呼ばれるプロセスを複数同時に実行し、ノード間のデータはネットワーク経由で通信するシステムになっています。これにより、複数マシンでの分散システムに自然と拡張できるようになりますし、システムのあるプロセスが動作しなくなっても、システム全体が動作しなくなるようなこともなくなります。

 

 

適用事例

---------------------------------------

ここから、少し「ROS」の適用事例をご紹介したいと思います。
① トマト収穫ロボット
農業人口の減少や高齢化が進む日本の解決策として、農業のハイテク化が進んでいますが、その中でAIやロボティクス技術を駆使した「ロボット収穫機」をパナソニック(株が開発しました。
具体的には、トマトの苗の畝と畝の間に敷かれたレールの上をロボットが移動して実を収穫します。収穫ロボットには画像を認識するカメラが搭載されていて、AIにより収穫すべき実なのかどうかを判断し、動作する経路を決め、収穫します。
(https://news.panasonic.com/jp/stories/2018/57949.html)
② aibo
ソニー(株)が、1999年に販売を開始し、2018年に大幅なリニューアルをして話題を呼んだペットロボット「aibo」にも適用されています。人感センサーで人を識別したり、タッチセンサーにどのようなアクションがされているかを判断して、行動するための情報を処理し、演算する部分でROSが活用されています。
https://roscon.jp/2018/presentations/ROSCon_JP_2018_presentation_12a.pdf
https://roscon.jp/2018/presentations/ROSCon_JP_2018_presentation_12b.pdf

 

適用事例

---------------------------------------

ROSは、リリース以降、順調に適用範囲も学術分野にとどまらず、製造・農業・商業分野に広めてきましたが、機能的に不十分な部分も目立つようになってきました。主にPR2というロボットに対応するために開発されてきたこともあり、近年の産業用ロボットとして求められるニーズ(複数ロボット、リアルタイムシステム等)に対応できません。このような状況を改善するべく、コアとなる部分をゼロから開発することにし、2015年から開発をスタートし、2017年12月に「ROS2」をリリースしました。

一番大きな変更点は、分散型通信システムの問題で、「ROS」開発当時は、適切な分散型通信システムが存在していなかったこともあり独自に開発しましたが、その後、分散型リアルタイム通信が普及したこともあり、その中から「DDS(Data Distribution Service)」を採用しました。DDSは、標準化コンソーシアムであるOMG(Object Management Group)によって承認された通信ミドルウェアで、「ROS」と同様にPub/Sub通信とよく似たデータ転送を提供します。DDSのPub/Sub通信に必要となる送信元、受信先の発見メカニズムが分散化されているため、「ROS」で必要だったMasterの機能が必要なくなります。これにより、システムの単一障害点がなくない、自由度が高くなりました。

次の問題は、使われ方の変化です。前述のようにもともと「1体のロボット制御」や「リアルタイム性を求めない」というような用件を想定していましたが、現状では、不十分で「複数ロボットによる協調動作」や「リアルタイム動作のサポート」の他、「製品レベルでの利用」も必要となってきました。
2019年4月に(株)インテックが、ロボット開発者向けの開発・管理ユーティリティ「RDBOX」をオープンソースとして公開しました。この「RDBOX」をインストールした機器をインターネットとサービスロボットの間に設置するだけで、ROSロボットに最適化したセキュアで拡張性の高いWi-Fiネットワークや開発支援環境の構築が容易に実現できます。また、コンテナ仮想化技術を活用することで、CPUアーキテクチャが混在する多くのIoT機器などでもKubernetesクラスタの構築が可能になります。このDockerおよびKubernetesを用いることにより、ローリングアップデートやロールバックなどの高度な自動配信・自動運用を実現することが可能になります。

このROSは、簡単にRaspberry Pi(ラズパイ)上で動かすことできますので、身近にあるラズパイで動かしてみて、ROSの機能を確かめてみてはいかがでしょうか︖また、このラズパイをIoT端末として、今後ますます活用していくことが予想される中で、このROSやROS2の重要さが増していくことになると思います。

 

 

 

 

 (*1)本文中記載の会社名、商品名、ロゴは各社の商標、または登録商標です。

 

Tips集のご案内

テクマトリックスでは企業としてOSSと上手につきあうための注意点など、OSSを利用したソフトウェア開発活動の価値を根付かせるためのTIPS集を全6回にわたりご提供してきました。
総集編として、過去全6回に渡り配布したホワイトペーパーを一括でダウンロードできるようにしました。

  第1弾!「OSSガバナンスを社内構築するためのヒント」
  第2弾!「組み込みソフトウェアにおけるOSSを活用する方法」
  第3弾!「CASE時代のオープンソース(前編)」
  第4弾!「CASE時代のオープンソース(後編)」
  第5弾!「ロボットを動かすオープンソース」
  第6弾!「OSSライセンスコンプライアンス確立の傾向と対策」

企業向けSBOMガイドのご提供

「SBOMの導入によるライセンス コンプライアンスと ソフトウェア セキュリティの強化」 企業向けSBOMガイドの資料を提供しています。

SBOM導入ガイド