ROSを理解するノード(NODE)
3142 ワード
前の学習を経て、ROSのパッケージを構築する方法を知っています.このブログでは、ROSのノードの概念を紹介します.
続行する前にctrl+alt+tを押して端末を開き、次のように入力します.
軽量レベルのシミュレータをインストールし、コマンドの「」を自分のrosバージョンに置き換える必要があります.前のチュートリアルに従えばhydroに置き換えます.
次に、ROSの図に関する概念を見てみましょう.
ノード(NODE):1つのノードは、ROSを使用して他のノードと通信できる実行可能プログラムです.
メッセージ(Message):あるトピックで、パブリッシュまたはサブスクリプションするときに使用されるROSのデータ型.
トピック(Topic):ノードは1つのトピックでメッセージを公開することができ、同じように1つのトピックを購読してメッセージを受信することもできます.
ホスト(Master):ROSの名前サーバーです.
ROSのクライアントライブラリは、異なるプログラミング言語で記述されたノード間の相互通信を可能にする.
roscoreはrosを使用する前に最初に実行すべきプログラムです.端末でroscoreを実行するには:
rosnodeコマンドは、実行中のrosのノードの情報を表示します.次のコマンドは、アクティブなrosノードをリストし、新しい端末入力を開きます.
次のようになります.
これは、現在1つのノードrosoutのみが実行されていることを示しています.
次のコマンドは、アクティブなノードの情報を返します.
rosrunでは、パッケージ内のノードを直接実行できます.使用方法は次のとおりです.
端末に入力:
スクリーンにカメが現れたのが見えます.このコマンドの役割はturtlesimパッケージの下にあるturtlesimを実行することです.Nodeノードは、このコマンドを複数回実行すると異なる亀が見えるかもしれませんが、これはサプライズではありません.
新しい端末を開き、次のように入力します.
実行したばかりのノードがリストに表示されます.
また、コマンドラインの下で実行するノードに直接名前を指定し、開いたばかりのカメを閉じることもできます.Close the turtlesim window to stop the node (or go back to the rosrun turtlesim terminal and use ctrl-C).先ほどのノード入力を再実行します.
実行中のノードを再度確認します.
表示される結果:
このときに/turtlesimというノードが表示される場合は、ウィンドウを閉じるのではなくterminalでctrl+cで閉じている可能性があります.環境変数$ROS_かもしれませんHOSTNAMEの構成が正しくありません.
次は別のrosnodeのコマンドを学びます:ping
次の結果が返されます.
上のこの命令が実行されると、ネットワークのpingと同じです.つまり、私たちのクライアントはこのnodeと通信することができますが、彼らの通信方式はxmlrpcを利用しています.
まとめ:
このセクションで学んだ基本はrosnodeの関連概念と対応するコマンドラインツールです.roscore,rosnode,rosrun
続行する前にctrl+alt+tを押して端末を開き、次のように入力します.
sudo apt-get install ros-<distro>-ros-tutorials
軽量レベルのシミュレータをインストールし、コマンドの「
次に、ROSの図に関する概念を見てみましょう.
ノード(NODE):1つのノードは、ROSを使用して他のノードと通信できる実行可能プログラムです.
メッセージ(Message):あるトピックで、パブリッシュまたはサブスクリプションするときに使用されるROSのデータ型.
トピック(Topic):ノードは1つのトピックでメッセージを公開することができ、同じように1つのトピックを購読してメッセージを受信することもできます.
ホスト(Master):ROSの名前サーバーです.
ROSのクライアントライブラリは、異なるプログラミング言語で記述されたノード間の相互通信を可能にする.
roscoreはrosを使用する前に最初に実行すべきプログラムです.端末でroscoreを実行するには:
roscore
rosnodeコマンドは、実行中のrosのノードの情報を表示します.次のコマンドは、アクティブなrosノードをリストし、新しい端末入力を開きます.
rosnode list
次のようになります.
/rosout
これは、現在1つのノードrosoutのみが実行されていることを示しています.
次のコマンドは、アクティブなノードの情報を返します.
rosnode info /rosout
rosrunでは、パッケージ内のノードを直接実行できます.使用方法は次のとおりです.
rosrun [package_name] [node_name]
端末に入力:
rosrun turtlesim turtlesim_node
スクリーンにカメが現れたのが見えます.このコマンドの役割はturtlesimパッケージの下にあるturtlesimを実行することです.Nodeノードは、このコマンドを複数回実行すると異なる亀が見えるかもしれませんが、これはサプライズではありません.
新しい端末を開き、次のように入力します.
rosnode list
実行したばかりのノードがリストに表示されます.
また、コマンドラインの下で実行するノードに直接名前を指定し、開いたばかりのカメを閉じることもできます.Close the turtlesim window to stop the node (or go back to the rosrun turtlesim terminal and use ctrl-C).先ほどのノード入力を再実行します.
$ rosrun turtlesim turtlesim_node __name:=my_turtle
実行中のノードを再度確認します.
rosnode list
表示される結果:
/rosout
/my_turtle
このときに/turtlesimというノードが表示される場合は、ウィンドウを閉じるのではなくterminalでctrl+cで閉じている可能性があります.環境変数$ROS_かもしれませんHOSTNAMEの構成が正しくありません.
次は別のrosnodeのコマンドを学びます:ping
$ rosnode ping my_turtle
次の結果が返されます.
rosnode: node is [/my_turtle]
pinging /my_turtle with a timeout of 3.0s
xmlrpc reply from http://aqy:42235/ time=1.152992ms
xmlrpc reply from http://aqy:42235/ time=1.120090ms
xmlrpc reply from http://aqy:42235/ time=1.700878ms
xmlrpc reply from http://aqy:42235/ time=1.127958ms
上のこの命令が実行されると、ネットワークのpingと同じです.つまり、私たちのクライアントはこのnodeと通信することができますが、彼らの通信方式はxmlrpcを利用しています.
まとめ:
このセクションで学んだ基本はrosnodeの関連概念と対応するコマンドラインツールです.roscore,rosnode,rosrun