ROSとドローンの関係について
第2回目となります今回は、ブログのテーマになっている、「ROS」についての解説と、ドローンとの関係性について説明していきたいと思います。
安井政人のめざせ!ROSマスター! 第2回
- 2015年10月07日公開
はじめに
こんにちは。NTTソフトウェアの安井です。第2回目となります今回は、ブログのテーマになっている、「ROS」についての解説と、ドローンとの関係性について説明していきたいと思います。
ROSについて
ROSとは、Robot Operating System の略で、ロボット開発のためのソフトウェアの集合です。Operating System という名称であるため、Windows、Linux、Android、iOSを想像する方もいらっしゃるかと思いますが、ROSはUnixベースのOSで動作するミドルウェアの位置づけになります。現在安定して動作するOSは、LinuxディストリビューションのUbuntu となっております。
ROSが提供する主なサービスとして、デバイス制御、プロセス間通信、パッケージ管理などが提供されています。
ROSの特徴として、分散処理方式のミドルウェアであることが挙げられます。分散処理により、機能を分割でき、効率よく処理が可能となります。
ROSの通信モデルについて
ROSには、基本的な通信モデルとして、2つの通信モデルがあります。
Pub/Sub型
ある箱を用意して、そこに今の状態をデータとして送る人と、その状態のデータを受け取とる人によって、動作するモデルになります。
こちらの動作について、ROSの用語では、以下のように定義されています。
用語 | 用語説明 |
Topic |
ある箱のこと。 メッセージの送受信をリレーします。 |
Publisher | 状態をデータとして送る人のこと。 |
Subscriber | 状態のデータを受け取る人のこと。 |
Node |
Publisher、Subscriber は、Nodeと呼ばれる。 ROSパッケージ内の実行ファイルに該当します。 |
Publish | ある箱へデータを送ること。 |
Subscribe | ある箱からデータを受け取ること。 |
Pub/Sub型は、基本的に非同期で動作しており、データを送る人は送るだけ、データを受ける人は、そのとき問い合わせたときに格納されたデータを取得するのみです。
また、Nodeは、PublisherとSubscriber の両方の役割を持つ場合もあります。

論理的には、Topicを利用した「ブローカー型」と呼ばれる仲介役による通信モデルではありますが、物理的にはTopicはPublisher側の子プロセスとして動作しています。
サービス型
動作の開始/終了や、決まった命令を1回だけ実行したいときなどに動作するモデルになります。
Server-Clientモデルを、Nodeで構成し、Server側のNodeに、実行したい処理(サービス)が格納されています。
サービス型では、Pub/Sub型の非同期処理とは異なり、同期的に処理を行います。

2つのモデルが存在しますが、ROSではほとんどがPub/Sub型を利用したものが用いられます。また、特徴である分散処理を行うために、roscore と呼ばれるNodeを管理する仕組みが用意されています。
用語 | 用語説明 |
roscore | Master + rosout + パラメータサーバ |
Master | ROSのネームサービスとして以下の機能に用いられる。 ・NodeやTopicの管理 ・Node同士が検索するとき等に利用 ・Nodeの名前解決、ログの記録、データの蓄積・操作 |
rosout | ROSにおけるログ出力(標準出力)の機能を持つ。 |
パラメータサーバ | パラメータ(変数)を共有することができる。 |

ROSとドローンの関係
なぜ、ドローンにROSなのか。
ROSは、OSSとなっており、デバイスドライバと呼ばれるデバイスとの接続をサポートしてくれる機能が、多くのデバイス向けに用意されています。ドローン用にも用意されているものもあり、新しい製品向けにも、様々なユーザによって作成されています。
このドライバを利用することにより、開発者はドローンの差異をあまり意識せずに開発を進められることが、ドローン技術の成長を加速させていく可能性を持っていることが、ROSを利用する理由としてあげられます。
また、こちらのデバイスドライバを利用し、ROSの特徴である分散処理を活かすことで、協調飛行なども一からすべて実装するよりは、容易に実装できることが可能となることも、ROSを利用する理由にあげられます。

このように、細かい飛行制御が可能となるため、規制の整備や事故の回避にも応用できるのではないかと、考えています。
おわりに

新しい技術や、スキルの習得を好み、幅広い分野に柔軟に対応できるオールマイティなシステムエンジニア。 最近ではドローンやロボットの技術に注目し、業務を通じてNTTテクノクロスのドローン先駆者になるべく、絶賛奮闘中。 プライベートでは三姉妹のパパ。家の中は男一人で少し肩身が狭いですが、逆境にも負けず子育ても頑張っています!!