見出し画像

ロボット開発のオープンイノベーションを狙う ROSを概観

先日、ロボットの動作制御の基本中の基本である、 PID Controller を解説しました。

今後は、ロボット関連の記事も色々書いていこうと思います。AIの普及とともに、ロボット技術の可能性はますます高まっています。COVID-19 の世界的拡大を受けて、できる限りあらゆる工程が無人化されていくことも予想されることもあわせ、産業の垣根を越え、ロボットを活用してシームレスなサービスを実現していくためには、ロボティクスの発展を加速させ、開発を進めていくことが非常に大事です。開発をより速く効率的かつ確実に進めていくためには、世界中の開発者が協調できる、スタンダードなテクノロジーの存在が必要です。そこで、今回は、ロボット開発のオープンイノベーションを狙う ROS について概観します。

以下は、ROS のサイトです。

ROSとは、Robot Operating Systemの略です。「OS」という言葉が含まれていますが、Microsoft Windowsや mac OS、iOS等のOSとは異なり、ROSはロボットアプリケーションの構築を支援するオープンソースソフトウェアのライブラリやツールのスイートです。スタンフォード大学とロボット向けのソフトウェアを開発していたアメリカのWillow Garage社が開発を開始し、管理を行っていました。 Willow Garage 社は 2013年12月に操業を停止してしまい、ROSの開発は現在、Open Robotics がその監督をしています。ROSは、産業用ロボット、自動配送車やドローン等、幅広く様々なロボットシステムに適用可能です。AmazonとMicrosoft 等もROSに興味を持ち、Microsoftは2018年9月にROSのコアコードをWindowsに移植し、続いてAmazon Web Servicesが11月にRoboMakerをリリースする等、エコシステムの拡大は進んできています。

ROSが普及する前は、メーカーや研究者が独自にロボットシステムを開発していたため、開発に関する知識が一般化されておらず、結果的に一つ一つの開発コストが高くなっていました。

例えば、自動車工場や様々な工場で見られる産業用ロボットは、多くのカスタマイズが施され、製品毎に特定のタスクに特化したソフトウェアによる制御システムを歴史的に活用してました。システムによって仕様が異なり、標準化もされていない領域も多く、結果として、ロボットの開発は時間のかかる、非常に地道な工程が必要とされるものとなっていました。

ROS は、どのようにロボットを制御するかについてのノウハウを共有し、再利用を奨励する ロボティクスソフトウェアを開発するためのフレームワークを示し、この状況を一変させました。今では、ROSを活用することで、先進的なロボットシステムの開発をスピードアップさせることができます。

通常、それぞれ異なる環境で、それぞれ異なるロボットが、異なるタスクを実行されるべく設計、開発されます。一つの汎用ソフトウェアに、ロボット開発者たちが出会う全ての問題を解決させるというのは困難です。ですが、ROS は、ロボット開発者が直面する多くの共通の問題を取り扱うことで、オープンソースとしてのロボティクスソフトウェアの効用を最大化しています。

また、ROSでは「分散処理」というアプローチを採用し、世界規模での共同ロボットソフトウェア開発を後押します。ある会社には、世界レベルの屋内環境のマッピングの専門家がいるかもしれません。また、別の研究室には、地図を使ったナビゲーションに長けたエンジニアがいるかもしれませんし、別のグループでは、小さな物体を認識するのに適したコンピュータビジョンモデルを開発しているかもしれませんし、ユーザーとの音声インタフェースを開発すべく音声認識を作り込んでいるかもしれません。ROSはこのような異なるチーム・グループが協調できるように設計されています。

ROSは、ダウンロードしてすぐ使えるパッケージが多数提供されており、世界中で開発されたライブラリと、C++、Python、LISPなどの複数の言語をサポートする開発環境を有しています。位置把握、モーションプランニング、各種通信、センサーインテグレーション等の機能がプラグインとして使え、デバッグツール、データロギング&解析機能、オープンソースの3Dロボティクスシミュレータ「Gazebo」等も提供されています。


分散アーキテクチャ

ROS では、ソフトウェアの再利用性を高めるためにも分散処理を実現する分散型アーキテクチャが採用されています。ROSは1つの大きなシステムとして動作し、「node」と呼ばれるプロセスが演算結果を送受信します。ROSのプロセスはP2Pネットワークを構成しており、computational graph として表現することができます。


Nodes、Topics、Master

ROSのプロセスは、topic と呼ばれるエッジで接続されたグラフ構造の node として表現されます。Node は、topic を介して互いにメッセージを渡したり、他の node へのサービス呼び出しを行ったり、他の node にサービスを提供したり、parameter server と呼ばれる共有データベースから共有データを設定または取得したりすることができます。

ROS masterと呼ばれるプログラムは、node を自分自身に登録し、topic のnode 間通信を設定し、parameter server の更新を制御します。master は、すべての node が master に登録され後に、ノード間のP2P通信を設定し、メッセージやサービスコールは master を経由せずに行われます。この分散型アーキテクチャはロボット開発に適しているだけでなく、現代的なネットワークを介して協調するロボットシステムの構築にも適していると言えます。


事例

多くの大学や研究機関、企業がROSを活用しています。例えば、Amazon Robotics の物流ロボットはROSを採用し、物流センターの自動化や省力化に用いています。ソニーのペットロボット「aibo」は、2018年に新型がリリースされました。ROSを採用しており、人を識別する人感センサーと、撫でられているか叩かれているかを感知してから行動を起こすタッチセンサーを搭載し、より自然なペットロボットとして進化しました。

ROSは、産業用ロボットアーム、移動ロボット、ヒューマノイド型ロボット、UGVUAV(ドローン)、USV (自律航行船)等に広がっています。公式サイトの以下のページでは、様々な ROSの活用事例が紹介されています。

ROSはロボット技術のコンテストでも広く使われています。2015年に開催されたロボット技術コンテスト「DARPA Robotics Challenge」では、23チーム中18チームがROSを利用していました。2017年のつくばチャレンジでは、参加したチームの3分の2以上がROSを利用しています。


今回の記事では、現在のロボット工学の基本的なトピックの一つとして、ROSを紹介しました。AI関連の記事はもちろんのこと、現代のAI が、ロボットや機械工学とクロスオーバーしているロボティクス領域の記事も今後は増やしていき、重要な情報やトレンドを継続的に共有していきたいと考えています。


おまけ
以下の記事でロボット開発の歴史を紐解きながら、今後のAIとの統合によって求められるものは何かについて語っています。ご興味がございましたら、こちらもご覧ください。


この記事が気に入ったらサポートをしてみませんか?