ROS學習筆記5-理解節點(Node)


本文內容來源於:http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes

  1. 圖(Graph)概念概覽
    • 節點(Nodes):一個節點是ROS下面一個可執行程序,使用ROS與其他節點進行通信。
    • 消息(Messages):將數據訂閱或者發布到主題時使用數據類型結構。
    • 主題(Topics):節點可以發布消息到主題,或者訂閱主題來接收消息,以此實現和其他節點的數據交互。
    • 主機節點(Master):主機節點提供命名服務,以幫助節點找到其他節點。
    • ROS輸出(rosout):在ROS中等價於stdout或者stderr(ROS中的標准輸出)
    • ROS核心(roscore):主機節點+標准輸出+參數服務器。
  2. ROS核心(roscore)
    roscore是使用ros運行的一個命令,需要在其他節點運行之前運行roscore。
    $ roscore
    ... logging to /home/shao/.ros/log/93b4e9f2-d146-11e9-a3fd-69f079ca327f/roslaunch-UAVlab1-13621.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://UAVlab1:40901/
    ros_comm version 1.12.14
    
    
    SUMMARY
    ========
    
    PARAMETERS
     * /rosdistro: kinetic
     * /rosversion: 1.12.14
    
    NODES
    
    auto-starting new master
    process[master]: started with pid [13631]
    ROS_MASTER_URI=http://UAVlab1:11311/
    
    setting /run_id to 93b4e9f2-d146-11e9-a3fd-69f079ca327f
    process[rosout-1]: started with pid [13644]
    started core service [/rosout]
    

    運行成功后如上所示。

  3. rosnode命令
    使用rosnode命令可以查看ros節點相關的信息。例如:rosnode list命令可以列出運行的ros節點。
    新打開一個終端,運行rosnode list,如下:
    $ rosnode list
    /rosout
    

    可以看出,有一個rosout節點,為roscore命令啟動的。
    使用rosnode info命令可以查看ros節點的信息:

    $ rosnode info /rosout
    --------------------------------------------------------------------------------
    Node [/rosout]
    Publications: 
     * /rosout_agg [rosgraph_msgs/Log]
    
    Subscriptions: 
     * /rosout [unknown type]
    
    Services: 
     * /rosout/get_loggers
     * /rosout/set_logger_level
    
    
    contacting node http://UAVlab1:42313/ ...
    Pid: 13644
    

     

  4.  rosrun運行節點

    rosrun命令可以運行ros節點,語法如下:
    $ rosrun [package_name] [node_name]
    

    官網該文檔有問題,正確的應該是:

    rosrun <package> <executable>
    

    即第二個參數為可執行程序名,不一定和節點名一致。
    新打開一個終端,運行:

    $ rosrun turtlesim turtlesim_node
    

     

     

     小龜龜出現嘍。

    然后再用rosnode可以看到:
    $ rosnode list
    /rosout
    /turtlesim
    

    可以看出來多了個turtlesim的節點。
    打開新終端,然后使用參數重映射,可以給節點名重命名。

    $ rosrun turtlesim turtlesim_node __name:=my_turtle
    

     然后運行rosnode list

    $ rosnode list
    /my_turtle
    /rosout
    /turtlesim
    

    可以看出來多了一個節點my_turtle。
    使用rosnode ping命令可以檢查和某節點之間的通信,類似於ping命令。

    $ rosnode ping /my_turtle
    rosnode: node is [/my_turtle]
    pinging /my_turtle with a timeout of 3.0s
    xmlrpc reply from http://UAVlab1:43947/	time=0.296116ms
    xmlrpc reply from http://UAVlab1:43947/	time=0.949144ms
    xmlrpc reply from http://UAVlab1:43947/	time=0.707150ms
    xmlrpc reply from http://UAVlab1:43947/	time=0.704050ms
    xmlrpc reply from http://UAVlab1:43947/	time=1.071930ms
    

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM