ROS(Robot Operating System)を初学者がやってみた!#2<トピック通信!亀を召喚編>
はい、どーも!まっちゃんです!
前回はROSって何なのよwってお話をかなり大雑把にまとめてみました!
ROSでできることだったり、メリットとデメリットについてなんかお話してるので、「ROSってこれから自分もやる予定なんだけど、どんな感じなのか軽く知りたい!」だったり「企業とか学校でやってるんだけどいまいちさっぱり分からない」って人はぜひ読んでみてください!
なんだか最近はこのROSを企業の研修で学ばせてるとこもあるみたいなので、工学部で今も勉強してるって人も一回見ておくといいかもですね!
さてさて、今回から実際に中身を触っていくわけですが、使ってるOS(OSってのはアンドロイドとかWindowsと同じものです!)がubuntsであることに注意です!
今回もPCにうといボクだからこそ話せる話とか視点でお話をしていこうと思うので、一緒に楽しく学んでいきましょう!
(より正確な情報が知りたいとか専門的にガッツリやりたいっという人向けというよりは軽くざっと学びたい人向けです!)
ちなみにROSのインストールについては何も記事を書いてないけど、やってある前提で話を進めますね(機会があればまた書くけど、ここでは内容理解を手助けする記事を書きたいなと思っているので割愛)
あと、最初は意味不明なことが多すぎて止めたくなると思います!笑
(ボクがそーでしたw)
意味不明なことはしょーがないんで、もう「魔法」のようなものだと思って話を進めていこうと思います!
「え?どゆこと??」
それは読んでのお楽しみ♪
今回達成したい課題は以下の4つみたいです
①ノードとトピックについて説明しなさい
②「rosnode」、「rostopic」に関するコマンドを説明しなさい
③「rostopic hz」「rostopic bw」を使用し、通信量と通信周期を調べなさい
④パッケージ「turtlesim」のノード「turtlesim_node」とノード「turtle_teleop_key」を起動後、トピック「/turtle1/cmd_vel」を購読し,「rqt_graph」によりノード及びトピックの関係を確認しなさい。「rqt_graph」で表示されたグラフを必ず加えグラフを用いてノードとトピック間の関係性を説明しなさい。その際に不明なノードが起動している場合には、コマンドによりノードの情報を確認しなさい。
おいおいマジかよ...
いきなり初学者にとっちゃ意味不明なんだけどw
ってかさ、問題の意味が分かんない!笑
専門分野の勉強やってるとよくあるよね!こーゆー言ってる意味が分からない現象!!
いきなり挫折する人多いと思いますが〜
とりあえず順番に調べながら、ゆっくりやっていこうと思いまーす
(これから数回にわけて基本を学んで、最終的にはこの答えに辿り着けたらいいな!)
<ノードの起動>
分からない用語と分からない操作が多発していますが、やりながらちょっとずつ頭になじませていこーかな!
最初に用語だけ説明してもなんのことかイメージ湧きにくいしね!
CUI操作もさ、一気に説明してもきっと分からない!やりながらちょっとずつ焦らずに馴染んでこ!(自分に言い聞かせてるw)
大丈夫!魔法だから!分からないのは仕方ないよ!
まずはターミナルを立ち上げよう!そんで一番肝心なROSを立ち上げます!
ターミナルの真っ黒画面に以下のコマンドを入力してみました!
(★注意!これから先のコマンドの先頭に「$」って付いてるけど、「コマンドです!」って印みたいなものなので入力する時は無視でお願いです!動かないと思いますので)
$ roscore
そーするとなんかいっぱい英語が出てこなかった?笑
大丈夫、壊れたわけじゃないから!
とりあえず中身は無視して、「ROSが立ち上がった」という認識だけでここは乗り切ろう!
実はこのコマンド「roscore」はノードやトピックを管理するマスターを起動するコマンドらしいです!
ノードやトピックっていうのは後々説明していくとして、ここではゲームの「電源を入れた!」感覚にしておこう!!
ぱっと見エラーって文字が見えなかったら多分大丈夫!笑
さてさて、これでROSを動かす準備は整ったみたいだぜ!
ふふふ、これで魔法を使う環境は整った!
まあよく分かんないけど、とりあえず動かしてみるか!
というわけでここで新しいターミナルを立ち上げて以下のコマンドを入力してくよ!
$ rosrun turtlesim turtlesim_node
(「$」は入力する時抜いてネ!)
そーすると数字と文字がたくさん出てくるんだけど、もう一つ大きな変化がなかった?
そう!亀が出てきたあーー!!
あ、この亀ちゃんは人によって、立ち上げたタイミングによって変わるみたいですよ!片腕上げてる!かわいー!!
さて、ここで先程入力した亀を召喚する謎のコマンドがありましたよね!
あの召喚魔法の意味をここで軽く解説しましょう!
この魔法(コマンド)のルールを覚えておけば、使い方によってはもっと強力な武器を召喚できたり、動かすことができるぞ!!ぜひ覚えようぞ!
まず冒頭の「rosrun」!これはノードを起動する時に発動する魔法(コマンド)です!
詠唱する時の謳い文句みたいに最初につけるみたい!(SAOで言うと「システムコール」みたいな感じ!)
ここでも出てきたぞ「ノード」!
よし、ノードについて説明するぞ!!
ノードってのは情報を処理する1つのプログラムのようなものって感じかな
色んな役割をもってるノードを組み合わせて一つの大きなシステムを作っていくんだけど、きっとぴんとこない!!
たとえばNARUTOで木遁の術を出す時って水遁と土遁を組み合わせるじゃん?
あれと似てる!ってイメージでここではOKだと思う!
ノード(魔術)には色んな種類があって、それぞれを自分で好きに組み合わせて一つのより強力な魔法を発動させることができるんだ!
いいじゃん!ノード!!どんどん使いたくなってきたな!!
今回は亀を召喚する魔法を発動したわけだ!
まとめるとコマンド「rosrun」はノードを立ち上げる時に入力するコマンドってことです!
続いて「rosrun」をスペースを隔てて入力(詠唱)した「turtlesim」という文字、これについて説明していくぞ!
これはパッケージの名前だ!
あーパッケージなら聞いたことあるわ!
お菓子のパッケージとかあるもんな!
実はそのイメージでいいかもしれないw
さっきさ、ノード(魔術)の話したじゃん?
でもさ、いっぱいあるらしいのよ〜
だからごちゃごちゃすると魔法唱えにくいじゃん?(特に同じ名前の魔法とかあったら超やっかい!)
そうならないためにパッケージなんてもので箱分けしてるって感じ
そしてさらにスペースを隔てた最後の文字、これがノードの名前だ!
つまり魔術の名前だ!!
そう、頭のいい魔術師ならお気づきであろう...
我々魔術師が魔法を使うにはこのように詠唱する!!
「rosrun [パッケージ名] [ノード名]」!!!!
おお!これでボクらも魔法が使えるんだ!!
その証に今回はかわいい亀ちゃんを召喚することに成功した!!
これを知っていれば、もっと他の魔法も使うことができる!
ROSってなんかすげー!例え話で魔法なんて使ってみたけどほんとに魔法に思えてきた!!
しかしこんな程度で驚いていてはまだまだだな!
先程も言った通り、このノードは組み合わせることでより強力なシステムが完成する!
次回以降はこのノードを組み合わせてもっとやれることを増やしていく..つまり、より強力な魔法の使い方を学んでいくぞ!
いかがだったでしょーか??
気づいたら魔術師になってましたねw
書いているうちに「あ、魔法に例えたら面白そう」と思ったのでやってみましたw
でもさ、ふつーに学んでたらきっと眠くなりますよ!
(ボクがそーでしたからw)
まずはこんな面白おかしく内容をざっと把握して、やってく中で詳しい内容とか分かってきたりすると思うんです
ROSは魔法
ボクはそー思いました
魔法って意味不明じゃないですか?w
ROSやCUI操作も最初は意味不明wほら、つながったでしょ?ww
ということじゃなくて、初回の記事にも書いた通り、色んなことができるみたいなんですよ!それこそロケット作ったりもできるみたいなんです!
魔法みたいじゃないですか??
そんな無限の可能性があるツールだと信じて、これから学んで思いますので、あなたも一緒に頑張りましょっ!!