工場の自動化を助ける産業用ロボット。産業用ロボットを動かすためには、「ティーチング」という教示作業が必要です。ティーチングでは「ロボットの動き方」を設定していますが、そもそもロボットが動くためのシステムも搭載されていなければ、動き方すら設定できません。
そのロボット用の代表的なシステムが「ROS」です。産業用ロボットがどのような仕組みで動いているのか、システムの視点から簡単にご説明します。
ROSには開発ツールやライブラリが内包されている
ROSは、Robot Operating System(ロボットオペレーティングシステム)の略です。OSという名前はありますが、Microsoft WindowsやmacOS、iOSなどのオペレーティングシステムとは異なり、ROSは開発ツールやライブラリが含まれたオープンソースソフトウェアを指します。
ロボットのソフトウェア開発をしている米国企業・Willow Garage(ウィローガレージ)社が開発し、Open Source Robotics Foundation(オープンソース・ロボティクス財団)、通称『OSRF』というNPOが管理しています。
ROSが広まるまでは、メーカーや研究者が独自のロボットシステムを開発していたため、開発ノウハウが一般化せず、技術的なブレイクスルーが生まれないことや開発コストの高騰などが課題となっていました。
現在は、全世界に公開されているROSのおかげで、過去に開発された技術やノウハウを誰でも活用できるようになり、ロボットシステムの開発や進歩速度が速くなっています。
分散処理のできるROSが産業用ロボットに欠かせない理由
産業用ロボットが動くためには、プログラムが必要です。動き方を設定するティーチングは、ロボットの機械そのものに動作を設定するのではなく、搭載されているOSにプログラムを書き込みます。
PCやスマートフォンといった一般的な電子機器にもそれぞれ最適なOSが搭載されており、産業用ロボットが採用しているのが、ROSです。代表的なOSのMicrosoft Windowsは『集中管理型』の処理システムですが、ROSは『分散処理』システムを採用しており、産業用ロボットと相性がよいとされています。
集中管理型のシステムでは、メインプロセッサがすべての情報処理と命令を行います。システム構築は簡単ですが、多くの情報を高速かつ連続で処理しなければならない場合、処理が追いつかず、動作遅延やシステム停止を招く可能性があります。
産業用ロボットには多くのアクチュエータやセンサーが搭載されています。常に変動するアームの座標やセンサーからの情報を絶えず取得し、最適な動作をすばやく命令できなければ、作業を安定して実行できません。
分散処理型は、複数のプロセッサが情報処理と命令を行うシステムです。システム構築が集中管理型よりも難しく、メンテナンスの手間もかかるものの、処理スピードや安定した動作が見込めます。ロボットのアームや関節、センサーなどに分散して設置されたプロセッサが、それぞれ担当しているプログラムを実行するだけなので、産業用ロボットの安定した運用が可能です。
また、ROSのライブラリには世界中で開発されたプログラムが公開されていたり、C++やPythonといった複数の言語に対応していたりするなど、ROSには産業用ロボットシステムの開発環境が整っているのです。
『ノード』がプログラムを実行する。ROSの構成要素
ROSの大きな特徴である分散処理。ROSでは分散処理がどのように行われているのか、プログラムの基本的な構成要素とあわせて、簡単にご説明します。
ROSのプログラム『ノード』
ノードとは、一般的なコンピュータの『プログラム』を指します。コマンドと言い換えることも可能です。ノードは独立しているメモリ内でプログラムを実行しており、ノード同士が情報のやり取りを行うことで、ロボットの制御を行います。
関連する複数のノードをまとめたものが『パッケージ』です。一連の動作を実行するためのノードをパッケージとしてまとめることで、管理が簡単になります。ROSライブラリには、すでに開発された汎用性の高いノードやパッケージが配布されており、システム開発者はこれを自由に活用できるのです。
通信回路の役割を担う『トピック』と、情報を表す『メッセージ』
ノード同士が情報をやり取りするための回路(データパス)のような役割を担うのが『トピック』です。トピックを介して送られる情報は『メッセージ』と呼ばれており、ノードはトピックを通じてメッセージをやり取りすることで、プログラムを実行します。
ノードを管理する役割の『マスター』
『マスター』はノード同士が情報のやり取りをする際に、お互いのノードやトピックを識別する仕組みです。パッケージはノードのまとまりの名称でしかありませんが、マスターはそれぞれのノードを管理するシステムのような役割を担っています。
これまでの役割をまとめると、以下のような構造となります。
マスターが各ノードやトピックを管理し、ノード同士がトピックを介してメッセージをやり取りすることでプログラムを実行します。関連するノードはパッケージとしてまとめられています。
このほかにもさまざまな構成要素はありますが、ROSの基本的な構成要素の初歩的な部分についてご紹介しました。
【事例紹介】ロボット業界で広く活用されるROS
ROSには世界中の開発者が生み出したプログラムやノウハウが蓄積されています。ROSは産業用ロボットだけでなく、サービスロボットや研究用ロボットにも利用されています。
最後に、ROSが活用されているロボットの事例をいくつかご紹介します。
パナソニック社のトマト収穫ロボット
パナソニック社が開発したトマト収穫の産業用ロボットに、ROSが搭載されています。センサーやAIを使ってトマトの色や形を認識し、熟したトマトを傷つけないように収穫できるロボットです。作業員よりも動作は遅いものの、ロボットは昼夜問わず可動できるため、生産量はほとんど落とさずに人件費の最適化が行えるようになったそうです。
引用:トマト収穫ソリューション~AIで農業の人手不足解消へ~トマトを自動で収穫するロボットが活躍
Rethink Robotics社の協働ロボット
2017年10月、協働ロボット開発の先駆者であるRethink Robotics社が廃業となってしまいましたが、同社のロボットにはROSが搭載されていました。センサーによる画像認識と、その情報にもとづいた動作を行うことができ、協働ロボットという市場の創出に貢献したロボットです。
SONYのペットロボット『aibo』
SONY社が1999年に販売を開始し、2018年に大幅なリニューアルをして話題を呼んだペットロボット『aibo』。人感センサーで人を識別したり、タッチセンサーがなでられているか、叩かれているのかを判断した上で、行動に移したりしています。こういった情報を処理し、どのような動作を行うのか演算しているのがROSです。
ROS2.0へ。進化を続けるROS
ロボットが大手企業だけでなく、中小企業や一般家庭などでも活用されはじめているため、OSやネットワーク環境に依存せずに稼働できるシステムになることも重要です。
ROSは現在、ROS2.0へと進化しています。技術の進歩速度は早く、初代ROSが開発された2007年当時の環境とは、求められる処理が大きく変わっているからです。ROS2.0は、こうした時代の潮流を受けて開発されています。
ROSはロボットがより高性能、かつ使いやすくなるためのシステムなのです。産業用ロボットを活用する際、ROSについて意識することはほとんどないかもしれません。しかし、ロボットがどのような仕組みで動いているのか知っていることで、SIerとの連携が上手くいったり、活用領域の幅を広げたりすることができるでしょう。