View on GitHub

introduction-to-ros

ROS (Robot Operating System) 入門

ROS (Robot Operating System) とは

前のページ

概要

ROSとは何かについて,厳密性を排除し簡単な説明を試みました.

一次情報に触れたい方はROS WikiのIntroductionros.orgでのROSの紹介を読んでみてください.

また,ここに記載した内容はROSに触れているうちに次第に分かってくるので,軽く読み飛ばす程度で結構です.

ROSとは

ROS (Robot Operating System) はロボットの研究開発を促進するライブラリやツールのセットを提供します.

ロボット制御のコードを書くにあたって利用できると便利なもの,くらいに捉えてもらえれば大丈夫かと思います.

以下にどのように便利なのかを記述していきます.まずはROSが掲げる目標について記述します.

ROSの目標

ロボットの研究開発において,コードの「再利用」を支援すること

the primary goal of ROS is to support code reuse in robotics research and development. [1]

ロボットの研究開発にはセンサ情報取得(知覚),知能設計(計画),アクチュエータ駆動(制御)と様々な要素があり,それぞれにドライバやコードの開発が必要です.また,可視化ツールやシミュレータ等も開発しようとするとさらに作業量が増えます.

これらを全部一からやろうとすると,一番研究開発でやりたい部分に到達するまでに大変時間がかかります.

そこで,ROSでは独自のフレームワークを定め,ROSの下で開発されたコードは容易に再利用可能,各自のシステムに組み込めるようにすることで,各自が自身のロボット研究開発に注力できるよう支援しています.また,専門分野の異なる各自がそれぞれROSの下で作成したコードを組み合わせることでロボットシステムを構成するという共同研究開発の促進も理念に掲げています.

以下にROSの特徴をざっくりと記述します.

ROSの特徴

次に,分散アーキテクチャに関連して,ROSのアーキテクチャについて説明します.

ROSのアーキテクチャ

先程述べたように,ROSは複数のノードが情報を授受しあうことでロボットシステムを構築します.ここでは,その通信方式についてとROSの基本的な用語について説明します.

ROS上で動く実行プロセスはnodeと呼ばれます.そしてノード同士では情報の送受信が行われています.ここで情報のことをtopic,送信することをpublish,受信することをsubscribeといいます.また,topicをpublishするノードをpublisher,subscribeするノードをsubscriberといいます.(1つのノードは複数のtopicをpublish, subscribeできます.あるいは一つもtopicをpubsubしなくても構いません.)topicは各ノードが好きなタイミングでpublish, subscribeできます.(非同期通信

これらのnode間通信のとりまとめはmasterが行います.ROSインストール時に動作確認で打ったroscoreというコマンドは,このROS masterを立ち上げるコマンドです.

そして,上図のような構成の通信はトピック通信と呼ばれ,これがROSで最も一般的な通信方法です.ROSには他にもサービス通信,アクション通信という通信形式がありますが,興味のある方は余談をご覧ください.

最後に,複数のノードやその他パラメータファイル等を含んだ機能の集合でパッケージと呼ばれる単位があります.

より詳しく知りたい方は以下のリンクを読んでみてください.

http://forestofazumino.web.fc2.com/ros/ros_basics.html

この辺の話は手を動かしながら理解するのが一番良いです.そして,この概念を理解するのがROSの学習において一番大事な箇所といっても過言ではありません.そこで,次のページではROSパッケージを作成し,その中で簡単なpublisher, subscriberを作成してトピック通信を実際に行うことで,上記のROSの基本的な概念を理解することを目指します.

参考文献

リンク

次のページ

目次


余談

ROSの学習において参考になったサイト,書籍

英語でググろう

ROSに関する情報は英語のほうが圧倒的に多いので,エラーなどが出て困った際は英語でググると早く解決策が見つかるかもしれません.(大体ROS Answersで同様の悩みを抱えている人が見つかります)

通信方式

ROSには先程説明したトピック通信の他にはサービス通信アクション通信という方式が存在します.

興味のある方は調べてみてください.