2016年10月8日土曜日

【Book】Programming Robots with ROS CHAPTER 20 読んだ【その1】

こんにちは。

前回CHAPTER23から始めたから次は22かな、と思ってたのですが、気分屋なのでCHAPTER20(Tools)読み始めました。

1日1チャプターペースで読んでいけば今月末には一通り読めてる、はず。
頑張れ未来の俺。

=============================================================

CHAPTER20 Tools

効率的なソフトウェア開発には良い開発ツールが必要です。
 エディタ、バージョン管理システム、テストフレームワーク。

この章ではいつ、どうやってROSのツールを使うか説明しています。

⚪️The Master and Friends: roscore
roscoreの説明。以前の章で触れられているが、実際に何をしているかをこの章では 取り上げている。

roscoreを実行すると、3つのツールが開始される。

1. master: name serviceをhandle
2. parameter server: key/value parameterを保持する
3. rosout node:すべてのノードからデバッグメッセージを集める

ROS nodeは開始時に自分自身を登録するためにmasterにアクセスするので、masterがない状態でnodeを開始しようとすると、以下のような警告がでます。
 Unable to register with master node (省略、やってみてね。)

登録時に各ノードは自身のnetwork addressを提供する(後で各々通信するために)
マスターはそのアドレスをテーブルで管理する。

登録時に各ノードはsubscription, advertisements, servicesについても登録する。
例えばrospy.Publisherを使うときには、自分のノードはpublisherだとrospy libraryがmasterに登録する。publisher listを元に、subscribe側のノードは自分が読みたいtopicがないか探して、その後直接pub->subへデータが送られる(masterを介在せずに。)

name lookupで重要な役割を果たすmasterは、例えばkillされてしまった場合、リカバリー不能となることが多い。すでに動いているノードはそのままでも、新しいnodeは通信を行えないし、新たにconectionはできない。masterが死んだら再起動しましょうね。

ただし、ロボットが無線の届かないとこに一瞬行った、とかならば再度電波が届くようになったら再開できるようにしとくべし。幸運なことにmasterはロバストでツールもよくテストされてるよ、とのこと。

nodeがcrashした場合、普通は大きな問題ではないが、もはやだめ、ってときにはrosnode cleanup をやればまっさらになる。

⚪️Parameters: rosparam
parameter serverについての説明。
key/valueの辞書の管理。

key: string
value: どの型もとりうる。

どのnodeもparameter serverからread/write可。

注意:Parameterはconfiguration用、communication用ではない。
高頻度のやりとりにparameter使うとパフォーマンスが出なくてがっくりしくるよ。
そういう場合はtopicsを使いましょうね。

普通はcodeからparameterにアクセスされるが、(rospy.get_param()/rospy.set_param()) コマンドラインからもset/getできます。

やり方の例はこんな感じ。

$ rosparam list 
パラメータが表示される。
$ rosparam set my_param 4.2
$ rosparam get my_param
4.2
みたいな使い方。

Parameter valueはYAMLでも設定できます。

============================================================
長くなったので続きのroscdは今度書きます。

【感想・まとめ】
roscore, ros_param (parameter server)について書いてある部分を読みました。

・roscoreが死んじゃったらその後は新しいnode追加とか、新しい通信とかできないから
再起動しましょう。
・nodeが死んでも全体としては特に問題ないけど、どーしようもないとき(?)rosnode cleanupするといいらしい。
・parameter serverはconfiguration用、high-volume, high-rateのnode間の通信には使わないほうがいいよ、topic使おうね。

みたいなことが書いてあった気がします。

前回はほぼ要約で今回はほぼ翻訳のような統一性のなさ、次回どうしようかしら。。
まー後で読んで自分でわかればいっか。

英語読むスピードが遅くなってるなー、と思って読み始めたのですが、一旦日本語の本で内容を読んでから読んでみたらそんなにスピードが気にならなくなってきました。最近まで英語もロボットもご無沙汰だったので完全にリハビリ生活でございます。。

おやすみなさい〜、次回はNavigating the Filesystem: roscdから。








0 件のコメント:

コメントを投稿