目次
ロボットと言えばオーダーメイドが一般的ですが、ROS(Robot Operating System)を使うとロボット開発が簡単に行えます。ROSには何が含まれているのか、また、ROSを利用してロボット開発をするメリットについて解説します。
・ROSとはロボット開発に用いるオープンソースソフトウェアのこと
・ROSには通信システムとツール、機能、エコシステムが含まれている
・ROSを利用することで短時間でのアプリ開発が可能になる
ROSとは
ROS(Robot Operating System)とは、ロボット開発に用いるオープンソースソフトウェアのことです。ロボットのソフトウェア開発を行うアメリカの企業・Willow Garageが開発し、NPO法人によって管理されています。
過去に開発されたロボットに基づく技術やノウハウが公開されているので、ロボットを作成するとき、あるいはトラブルが起こったときなどに活用することができます。
ROSはC++やPhytonなどの複数のコンピュータ言語に対応しているので、使い慣れた利用しやすい言語を用いたロボット開発が可能です。ほとんどの言語は利用者も多く、プログラミングやロボット工学を学んだ方であれば理解可能です。
ROSに含まれている内容
ROSはロボット開発に必要な情報がすべてセットになっているパッケージソフト、つまり、必要な情報をすぐに引き出せるソフトウェアプラットフォームです。主に次の4つから成り立っています。
- 通信システム
- ツール
- 機能
- エコシステム
通信システム
ロボット処理に必要な分散システムの実現のために、ノード間の通信をROSで提供しています。なお、ノードとはROSではプログラムを指します。
ROSではプロセス間の通信は、トピック(ROSでは通信回路に該当)を通じたデータ書き込み・データ読み込みによって行われます。つまり、お互いの個人情報は秘匿したまま一対一でのデータのやり取りが可能です。
ただし、基本的には同期せずにデータのやり取りを行うので、お互いが会話するというよりは、知りたいときにデータを読み込み、伝えたいときにデータを書き込むというスタイルです。
特定の相手あるいは特定の情報に関してのデータの受け渡しをしたい場合は、トピックを通じたやり取りではなく、サービスを通じたやり取りを行います。
サービスは特定の相手あるいは情報に開かれた通信システムで、トピックとは異なり同期処理されるので、自分に関連する情報が戻ってきたときは感知することができます。
ツール
ROSでは、ロボットの動作計画や動力学環境シミュレータ、GUIユーティリティーツールなどのツールを提供しています。ROS専用のツールをいくつか紹介します。
- catkin
- Rviz
- ROSbag
- ROSlaunch
- gazebo
catkinはプログラムを作るビルドツールです。ファイルのパッケージパスを取得することや、インストールもcatkinで行います。
Rvizはロボットの情報を3次元に可視化するツール、ROSbagはROSの動作を記録するツールです。その場で考察できないときでも、一旦ROSbagに入れておけば、後で検証できます。
ROSlaunchはROSで構築した環境を起動するツールです。ロボット実機の切り替えもROSlaunchを使って行います。
gazeboはロボット実機を作動する前にシミュレーションするシミュレータツールです。実際に作る前に動作を確認できるので、ロボット開発のコストを抑えることにもつながります。
機能
ROSでは、ロボットに必要な機能をパッケージとして提供しています。Navigation StackとMoveltの2つが主流で、自己位置推定や経路計画、動作計画など自立走行ロボットなどを開発するためにも不可欠な機能を利用できます。
エコシステム
ROSについて質問や議論が行えるシステムを「エコシステム」と呼んでいます。ロボット開発をしたことがない場合でも、これらのエコシステムを利用することで、ROSを用いたロボット開発が可能になります。
ROSを用いてロボット開発をするメリット
ROSを用いてロボット開発をすることには多くのメリットがあります。その中でも特に注目したいメリットを4つ紹介します。
- アプリケーション開発の手間と費用を削減できる
- ROSに対応したセンサーが多い
- パッケージの種類が多い
- ROSに対応したメーカーも多い
アプリケーション開発の手間と費用を削減できる
ロボットを開発するには、通常であればアプリケーション開発から始めなくてはいけません。しかしROSでは、Navigation StackやMoveltなどのアプリケーションがいずれもオープンソースで提供されているので、アプリケーション開発の手間を大幅に削減できます。
また、いずれも無料で利用できるため、開発費用も大幅に抑えることができます。上手にROSを活用すれば、部品や電力などのロボット本体にかかる実費だけでオリジナルのロボットを作成することもできます。
ROSに対応したセンサーが多い
近年、市販のセンサーはROS対応型であるものも増えてきました。そのため、ROSでロボットを開発してすぐに市販のセンサーを組み込み、実用化することが可能です。
元々ROSのニューバージョンであるROS2は商用利用を目的としているため、アイデアを具現化しやすいように多くのセンサーに対応するように作られています。また、ROSの利用者が増えたことからも、ROS対応型のセンサーを販売する企業が増えてきています。
つまり、アプリケーション開発からすべて独自に行うとセンサー開発も行わなくてはいけないことになる可能性がありますが、ROSを使ってアプリケーション開発を始めるならば、ROS対応型のセンサーを使って少ない手間でロボットを開発することができるのです。
パッケージの種類が多い
ROSで提供されているオープンソースソフトウェアは数千個もあります。開発したいロボットに合わせて豊富な選択肢から選ぶことができます。例えば自動走行ロボット向けのソフトウェアやペットロボット向け、ドローン向けのソフトウェアなどもあります。
ROSに対応したメーカーも多い
センサーだけでなく、コントローラやロボット本体もROSに対応した商品が多く、また、対応商品を作成するメーカーも多くあります。そのため、ROSでつくったロボットを、ROSを利用しないで開発したロボットと通信したり、コントロールしたりといったやり取りが可能です。
ROSに組み込まれているソフトウェアも日々アップデートされています。さらに多くのロボットをROSで作れるようになると予想されるので、ROSに対応した製品を提供するメーカーもますます増えると予想できるでしょう。
まとめ
ROSとはRobot Operating Systemのことで、アメリカのソフトウェア開発を行う企業が開発、NPO法人を通じて提供されているオープンソースソフトウェアプラットフォームです。ROSでは、多岐にわたる用途のロボットのアプリケーションやツール、通信システムが無償で提供されています。
実際にROSを利用して商品化されたロボットも多いので、アプリケーション開発をする前にROSの利用も検討してみることができるでしょう。