LoginSignup
5
5

More than 5 years have passed since last update.

ざっくりROS理解(入門)

Last updated at Posted at 2019-03-09

概要

この章では自動車を例にROSの概念を理解します。

ROSとは

時間がない人に向けて。
ROSとは、JavaやC#のようなオブジェクト指向をロボットに取り入れたフレームワークである。
です、これを理解できた人は手を動かさなくとも大丈夫かもしれません。
それ以外の人は手を動かしながらROSを理解していきましょう!

準備

以下のファイルをcatkin_ws/src/以下に入れて
catkin_makeしてくコンパイルしてください。
https://github.com/Keisuke08aw/robot-lecture

セットアップ.png

コンパイルが通ったら、早速ロボットを立ち上げます。

ロボットファイルの実行

roslaunch robot-car main.launchで立ち上げましょう。
コマンドの意味はロボットが立ち上がったあとに解説します。

セットアップ.png

ここまでうまくいったでしょうか。
うまく行っていない場合、考えられるエラーとして

  1. パスが通っていない
      一度bashrcを開いて、しっかりとcatkin_wsがパスとして入っているか確認してください。もしくは一度ターミナルを閉じて再度コマンドを実行してみてください。

  2. 必要なパッケージが入っていない。
      エラーの中で必要なパッケージが入っていないと赤字でそのパッケージ名が表記されるので、そのパッケージをインストールしてください。

ROSの概念

それでは、今回動かしたこの自動車を使ってROSの概念について説明していきたいと思います。
今、ロボットが動いている状態で次のコマンドを打ってください。
rosnode list
すると以下のような表示がされると思います。
セットアップ.png
これらの一つ一つのファイルらしき物(ノード)が、今回扱うメインのトピックです。

ROSにおけるノードという概念

ROSはC++とPythonでかけます。以下のように一つ一つのファイルが独立してお互いに情報をやり取りしながら動いています。
さっきのコマンド、roslaunch robot-car main.launchは具体的には
ノードの立ち上げを以下の図のように行っています。

セットアップ.png

ノードというとわかりずらいですが、要はJavaやC#でいうインスタンスのことです。
roslaunchコマンドで複数のインスタンスを一気に立ち上げ
立ち上げたインスタンス同士がプロパティのやり取りを行っていると考えられれば、ほとんどROSは理解したといっても過言ではありません。
これがいわばROSにおける原点にして頂点なるものです。

車を動かすときに、今回は大きく4つのファイルを作成する必要がありました。

  1. コントローラ
  2. シミュレーター
  3. 画面表示

です。上の図から見てわかるように、要はROSというのは
javaやC#のようなオブフェクト指向言語のように
実現したいものを部品単位に分けて、情報をやりとりするように設計されています。

ROSにおける考え方

今回の場合、車のシミュレーションを作りたかったのでオブジェクト指向っぽく考えると
操作する人、車、シミュレーター、画面表示の4つに分解され、それぞれを独立して実装させました。
セットアップ.png

ROSではこの、オブジェクト一つ一つのことをノードと呼びます。
また、オブジェクトが他のオブジェクトにメソッドを通してプロパティを渡す時があると思いますが、
ROSではメソッドのことをトピック、プロパティはメッセージと呼ばれます。
なので。roslaunch robot-car main.launchとは、
4つのノードが独立してトピックを通じ、メッセージのやり取りを行っていた
というのが正しい解釈です。

その他

おおざっぱにROSを理解するため、ノードの説明はざっくりと行っています。
tfは本来画面表示をするものではありませんが、便宜上そのように書きました。
興味がある人はコードをいじくり回して、色々と遊んでみてください。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5