こんにちは!!
無事シスコンになることができました、17のいとまさ(@itomaquimaqui)です
この記事は春の新歓ブログリレー15日目の投稿です
新入生の皆さんは今日は新入生セミナーですね
私は授業がなくてほっとしております
さて、本日はROSについていろいろ話していきたいと思います
ROSについて少しでも興味をもっていただければ幸いです
ROSについて
ROS(Robot Operating System)はOSRF(Open Source Robotics Foundation)が開発・メンテナンスしているロボット用OSのことです
Ubuntu上で動作し(MaxOSXやその他のLinuxでも動作します)、だれでも利用できます
OSというよりはLinuxのミドルウェアに近いものです
ROSはノード間の通信方法が特殊です
ノードはお互いがトピックを介して通信しています
ノードからトピックへデータを配信(Publish)したり、逆にトピックからデータを購読(Subscribe)したりすることで双方向へと通信を行っています
さて、ROSの各要素を詳しくみてみましょう
ノード
ノードはROSパッケージ内の実行ファイルです
ノードはROSクライアントライブラリ(メッセージ・サービス・パラメーターサーバー)をつかってほかのノードとやり取りをします
ノードは生成時に通信時の識別のために固有の名前を付けなければいけません
マスター
マスターはノードやトピック等の名前の管理を主に行っており、ノード間で通信する前にノードがどのトピックにつながっているかを解決する手段を提供しています
名前の管理を行っているため、マスターはシステムの中で一つしか存在できず、また一番初めに起動していなくてはいけません
一般には $ roscore で起動します
パラメーターサーバー
パラメーターサーバーはデータを蓄積することができ、rosparamを用いてデータの操作などを行います
パラメーターサーバーにデータを蓄積することで指定したパラメーターの変更をスムーズに行うことができるようになります
またパラメーターサーバーはマスターの中で動作しています
トピック
トピックとは先ほども説明しましたが、ノード間の通信の仲介役のような存在です
各ノードは他のノードへデータを送りたければ、まず、トピックへとデータを配信し、データを受け取るノードはそのトピックからデータを購読します
このようにトピックはノード間で通信をするのになくてはならない存在なのです
またデータの通信(ノード・トピック間)はメッセ―ジを送信することで行われています
rqt_graphというもので通信を可視化したり、rostopicでトピックについての情報を得ることもできます
メッセージ
メッセージとはノード・トピック間の通信手段です
メッセージはパッケージのmsgディレクトリに保管されており、一行ごとに型と名前が記載されているただの単純のテキストファイルです
サービス
ノード間の通信はトピックを介してメッセージを用いて行うといいましたが、もう一つ方法があります
それがサービスを用いた方法です
単に通信するだけでなく何かノードに仕事をさせてその処理を待ちたいときに用いる方法です
トピックによるメッセージの送受信は非同期でした
非同期というのは購読者も配信者も自分の都合のいいタイミングでメッセージを送受信することができるということです
しかし、この方法では待つということができません
サービスを用いた同期通信では、ノード同士は一対一の通信で、送信側ノードからリクエストを送信した後に受信側ノードからのレスポンスの受信を送信側ノードが待つというようになっています
その他
そのほかにもROSにはバッグファイルやローンチファイルなどの便利な機能もありますが、今回は省略します
詳しくはROS公式サイトをご覧ください
また今回の記事を書くにあたってROS(Robot Operating System)を使うというサイトも参考にさせていただきました
併せてご覧ください
また質問や鉞等ございましたらTwitter(@itomaquimaqui)までどうぞ
最後に
新歓ブログということで、最後に新入生へアドバイスしておこうと思います
私は中高と運動部に所属していて、パソコンをほとんど触ったことがない状態で入学しましたがロ技研で行われる講習会に参加したり、部室にある本を読んだり、先輩に聞いたりすることで圧倒的成長ができました
ロボットに関わることがしたい人、圧倒的成長したい人は未経験だとか言い訳をせずに是非ロボット技術研究会に入部してください
環境は整っています、それを活かすか否かはあなた次第ですよ
相談したいことなどあれば遠慮なくTwitter(@itomaquimaqui)までDMでもリプでもどうぞ