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 年に設立しました
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の併用も考えられています
例えばロボットのカメラが写真を撮り,その画像を受けてロボットの動作を決定した
いとき,
カメラで画像撮影⇒画像処理⇒処理した画像からロボットの動作決定ロボットの動作という流れをとるとします。
普通はそのロボットに対して最適なソフトウェアが作られます。
しかしその場合、ロボットが変わった時、ソフトウエアの再利用が困難になります。
そこでソフトウェアをプロセスに分解し、組み替えやすくします。下の図を御覧ください。
下の図を御覧ください。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 件のコメント:
コメントを投稿