ROS学習ノート4:ROSノードの理解


ROS学習ノート4:ROSノードの理解
このセクションでは、ROSグラフィックの概念について説明し、ROSコマンドラインツールroscore、rosnode、rosrunについて説明します.
要求
Linuxシステムに学習用のrosパッケージの例をインストールする必要があります.
sudo apt-get install ros-indigo-ros-tutorials

ROSグラフィック概念の概要
  • nodes:1つのノードはROSを介して他のノードと通信することができる.
  • messages:topicをサブスクリプションまたはパブリッシュするときに使用されるデータ型.
  • topics:ノードはtopicsまたはtopicsから情報を購読することができる.
  • master:ROSのnameサービスは、例えば、異なるノードが互いに見つけることができるようにする.
  • rosout:ROSのstdout/stderrに等価;
  • roscore:master+rosout+parameter service.

  • ノード
    1つのノードはROSパッケージの1つの実行可能ファイルにすぎず、ROSノードはクライアントライブラリ関数を使用して他のノードと通信し、ノードはtopicから情報を購読したり、topicにメッセージを送信したりすることができ、同時にノードも使用したり、サービスを提供したりすることができる.
    クライアントライブラリ関数
    ROSクライアントライブラリ関数では、異なるプログラミング言語を使用してプログラミング通信を行うことができます.
  • rospy:Python client library
  • roscpp:C++ client library

  • roscore
    roscoreは、ROSを使用するときに最初にすべきことです.
    roscore &

    出力される次の情報が表示されます.
    [1] 4080
    mountzf@ubuntu:~/ros_tutorial$ ... logging to /home/mountzf/.ros/log/0491d61a-69eb-11e6-93e8-000c29521e21/roslaunch-ubuntu-4080.log
    Checking log directory for disk usage. This may take awhile.
    Press Ctrl-C to interrupt
    Done checking log file disk usage. Usage is <1GB.
    
    started roslaunch server http://ubuntu:32777/
    ros_comm version 1.11.20
    
    
    SUMMARY
    ========
    
    PARAMETERS
     * /rosdistro: indigo
     * /rosversion: 1.11.20
    
    NODES
    
    auto-starting new master
    process[master]: started with pid [4092]
    ROS_MASTER_URI=http://ubuntu:11311/
    
    setting /run_id to 0491d61a-69eb-11e6-93e8-000c29521e21
    process[rosout-1]: started with pid [4105]
    started core service [/rosout]

    rosnodeの使用
    新しいターミナルウィンドウを開き、roscoreを実行した後に何が起こるかを確認します.rosnodeには、現在実行中のROSノードの情報が表示されます.rosnode listコマンドには、実行中のノード名がリストされます.
    rosnode list
    /rosout

    これは、システム内で1つのノードrosoutのみが実行され、ノードのデバッグ出力が常に実行され、収集され、記録されることを示しています.コマンドrosnode infoは、特定のノードのノード情報を返す.
    rosnode info /rosout

    これは、ノードrosoutのいくつかの情報を返します.
    Node [/rosout]
    Publications: 
     * /rosout_agg [rosgraph_msgs/Log]
    
    Subscriptions: 
     * /rosout [unknown type]
    
    Services: 
     * /rosout/set_logger_level
     * /rosout/get_loggers
    
    
    contacting node http://ubuntu:35108/ ...
    Pid: 4105

    rosrunの使用
    rosrunコマンドを使用すると、パッケージ名でパッケージ内のノードを直接実行できます(パッケージの場所を知る必要はありませんが、ROSの検索ディレクトリの範囲内でなければなりません).使用方法:
    rosrun [package_name] [node_name]

    パッケージturtlesimのturtlesimを実行できますNodeノード:
    rosrun turtlesim turtlesim_node

    新しいウィンドウで
    rosnode list
    /rosout
    /turtlesim

    ROSの特徴の1つは、コマンドラインに名前を再割り当てできることです.
    rosrun turtlesim turtlesim_node __name:=my_turtlesim
    rosnode list
    /my_turtlesim
    /rosout

    上記のように、ノード名をmy_に変更しました.turtlesim、次は別のrosnodeコマンドラインコマンドrosnode pingを使用します.
    rosnode ping /my_turtlesim
    rosnode: node is [/my_turtlesim]
    pinging /my_turtlesim with a timeout of 3.0s
    xmlrpc reply from http://ubuntu:33201/  time=0.409842ms
    xmlrpc reply from http://ubuntu:33201/  time=1.335144ms
    xmlrpc reply from http://ubuntu:33201/  time=1.242876ms
    xmlrpc reply from http://ubuntu:33201/  time=1.311064ms
    xmlrpc reply from http://ubuntu:33201/  time=1.254082ms

    まとめ
  • roscore=ros+core,master(ROSに名前サービスを提供)+rosout(stdout/stderr)+parameter server.ROSを使用するときの最初のことはroscoreを実行してこれらのサービスを起動することです.
  • rosnode=ros+node、ROSノード情報と操作ノードを取得するためのツール;
  • rosrun=ros+runは、所与のパッケージ内のノードを実行するために使用されます.

  • 2016年8月24日ハルビン