[Documentation] [TitleIndex] [WordIndex

(訳注:最新の情報は原文を参照してください.)

Note: This tutorial assumes that you have completed the previous tutorials: ROSパッケージのビルド.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

ROSのノードを理解する

Description: このチュートリアルではROSのグラフの概念を知り,roscorerosnoderosrunなどのコマンドラインツールの使い方を学びます.

Tutorial Level: BEGINNER

Next Tutorial: ROSトピックの理解

準備:ros_tutorialsのインストール

このチュートリアルでは、チュートリアル用のシミュレータを使います。インストールしていない場合は, 下記のコマンドを実行してシミュレータをインストールしてください。

$ sudo apt-get install ros-<distro>-ros-tutorials

'<distro>'の部分は使用しているディストリビューションの名前(hydroやindigoなど)に置換します

グラフ概念についての,てっとり早いおさらい

ノード

ノードは ROS パッケージ内の実行ファイルに他なりません.ROS ノードは ROS クライアント ライブラリを使用して他のノードとやりとりします.ノードはトピックへ配信したり購読したりできます.ノードはサービスを提供したり,使用したりすることができます.

クライアント ライブラリ

ROS クライアント ライブラリは異なるプログラミング言語で記述されたノードがやりとりできるようにします.

roscore

roscore は ROS を使用する際に一番初めに起動させます.

起動してみましょう:

$ roscore

これに似たような表示がされるはずです:

もしroscoreが初期化されていないなら、ネットワークの設定に問題があるかもしれません。Network Setup - Single Machine Configurationを参照してください。

roscore が初期化されず, パーミッションの不足に関するメッセージが表示される場合, おそらく, ~/.ros フォルダの所有権が root にあるため, フォルダの所有権を再帰的に変更します:

$ sudo chown -R <your_username> ~/.ros

rosnode の使い方

新しいターミナルを開いて,roscore が何をしているのかを rosnode を使用して見てみましょう.

Note: 新しいターミナルを開くと環境がリセットされ, ~/.bashrc が読み込まれます. rosnode のようなコマンドの実行に問題がある場合, 何かしらの環境セットアップファイルを ~/.bashrc に追加するか, 手動で再読込しましょう.

rosnode は実行中の ROS ノードについての情報を表示します.rosnode list コマンドはアクティブなノードのリストを表示します:

$ rosnode list

この表示から rosout という1つのノードのみが起動していることが分かります.このノードはノードのデバッグ出力を集めてログ化するために常に起動しています.

rosnode info コマンドは特定のノードについての情報を返します.

$ rosnode info /rosout

このコマンドで、rosoutについてさらに情報が得られます.ここでは以下のようにrosoutrosout_aggを発行していることが分かります.

他のノードについても見てみましょう.そのためにまず、rosrun を使って別のノードを起動しましょう。

rosrun の使い方

rosrun はディレクトリのパッケージ名を使用して,パッケージに含まれるノードを(パッケージへのパスを知ることなく)起動します.

使い方:

$ rosrun [package_name] [node_name]

新しいターミナルで,turtlesim パッケージ内の turtlesim_node を起動します:

$ rosrun turtlesim turtlesim_node

turtlesim のウィンドウが表示されます:

Note: あなたの turtle_sim ウィンドウのturtleの表示はこれと違うかもしれませんが,心配ありません.いろいろなタイプのturtleが表示されますよ!

新しいターミナルで次のコマンドを実行すると:

$ rosnode list

このように表示されます:

ROS の強力な特徴の1つとして,コマンドラインから名前を変更することができます.

rosrun turtlesim のウィンドウに戻って,ctrl-C でノードを停止します.そして再度turtlesimを起動しましょう,ただし今回はノードの名前を変えるために,リマップ引数(Remapping Arguments)を使用します.

rosrun turtlesim turtlesim_node __name:=my_turtle

ここで戻って rosnode list をすると:

$ rosnode list

Note: /turtlesim が未だにリストに残っているのであれば, ウインドウを閉じるかわりにctrl-Cを使ってターミナルのノードを止めたか, ネットワークのセットアップ - Single Machine Configurationで説明されている $ROS_HOSTNAME 環境変数の定義が無いことを意味しているかもしれません. 次のコマンドでrosnodeのリストをクリアしてみましょう: $ rosnode cleanup

新しく /my_turtle ノードが見えます.別の rosnode コマンドの ping を使って,/my_turtleノードが起動中かチェックしてみましょう:

$ rosnode ping my_turtle

復習

ここで扱ったコマンドは:

ここでは ROS ノードの働きについて理解しました.次はROS トピックの働きを見てみましょう.また,turtlesim_node は Ctrl-C で自由に停止できます.


2019-10-12 12:41