ROSの概要を絵でまとめてみる。

この土日に学んだROSに関して、ROSの概要を絵で頑張ってまとめてみる。

ROSのMasterとNodeとTopicとService

スクリーンショット 2018-01-23 0.57.48.png

  • 全体
    • ROSノードとROSMasterがいる。これらはそれぞれ別々のプロセスのプログラム
    • ROSノードやROSMasterはどのPCやロボットで実行されていても構わない。
    • ROSノードやROSMasterをいくつ立ち上げても構わない。
  •  ROSMaster
    • roscoreを立ち上げると、パラメータサーバとROSMasterとrosoutが起動される。
    • ROSMasterは立ち上がっているノードを管理し、お互いの所在を教えてあげること
    • ROSMasterはROSNodeのPublisherやSubscriber、Serviceを管理
    • ROSの名前空間の解決
  • ROSノード
    • 腕を動かすノード、位置を移動するノード等役割に応じた単位で分離されたプログラム。一つのノードが死んでも全体が落ちないために分割されている。
    • ROSノードはノード間でやりとりする方法にTopicとServiceが用意されている。
    • Topicで他のノードにmessageを送るノードをPublisherといい、受け取る側をSubscriberという。もちろん一つのノードがあるメッセージに関してはPublisher、別のメッセージに関してはSubscriberなんてことはざらにある。
    • Topicは非同期処理になっているため、Publishしたら元の作業に戻れる。
    • Serviceでは同期処理になっているため、ServiceCallしたら結果が帰るまで何もできない。
  • Topic
    • ノードが情報をやりとりするときの方法の一つ
    • やりとりする情報をmessageという
    • 一つのノードから複数のPublishもできるし、同時に複数のSubscribeもできる。
    • Subscribeはコールバック関数が呼ばれ、Publishはpublish関数を呼ぶだけでよい。非同期に動くため、publish後はすぐに元の作業に戻る
  • Service
    • ノードが情報をやりとり得るための方法の一つ
    • 同期処理を行いたい時に向いている
    • 大量のデータを流すときは、serviceで必要なときに必要なだけにした方が良い
    • Serviceを使うものをClientと呼ぶ
    • あらかじめServiceがROSMasterにadvertiseしておけば、いつでもClientがService Callすることが可能.
    • Service Callすると所定の処理が実行され、その間Clientは待機状態

ロボットが実際にあるときのROSの動き

(工事中)

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください