ROSを使用したCRANE+の動かし方 その1

はじめまして!
アールティでアルバイトをしております大学2年生の長谷川と申します。
これから、何回かに分けまして、ROSを使用してTurtleBot2用ロボットアーム「CRANE+」を動かす方法について解説していきたいと思います。ROSを知らない、使ったことがない方でも、この解説を最初から読んでいけば、最終的にはCRANE+を動かすことができるようになるように解説していきたいと思っています。よろしくお願いします。
CRANE+全体像500

ROSとは

ROSとは、Robot Operating Systemの略で、ロボットベンチャー企業Willow Garage社が中心となって開発・公開している自律ロボット用ミドルウェアのことです。大きな特徴としては、使用が無料であること、オープンソースであることなどが挙げられます。日々開発を行っている世界中のプログラマーによるROSコミュニティも形成されており、何らかの原因でプログラムがうまく動かず、自分では解決できないような場合は、ROS Answersなどで全世界のユーザーに対し質問をすることもできます。多くの場合、自分の抱えるトラブルについてはもう質問されており、それに対する回答を見ることで、トラブルを解決することができます。

ROSを使うメリット

前の章ではROSとは何かについて解説しましたが、ROSを使うメリットはどこにあるのでしょうか。
例えば、あるカメラつきのロボットがあって、カメラでとった画像を認識して動くようにしたいとします。この時、カメラで画像撮影→画像認識→ロボットの駆動を繰り返すプログラムを一つにまとめて作ったとしましょう。これでもロボットは動きますが、カメラやモーターがコンピューターのどこに接続されているのかなどのハードウェアに依存してソフトウェアが設計されているため、ハードウェアが変わってしまうとソフトウェアのハードウェアに依存する部分を書き直さないといけなくなります。つまり、ソフトウェアの再利用性が低いというわけです。
ROS_CRANE_1_1
では、さっきのプログラムを、カメラで画像を撮影する部分と、画像を認識する部分、ロボットの駆動の仕方を決める部分、実際にロボットを駆動させる部分に分け、それぞれがデータの受け渡しを行うようにした場合はどうでしょうか?直すのは、カメラで画像を撮影する部分と、ロボットを駆動させる部分だけになりますよね。また、同じような動作をするロボットでは、画像を認識する部分やロボットの駆動の仕方を決める部分は共通になるので、この部分を多くの人と共有すれば、他の人はその部分を利用するだけで同じようなロボットを作れるということになります。このような、ロボットのソフトウェアレベルでのモジュール化を行い、再利用性を高めようとするのが、ROSをはじめとするロボット用ミドルウェアです。
ROS_CRANE_1_2
中でもROSは、更新情報が公式ホームページからアクセスできる範囲にまとまっており、ユーザーのコミュニティがしっかりと形成されているため、他の人が書いたプログラムを最大限活用することができます。これは、ソフトウェア開発においては大きな時間短縮効果があります。

以上、ROSについての説明と、その利点についてお話してきました。
次回は、ROSの動作環境について説明した後、ROSのインストールの仕方について説明したいと思います。