2016/12/05

ROS(Robot Operation System)について

今までやったこと
SLAMの概要⇨visual SLAM

これからはvisual SLAMについてアルゴリズムとか述べていこうと思いますが、
やはりこうゆうのは実際に動かしながら勉強する方が楽しいものです
色々なSLAMを実行できるフレームワークROS(Robot Operation System)を紹介します



読み方はロス。
SLAMを研究している優秀な方々は自分のSLAMをROSに頼らないスタンドアロンで公開したりしていますが、
ROS(Robot Operation System)を介して実行できるようにしている方々が多いです

monocular SLAMで評価されている論文である
PTAM,DTAM,SVO,LSD-SLAM,ORB-SLAM,ORB-SLAM2(年代順)などがROSで実行できます

ググれば出てきます
それぞれのインストール方法もそのうち書いていきたいです

ROSとは何か
R"OS"ってなってますけどOSと言うよりはミドルウェアです

Willow Garge 社が2007 年に設立しました

プロセス間通信のための通信ライブラリとプログラムをコンパイルするためのビルドシステムからなり、加えて便利なツールが用意されています.

ロボットを動かすにはいろんなプロセスを動かす必要があります.

いわゆる普通のOS(公式サポートはubuntu)とそのプロセスの間に入り、
データのやり取りをしやすくします。

例えばロボットのカメラが写真を撮り,その画像を受けてロボットの動作を決定した
いとき,
カメラで画像撮影⇒画像処理⇒処理した画像からロボットの動作決定ロボットの動作という流れをとるとします。

普通はそのロボットに対して最適なソフトウェアが作られます。

しかしその場合、ロボットが変わった時、ソフトウエアの再利用が困難になります。
そこでソフトウェアをプロセスに分解し、組み替えやすくします。下の図を御覧ください。


下の図を御覧ください。ROSではプロセス(ROSではノードという)はトピックに向かって決まった型のデータ(ROSではメッセージという)を吐きだし(publishするという)

また別のノードがトピックに吐き出されるデータを読み込み(subscribe)します。
これは一方的な動作で、返り値が欲しければサービスという機能を用います


引用元::M. Quigley, B. Gerkeyy, K. Conleyy, J. Fausty, T. Footey, J. Leibsz, E. Bergery, R. Wheelery, A. Ng, "ROS: an open-source robot operating system,"  ICRA workshop on open source software, Vol.3, No.3.2, pp.1-5, 2009.

これによって例えば画像を取得するカメラが変わっても、画像取得部分のノードを変えれば良いだけで、他のノードは再利用できるということになります

また、プロセスが独立しており、入出力がかっちり決まっているので、

各ノードを違う言語で書くことができます

ROSでは高速動作のc++、強力なライブラリを持つpythonに対応しています

最後にROSのシステムについて述べます

まず、パッケージシステムについて

人のプログラムを実行するとき、依存ライブラリが増えるととっても大変です

コンパイルに数日かかることもあります

そんな時、一つのパッケージにまとまって、依存関係も書いてあったら便利なのでそうなっています

次にビルドシステムですが、

2012年のROS groovy(ROSは毎年バージョンアップし、groovy→hydro→indigo→jade→kineticみたいにアルファベット順に名前がつく)になる前まではrosbuild、それ以降はcatkinになっています

rosbuildはみなくなってきましたが、まだ使うことがあるので見分けることができるようになっておいてください

package.xmlがあったらrosbuild、manifest.xmlがあったらcatkinです

実は、ビルド自体はCMakeLists.txtだけに従うので、ROSのビルドシステムにこだわらず、外部のビルドシステムでもビルドできることはROSに依存しないという点で利点です

最後に、ROSの強力なツールがすごく便利です

ノードのネームスペースやパラメータをいじりつつ同時実行するlaunch

ノードやトピックを可視化するrqt_graph

簡単に座標変換できるtf

データロギングツールrosbag

メッセージ可視化ツールrviz

現在は独立したもののROSから発祥したシミュレーションツールgazebo

などは一通りROSやるなら触れることになるかとおもいます

おまけ

ROSに似たものにRTMがあります、日本のROSみたいなのです

だれでも投稿できるROSに比べて一定の品質が保証されているので、研究用よりも企業用に用いられる事が多いようですが、使用者が少ないのであまり私は魅力的に感じません

何よりも検索しても情報があまり出てこないのがつらいです

ROSは情報があふれています

wiki読めばだいたいどうにかなるレベルです

ROSとRTMの併用も考えられています

0 件のコメント:

コメントを投稿