2016年10月17日月曜日

ROSで始めるロボティクス(1) ー The Robot Operating System


皆さんは、「ロボット開発」と聞いてどんなイメージをお持ちでしょうか。「難しい」「専門知識が必要」「大量のプログラミングが必要」そんなイメージの方も多いのではないでしょうか。本連載ではROSを使用することで手軽に「ロボット開発」を行います。ROSではロボットの「シミュレータ」環境も充実しており、「動作するロボット」がなくても開発することが可能です。
本連載ではROSを使って差動二輪ロボットを作成し、シミュレータ上でうごかしていきます。連載を通じてROSのイメージを掴んていくことができます。また実際のToFセンサーも扱います。実際に動くロボットも作成していきます。





ROSとは

ROS (Robot Operating System)はソフトウェア開発者のロボット・アプリケーション作成を支援するライブラリとツールを提供するオープンソースソフトウェアです。
Willow Garage社が開発し現在はOSRFに寄贈されメンテナンスされています。
ROSのWEBサイト:http://www.ros.org/

ROSの登場により、今までは様々なロボットがそれぞれの開発環境で独自に開発されるという状況から、ROSにより提供されるライブラリとツールを使って汎用性の高いプログラムが簡単に書けるようになりました。

多くの開発者がさまざまな研究を行っており、ROSの「パッケージ」として公開しています。このパッケージを使うことにより、ロボットにさまざまな機能を簡単に行うことができるので、ロボットに関する特別な知識を必要とすることなく、最新のロボティスクを体験することも可能です。

ロボット開発ではデファクト・スタンダードとなりつつあるROS。これはROS採用プロジェクトが多いことからも伺えます。
たとえば感情を認識するロボットとして有名になったソフトバンクロボティスクの「Pepper」も、ROSに対応しています。

ROS対応プロジェクト
Pepper(ソフトバンクロボティスク)
Turtlebot2(Yujin Robot)
BAXTER(リシンク・ロボティクス)
Fetch(Fetch Robotics社)

他にも、ROSのサイトでは100を超えるプロダクトが紹介されています。
http://wiki.ros.org/Robots

ROSを使う利点

ROSには次のような利点があります。
ほとんどがBSDライセンスなので営利・非営利でも無料で使用できる
Ubuntuが動くPCがあればすぐに利用できる。
C++、Python、Java、octave(数値解析)、LIspといった多くの言語が使える
世界中の研究者が作成したソフトウェアを使用できる

ROSの構成

ROS自体は「分散処理システム」を提供します。汎用性のあるプログラムを「ノード」に分割し、各「ノード」同士で通信を行うことで、ロボットを制御していきます。また、通信するデータは「メッセージ」と呼びます。メッセージの送信には、送りっぱなしの「トピック」と、送ったあと相手から応答を受け取る「サービス」があります。



上の図の場合、ノード1がデータ「メッセージ」を送信(Publish)します。「ノード2」が受信(Subscrive)します。

また、関連する「ノード」は「パッケージ」として一つにまとめて管理します。


他にも用語がありますが、まずは上記を抑えておけばよいでしょう。実際にROSを使いながら随時説明していきます。

次回は、ROSの開発環境を作成して実際に動かしてみましょう。





参考文献:


140 180 ROS

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...